Variables reference
The Variables panel in the template you have open is the authoritative list of what that document can print. This page explains how to read it, and covers the behaviours that apply across every document type.
For the fields available on a particular type, see that type's own reference — the list is on the PDF Template Builder overview.
Reading an entry
Hover an entry and you get three things: the exact text that will be inserted, a plain-English description of what it prints, and a sample value so you know what to expect.
The small grey pill on the right says what kind of thing it is:
| Pill | Meaning |
|---|---|
| text | A plain value — a name, a number, a date. |
| html | A ready-made block such as a formatted address or a logo. These use three braces. |
| bool | A yes/no switch you can show or hide content with. |
| loop | A repeating group — one block printed per line. |
| if | A destination condition, matching a country or state code. |
The automatic line-items table
Drop the plain items placeholder onto a line of its own — instead of writing your own repeating block — and SKU.io builds a complete, ready-styled table for you, matched to the document type:
| Document type | Columns |
|---|---|
| Invoice, Quote, Purchase Order, Vendor Credit, Sales Credit | Quantity · Item · Item Description · Price · Total |
| Packing Slip | Product image · Description · Part number · SKU · Sizing note · Serials · a boxed quantity |
| Pick List | SKU · Qty · tick-box checklist |
Use the shorthand when you want the standard table, and the loop form when you want to design the rows yourself. If a template contains both, your loop wins and the shorthand is dropped.
There's an equivalent automatic table for non-product charges — Description · Quantity · Amount · Total. It prints nothing at all when there are no charges, so it's safe to include without wrapping it in a show/hide block.
Printing your own custom fields
Custom fields you've defined for orders and purchase orders appear under Custom Fields in the panel and can be dropped anywhere on those two document types.
- A tick-box field prints Yes or No.
- A field with no value on that record prints nothing.
- Archived fields drop out of the list.
- In the preview they show a generic placeholder rather than real data.
Sales Order and Purchase Order are the only types where custom fields are actually populated. Packing slips, pick lists, quotes and both credit notes don't support them — even though a packing slip is built from the same order as the invoice.
Define the fields under Settings → Custom Fields → Orders or → Purchase Orders.
Templates from before this builder
Templates created before this builder existed keep working.
The first time you open one, its old-style placeholders are converted to the current ones automatically. The conversion is recorded in History with a Migration tag, so you can see exactly when it happened and go back if you need to.
The short, ungrouped names those older templates used also still print correctly — the bare subtotal and total, the logo, the store name, the customer or supplier address, the shipping method, and the PO or credit number. Each maps onto the same value as its modern grouped equivalent. Old shorthand for the items table and the totals block is still understood too, and still expands into the standard table.
Use the names shown in the Variables panel for new work. Only those cover the newer fields, and only those appear in the picker and the tooltips.
Next steps
- Template editor reference — the validation messages you get when a name doesn't exist.
- Edit a template — inserting fields and building repeating blocks.
- How PDF templates work — two braces versus three, and what happens to a blank value.