Skip to content
Log in

POS printer templates

On this page

POS printer templates define what is printed on receipts and labels at the point of sale. Templates are created in Salesforce and then selected from within the POS hardware settings.

StoreConnect supports three printer template types:

Type Used for
Receipt Transaction receipts, layby dockets
Label Product labels, barcode labels
Document PDF documents generated via jsPDF Liquid tags

Templates also have a context that determines when they can be selected. Most templates have the product context. Cart templates are a special context described below.

Create a printer template

Templates are created in Salesforce on the Store record.

  1. Open your store in StoreConnect.
  2. Go to the Additional Relationships tab.
  3. In the Store Printable Templates section, select New or open an existing template.
  4. Complete the template fields:
    • Name — a descriptive name you will recognize in the POS template selector
    • Printer Type — select Receipt or Label
    • Type — select Product for most templates
    • Template — enter the template code using Liquid and print markup
  5. Select Save.

For a full receipt template example with code explanations, see Create or update a POS receipt template.

Template syntax

Templates use a combination of Liquid (for dynamic data) and print markup tags (for layout and formatting).

Print markup tags control layout:

Tag Description
{document} Opens the document with optional settings (e.g. word-wrap=true)
{center} / {left} Text alignment
{bold} / {endBold} Bold text
{line} Blank line
{rule} Horizontal rule
{table cols=N ...} Multi-column table layout
{image src="..." size=N} Image (e.g. outlet logo)
{qrcode data="..."} QR code

Liquid variables provide transaction data. Common examples:

liquid {{ current_order.total | money }} {{ current_order.contact.name }} {{ outlet.name }} {% for item in current_order.items %} {{ item.product.name }} x{{ item.quantity }} {% endfor %}

Select a template in the POS

Once a template exists in Salesforce, select it from within the POS:

  1. In the POS, go to Settings > Hardware.
  2. Select the printer type (Receipt or Label).
  3. Choose the template from the list. A green tick confirms it is selected.
  4. Select Test print to verify the output before starting a shift.

See POS hardware setup for the full hardware configuration walkthrough.

Cart templates

Cart templates let you print the contents of the current cart before an order is placed — for example, to produce a quote or cart summary for a customer.

To use cart templates: 1. Create a printer template in Salesforce with the context set to Cart (instead of Product). 2. In the POS, go to Settings > Printer Templates and select the template under Cart template. 3. Add a print:cart action to a POS layout button to allow staff to print at any time.

Liquid context for cart templates

Cart templates receive the root variable current_cart:

Variable Description
{{ current_cart.id }} Cart token
{{ current_cart.total }} Calculated cart total
{{ current_cart.item_count }} Total quantity across all items
{{ current_cart.contact.name }} Assigned customer name (if any)
{{ current_cart.items }} Collection of cart items
{{ item.name }} Item name (in a {% for item in current_cart.items %} loop)
{{ item.quantity }} Item quantity
{{ item.data.s_c__unit_price__c }} Item unit price (raw field via item.data.*)

:::note Cart templates use the same printer type (Receipt, Label, or Document) as other templates. The print:cart action routes to whichever printer type the selected template specifies. :::

Label templates

Label templates follow the same structure as receipt templates but are assigned Printer Type: Label. Labels are typically used for product or barcode printing.

Label printing can also be triggered by a POS layout action button, allowing staff to print a label directly from a record in a custom layout. See POS customization and design for layout action configuration.

Document templates (PDF)

Document templates generate PDFs using jsPDF. Instead of print markup tags, document templates use a set of Liquid tags that map directly to jsPDF methods. All document tags must be wrapped in a {% pdf %}...{% endpdf %} block.

Structure

liquid {% pdf orientation: "portrait", unit: "mm", format: "a4" %} {% set_font "helvetica", "normal" %} {% set_font_size 12 %} {% text "Hello, world!", 20, 20 %} {% endpdf %}

The {% pdf %} tag accepts any jsPDF constructor options as keyword arguments (orientation, unit, format). Only one {% pdf %} block is allowed per template.

Available tags

All tags take arguments that match the corresponding jsPDF method signature.

Text

Tag jsPDF method
{% text %} text()
{% text_with_link %} textWithLink()
{% set_font %} setFont()
{% set_font_size %} setFontSize()
{% set_text_color %} setTextColor()
{% split_text_to_size %} splitTextToSize()

Drawing

Tag jsPDF method
{% circle %} circle()
{% ellipse %} ellipse()
{% line %} line()
{% lines %} lines()
{% rect %} rect()
{% rounded_rect %} roundedRect()
{% triangle %} triangle()

Color and style

Tag jsPDF method
{% set_draw_color %} setDrawColor()
{% set_fill_color %} setFillColor()
{% set_line_width %} setLineWidth()
{% set_line_cap %} setLineCap()
{% set_line_dash %} setLineDash()
{% set_line_dash_pattern %} setLineDashPattern()
{% set_line_join %} setLineJoin()
{% stroke %} stroke()
{% fill %} fill()
{% fill_stroke %} fillStroke()
{% fill_even_odd %} fillEvenOdd()

Page

Tag jsPDF method
{% add_page %} addPage()
{% delete_page %} deletePage()
{% set_page %} setPage()
{% move_page %} movePage()

Image

Tag jsPDF method
{% add_image %} addImage()
{% add_svg_as_image %} addSvgAsImage()

Path

Tag jsPDF method
{% path %} path()
{% move_to %} moveTo()
{% line_to %} lineTo()
{% curve_to %} curveTo()
{% clip %} clip()
{% clip_even_odd %} clipEvenOdd()
{% discard_path %} discardPath()

State

Tag jsPDF method
{% save_graphics_state %} saveGraphicsState()
{% restore_graphics_state %} restoreGraphicsState()
{% scale %} scale()
{% set_current_transformation_matrix %} setCurrentTransformationMatrix()

Link and annotation

Tag jsPDF method
{% link %} link()
{% create_annotation %} createAnnotation()

Document properties

Tag jsPDF method
{% set_properties %} setProperties()
{% set_document_properties %} setDocumentProperties()
{% pdf_comment %} comment()

Quest Airpay TAP receipts

Quest Airpay TAP payment receipts can be printed using the print:quest_receipt action with the order_sc_id parameter. This action prints the receipt data returned by the Quest terminal and does not use a configurable template.

To customize Quest payment output on a receipt, use a standard print:receipt action with a custom template and access the Quest receipt data via payment.gateway_receipt:

liquid {% for payment in order.payments %} {% if payment.gateway_receipt %} {{ payment.gateway_receipt }} {% endif %} {% endfor %}

:::note Printer template changes made in Salesforce are reflected in the POS the next time the template list is loaded in hardware settings. No POS restart is required. :::

Was this article helpful?

Was this article helpful?