Data fields & formatting
The one idea that makes the software worth using: design a label once, and it fills itself in differently for every product.
The basic idea
Anywhere you can type text, a column name in square brackets is replaced with that product's value. Everything outside the brackets prints exactly as written.
[Product Name] → Neon Tetra 3cm
SKU: [SKU] → SKU: AQ-0142
$[Price] → $12.95
[Brand] · [Category] → AquaWorld · Freshwater Fish
Column names match your spreadsheet headings. Capitalisation and stray spaces do not
matter — [price], [Price] and [ PRICE ] all find
the same column.
[Sale Price] produces an empty space rather than
an error on the label.
Formatting filters
A vertical bar after the column name applies a filter. This is what turns raw spreadsheet data into something that belongs on a price ticket.
[Price] → 4.5 ← raw, and wrong for a shelf
[Price|money] → $4.50 ← what you actually want
|money. The filter
supplies its own, so $[Price|money] prints $$4.50. Either use
[Price|money] on its own, or use $[Price|number] where you
provide the symbol yourself.
Filters can be chained, applying left to right:
[Product Name|upper|truncate:20] → NEON TETRA 3CM
Money and numbers
| Filter | What it does |
|---|---|
|money | Formats as currency. 4.5 becomes $4.50. Add arguments to change the symbol or decimals: |money:€ or |money:$:0 for whole dollars. |
|number | The number with decimals but no currency symbol. Use when the $ is a separate design element. |
|dollars | Whole dollars only — 12.95 becomes 12. |
|cents | Cents only, always two digits — 12.95 becomes 95, and 12.50 becomes 50 rather than 5. |
|unitprice:1:kg | Price per unit — $12.50 per kg. Required on many grocery lines. |
|saving:[Sale Price] | The percentage saved between two prices. Prints nothing if there is no genuine saving. |
[Price|dollars] and [Price|cents]
as two separate elements, so you can size them independently. Every price template in the
library is built this way.
Text
| Filter | What it does |
|---|---|
|upper | UPPERCASE. |
|lower | lowercase. |
|title | Title Case. |
|truncate:20 | Shortens long text and adds an ellipsis. The number is the character limit. |
|trim | Removes surrounding spaces. Useful when a spreadsheet has been edited by hand. |
|pad:6 | Pads with leading zeros — 42 becomes 000042. Batch and lot numbers usually want this. |
|prefix:Ref | Adds text before the value, but only if there is a value. |
|suffix: ea | Adds text after the value, but only if there is a value. |
|default:N/A | Substitutes a fallback when the column is empty, so a label never prints a blank gap. |
Dates
| Filter | What it does |
|---|---|
|date | Formats a date, day-first by default: 25/12/2026. |
|date:dd mmm yyyy | A named month: 25 Dec 2026. |
|date:mmm yyyy | Month and year only — the usual form for a medicine expiry. |
Use dd, mm, mmm and yyyy in any
arrangement.
Filters that reference another column
A filter's argument can itself be a column, written in square brackets. This is how the saving calculation works:
[Price|saving:[Sale Price]] → 23%
It reads the regular price, compares it to the sale price, and prints the percentage difference. If either is missing, or the "sale" price is higher, it prints nothing rather than a nonsense figure.
Conditional elements
Some things should only appear on some products. A "SAVE 20%" starburst on a label for a product that is not discounted is worse than useless — it is misleading.
Select the element, then in Properties → Show only when… choose a column and a test.
The tests available
| Test | When it matches |
|---|---|
| is not empty | The most common by far. Show this element only when the column has a value. |
| is empty | The reverse. Useful for a "RRP" label that only shows when there is no special. |
| equals / does not equal | Exact match, ignoring capitalisation. |
| contains | The column includes this text anywhere. |
| is greater than / is less than | Numeric comparison. Currency symbols are stripped first, so $5.00 compares correctly against 10. |
A worked example
Building a price tag that adapts to whether a product is on special:
- Add a text element reading
WAS $[Price|number], strike it through, and set it to show only when Sale Price is not empty - Add the main price using
[Sale Price|dollars]and[Sale Price|cents] - Add a star with
SAVE [Price|saving:[Sale Price]], also conditional on Sale Price is not empty
Products with a sale price get the full treatment. Products without one print a clean label with no empty badge and no crossed-out phantom price — from a single design and a single print run.
The Price Tag with Sale Flash and A6 Two Prices templates are both built exactly this way, if you would rather start from one.
Which columns are available
The standard set the import wizard recognises:
[Product Name] [SKU] [Barcode] [Price]
[Sale Price] [Category] [Brand] [Supplier]
[Stock] [Weight (g)] [Description] [Unit]
[Expiry Date] [Batch Number]
Your own columns work too
Any column the wizard did not recognise is still stored. A spreadsheet column headed
Tank Size becomes [Tank Size] in the designer. Nothing is discarded
just because it was not on our list.
Seeing it work
The Preview data toggle in the toolbar switches between showing the field names and showing real values from the first product you have queued.
Turn it on to check that a long product name actually fits. Turn it off when you need to see which field an element is bound to. The status bar always lists every field the design uses, whichever way the toggle is set.