How Shelf Label Templates Work
Access requirements. You need view access to "Settings" to see templates and edit access to create, change, or set a default template.
A template is a block of label code. Back Office printers use a label language called ZPL. Each template below is ready to copy and paste. You don't need to know ZPL to use them.
Placeholders fill in at print time. Anything in the code that looks like %{price} or %{product_name} is replaced with that item's details when the label prints. If an item doesn't have a value for a field, that spot prints blank.
The label size has to match your label stock. Most templates are built for 2.3″ × 1.3″ labels. Back Office can't tell what size labels are loaded in your printer, so a mismatch just prints wrong.
Editing a template changes every label printed from it afterward, including reprints of labels you printed before.
Important: Never leave sample text in the code, like a made-up barcode such as 123456789012 or a size like "750ML." Every label would print it.
Choosing a Template
If you want… | Use | Also works |
Name, size, price, and barcode | T7 | T1 (price on top), T8 (centered) |
Card and cash prices (dual pricing) | T5 | T2 (compact), T4 (no barcode), T6 (store name) |
No barcode | T4 | T11, or remove the barcode from T9–T13 |
Long product names | T7 | T8, or any of T9–T13 (all wrap to 2 lines) |
A short name that fits | T9 |
|
SKU or item number | T7 | T9, T13 |
Distributor and distributor item number for reordering | T10 |
|
Sale or special tags | T11 |
|
Wine details like brand, vintage, and varietal | T12 |
|
Pack size, like 6-pack or 12-pack | T13 |
|
Your store's name on the label | T6 |
|
Something else | Build your own (see "Building Your Own Template") |
|
Adding a Template in Back Office
Step 1
Click "Stock management" in the left-hand menu, then click "Shelf label templates."
Step 2
Click "New template."
Step 3
Give the template a name that's easy to find later, like "T7 Big Price with SKU."
Step 4
Under "Label size (inches)," set the "Width" and "Height" to match your label stock. For most templates, that's 2.3 by 1.3.
Step 5
Copy the template's code from "^XA" through "^XZ" and paste it into "ZPL code."
Step 6
Click "Update preview" and check the label. Make any quick edits (see "Making Quick Edits").
Step 7
Click "Save."
Step 8
To use it for all your labels, select it in the list and choose "Set as default."
Note: Before you save, preview with one of your longest product names. Names that need more than 2 lines print on top of each other. If that happens, switch to T9, which uses the shorter name.
Making Quick Edits
Most changes are a small edit to a template. Paste the template into "ZPL code," make the change, and click "Update preview."
To… | Do this |
Put your store's name on T6 | Find "MAR'S Liquors" in the code and type your store's name |
Use a shorter name | Replace %{product_name} with %{short_name}, or with %{display_name} for name plus size |
Change the card and cash wording | Replace "CARD" and "CASH" (or "Card" and "Cash") with your own wording, like "Card Price" and "Cash Discount" |
Show a different detail | Replace a placeholder with another one, for example %{sku} with %{shelf_location} or %{msrp} |
Remove something from T9–T13 | Delete its "^FX --" line and the lines under it, down to the next "^FX" line |
Remove the barcode from T9–T13 | Delete the BARCODE block. Everything else stays where it is |
Add or remove the $ sign | Add or delete the $ right before %{price}, %{credit_price}, or %{sale_price} |
Change the SALE banner on T11 | Replace "SALE" with another short word, like "SPECIAL" or "CLOSEOUT" |
Fit 2.25″ × 1.25″ labels | Change ^PW467 to ^PW457 and ^LL264 to ^LL254, and set the size in Back Office to match |
Make text bigger or smaller | In ^A0N,34,0, the middle number is the text height. Change it in small steps, like 34 to 38 |
Placeholders You Can Use
Put a $ in front of a price placeholder, like $%{price}, to print the dollar sign. Check the spelling carefully, since a misspelled placeholder prints blank. The full list is under "Available placeholders" below the "ZPL code" box in Back Office.
Type | Placeholders |
Name | %{product_name} (full name), %{display_name} (name and size), %{short_name} (abbreviated name) |
Size and pack | %{variant_name} (size, like 750ml), %{package_type} (pack, like 12-pack), %{container_type} (bottle, can) |
Price | %{price} (regular or cash price), %{credit_price} (card price), %{sale_price} (only during an active sale), %{msrp} (suggested retail) |
IDs and location | %{barcode} (UPC), %{sku}, %{shelf_location}, %{bin} |
Distributor | %{distributor_name}, %{distributor_item_id}, %{supplier} |
Product details | %{brand}, %{style}, %{sub_style}, %{varietal}, %{vintage}, %{region}, %{country}, %{abv}, %{aged} |
Building Your Own Template
T9 through T13 all share the same layout, so you can swap pieces between them. Start with the base label below, then replace or add blocks. Keep everything between ^XA and ^XZ.
Base label (name, size, price, barcode)
^XA
^PW467
^LL264
^CI28
^MD30
^PR3
^FX -- NAME: product name, wraps to 2 lines --
^FO20,14^A0N,34,0^FB427,2,2,L,0^FD%{product_name}^FS
^FX -- ROW 1: size --
^FO20,92^A0N,26,0^FB176,1,0,L,0^FD%{variant_name}^FS
^FX -- PRICE: one big price, right side --
^FO200,88^A0N,80,0^FB247,1,0,R,0^FD$%{price}^FS
^FX -- BARCODE: bars + digits, bottom --
^FO20,188^BY2,3,38^BCN,38,Y,N,N^FD%{barcode}^FS
^XZ
Blocks you can swap in
To replace a block, delete the matching "^FX --" block in the base and paste the new one in its place. To add a row, paste it before ^XZ.
Name with size (replaces NAME):
^FX -- NAME: short name with size, wraps to 2 lines --
^FO20,14^A0N,34,0^FB427,2,2,L,0^FD%{display_name}^FS
SKU instead of size (replaces ROW 1):
^FX -- ROW 1: SKU --
^FO20,92^A0N,26,0^FB176,1,0,L,0^FD%{sku}^FS
Distributor (adds ROW 2):
^FX -- ROW 2: distributor --
^FO20,122^A0N,22,0^FB176,1,0,L,0^FD%{distributor_name}^FS
Pack size in larger text (adds ROW 2):
^FX -- ROW 2: pack / package type --
^FO20,122^A0N,30,0^FB176,1,0,L,0^FD%{package_type}^FS
Distributor item number (adds ROW 3):
^FX -- ROW 3: distributor item # --
^FO20,150^A0N,22,0^FB176,1,0,L,0^FD#%{distributor_item_id}^FS
SKU (adds ROW 3):
^FX -- ROW 3: SKU --
^FO20,154^A0N,20,0^FB176,1,0,L,0^FD%{sku}^FS
Card and cash prices (replaces PRICE and uses the space for rows 2 and 3, so keep only ROW 1):
^FX -- PRICE: Card / Cash pair (replaces PRICE and ROWS 2-3) --
^FO20,120^A0N,20,0^FDCARD^FS
^FO20,140^A0N,44,0^FB200,1,0,L,0^FD$%{credit_price}^FS
^FO227,120^A0N,20,0^FB220,1,0,R,0^FDCASH^FS
^FO227,140^A0N,44,0^FB220,1,0,R,0^FD$%{price}^FS
The Templates
All templates are 2.3″ × 1.3″ unless noted. Copy everything from ^XA to ^XZ.
T1 Price on Top
A big price at the top, name and size below, and a full barcode at the bottom. Long names don't wrap and can run off the edge, so use T7 or T8 for long names.
^XA^PW467^LL264
^FX Price – large font, top of label
^FO36,25
^A0N,75,70
^FD$%{price}
^FS
^FX Product name – medium font, below price
^FO36,90
^A0N,45,25
^FD%{product_name}
^FS
^FX Size – smaller font, below product name
^FO36,133
^A0N,35,25
^FD%{variant_name}
^FS
^FX Barcode – bottom of label, medium height
^FO36,175
^BY2,50
^BCN,55,Y,N,N
^FD%{barcode}
^FS
^XZ
T2 Card / Cash Split
Name at the top, card and cash prices side by side, and a full barcode at the bottom. Prices print without a $ sign. Add $ before %{credit_price} and %{price} if you want one.
^XA
^PW467
^LL264
^FO35,30
^A0N,25,0
^FD%{product_name}
^FS
^FO33,68
^A0N,18,0
^FDCard
^FS
^FO33,88
^A0N,58,0
^FD%{credit_price}
^FS
^FO259,68
^A0N,18,0
^FDCash
^FS
^FO259,88
^A0N,70,0
^FD%{price}
^FS
^FO60,175
^BY2,3,45
^BCN,45,Y,N,N
^FD%{barcode}
^FS
^XZ
T3 Big Price with SKU (Wide)
The same layout as T7, built for wide 2.96″ × 1.48″ label stock. That's wider than a standard 2.3″ label printer can print, so use T7 for standard labels.
^XA
^CI28
^PW600
^LL300
^FO20,20
^A0N,40,40
^FB560,2,0,L,0
^FD%{product_name}
^FS
^FO20,100
^A0N,28,28
^FD%{variant_name}
^FS
^FO20,140
^A0N,24,24
^FD%{sku}
^FS
^FO200,80
^A0N,80,80
^FD$%{price}
^FS
^FO20,190
^BY2,3,50
^BCN,50,N,N,N
^FD%{barcode}
^FS
^XZ
T4 Card / Cash, No Barcode
Name and size at the top, with card and cash prices across the bottom. This one is 2.5″ × 1.3″, so set the label size in Back Office to match your stock.
^XA
^PW508
^LL264
^MD30
^PR3
^CI28
^FO30,45
^A0N,38,38
^FD%{product_name}
^FS
^FO30,100
^A0N,28,28
^FD%{variant_name}
^FS
^FO30,155
^A0N,18,18
^FDCARD
^FS
^FO240,155
^A0N,18,18
^FDCASH
^FS
^FO30,185
^A0N,55,55
^FD$%{credit_price}
^FS
^FO240,185
^A0N,55,55
^FD$%{price}
^FS
^XZ
T5 Card / Cash with Size
Name and size at the top, card and cash prices in the middle, and a full barcode at the bottom. Prices print without a $ sign. Add $ before %{credit_price} and %{price} if you want one.
^XA
^PW467
^LL264
^FO35,30
^A0N,30,0
^FD%{product_name}
^FS
^FO35,60
^A0N,18,20
^FD%{variant_name}
^FS
^FO33,90
^A0N,18,0
^FDCard
^FS
^FO33,110
^A0N,50,0
^FD%{credit_price}
^FS
^FO259,80
^A0N,18,0
^FDCash
^FS
^FO259,100
^A0N,65,0
^FD%{price}
^FS
^FO60,175
^BY2,3,45
^BCN,45,Y,N,N
^FD%{barcode}
^FS
^XZ
T6 Store Name Header
Your store's name and the product name centered at the top, a barcode in the middle, and card and cash prices at the bottom. Replace "MAR'S Liquors" with your store's name.
^XA
^PW467
^LL264
^FO0,15
^A0N,26,26
^FB467,1,0,C,0
^FDMAR'S Liquors
^FS
^FO0,50
^A0N,32,32
^FB467,1,0,C,0
^FD%{product_name}
^FS
^FO70,100
^BY2,3,45
^BCN,45,Y,N,N
^FD%{barcode}
^FS
^FO25,175
^A0N,22,22
^FDCard
^FS
^FO25,198
^A0N,50,50
^FD$%{credit_price}
^FS
^FO255,175
^A0N,22,22
^FDCash
^FS
^FO255,198
^A0N,50,50
^FD$%{price}
^FS
^XZ
T7 Big Price with SKU
The everyday label. The name wraps to two lines, size and SKU sit on the left, a big price on the right, and a barcode with its digits at the bottom.
^XA^PW467
^LL264
^CI28
^FX -- Product name: left, wraps up to 2 lines --
^A0N,32,0
^FO12,20
^FB443,2,0,L,0
^FD%{product_name}
^FS
^FX -- Size: left, under the name --
^A0N,24,0
^FO12,88
^FD%{variant_name}
^FS
^FX -- Item/SKU number: left, beside the price --
^A0N,28,0
^FO12,145
^FD%{sku}
^FS
^FX -- Price: large, right-aligned --
^A0N,84,0
^FO120,114
^FB335,1,0,R,0
^FD$%{price}
^FS
^FX -- Barcode: wide, bottom left (bars only) --
^FO30,204
^BY2,3,24
^BCN,24,N,N,N
^FD%{barcode}
^FS
^FX -- Barcode digits, centered under the bars --
^A0N,20,0
^FO30,231
^FB202,1,0,C,0
^FD%{barcode}
^FS
^XZ
T8 Centered
Everything centered: the name (wraps to two lines), size, price, and a small barcode with digits.
^XA
^PW467
^LL264
^CI28
^FX -- Product name: centered, wraps up to 2 lines --
^A0N,38,0
^FO10,22
^FB447,2,0,C,0
^FD%{product_name}
^FS
^FX -- Size --
^A0N,28,0
^FO0,90
^FB467,1,0,C,0
^FD%{variant_name}
^FS
^FX -- Price --
^A0N,66,0
^FO0,120
^FB467,1,0,C,0
^FD$%{price}
^FS
^FX -- Barcode (bars only) --
^FO150,200
^BY1,3,25
^BCN,25,N,N,N
^FD%{barcode}
^FS
^FX -- Barcode digits, larger --
^A0N,22,0
^FO0,228
^FB467,1,0,C,0
^FD%{barcode}
^FS
^XZ
T9 Short Name
The item's display name, which already includes the size, plus SKU, a big price, and a full barcode. Swap in %{short_name} for an abbreviated name.
^XA
^PW467
^LL264
^CI28
^MD30
^PR3
^FX -- NAME: short name with size, wraps to 2 lines --
^FO20,14
^A0N,34,0
^FB427,2,2,L,0
^FD%{display_name}
^FS
^FX -- ROW 1: SKU --
^FO20,92
^A0N,26,0
^FB176,1,0,L,0
^FD%{sku}
^FS
^FX -- PRICE: one big price, right side --
^FO200,88
^A0N,80,0
^FB247,1,0,R,0
^FD$%{price}
^FS
^FX -- BARCODE: bars + digits, bottom --
^FO20,188
^BY2,3,38
^BCN,38,Y,N,N
^FD%{barcode}
^FS
^XZ
T10 Distributor
The name (2 lines), distributor and distributor item number, size, a big price, and a full barcode. Handy for reordering straight from the shelf. If an item has more than one distributor item number, they print separated by commas.
^XA
^PW467
^LL264
^CI28
^MD30
^PR3
^FX -- NAME: product name, wraps to 2 lines --
^FO20,14
^A0N,34,0
^FB427,2,2,L,0
^FD%{product_name}
^FS
^FX -- ROW 1: distributor and item #, full width --
^FO20,86
^A0N,22,0
^FB427,1,0,L,0
^FD%{distributor_name} #%{distributor_item_id}
^FS
^FX -- ROW 2: size --
^FO20,122
^A0N,26,0
^FB180,1,0,L,0
^FD%{variant_name}
^FS
^FX -- PRICE: one big price, right side --
^FO190,108
^A0N,76,0
^FB257,1,0,R,0
^FD$%{price}
^FS
^FX -- BARCODE: bars + digits, bottom --
^FO20,188
^BY2,3,38
^BCN,38,Y,N,N
^FD%{barcode}
^FS
^XZ
T11 Sale Tag
A black SALE banner, the name (2 lines), size, the regular price, and a big sale price. No barcode.
Note: The sale price only fills in while the item is part of an active sale in Back Office. Print these from the sale, not as everyday labels.
^XA
^PW467
^LL264
^CI28
^MD30
^PR3
^FX -- BANNER: white text on black bar --
^FO0,0
^GB467,52,52
^FS
^FO0,8
^A0N,40,0
^FB467,1,0,C,0
^FR
^FDSALE
^FS
^FX -- NAME: product name, wraps to 2 lines --
^FO20,60
^A0N,30,0
^FB427,2,2,L,0
^FD%{product_name}
^FS
^FX -- ROW 1: size --
^FO20,140
^A0N,24,0
^FB160,1,0,L,0
^FD%{variant_name}
^FS
^FX -- ROW 2: regular price --
^FO20,176
^A0N,26,0
^FB160,1,0,L,0
^FDReg. $%{price}
^FS
^FX -- PRICE: big sale price --
^FO187,134
^A0N,86,0
^FB260,1,0,R,0
^FD$%{sale_price}
^FS
^XZ
T12 Wine & Spirits Details
The brand on top, the name (2 lines), vintage and varietal, size, a big price, and a full barcode. Blank fields print as nothing, so the same template works for wine and spirits. For spirits or beer, swap %{varietal} for %{style}.
^XA
^PW467
^LL264
^CI28
^MD30
^PR3
^FX -- BRAND: small, top --
^FO20,10
^A0N,22,0
^FB427,1,0,L,0
^FD%{brand}
^FS
^FX -- NAME: product name, wraps to 2 lines --
^FO20,34
^A0N,32,0
^FB427,2,2,L,0
^FD%{product_name}
^FS
^FX -- ROW 1: vintage and varietal, full width --
^FO20,104
^A0N,24,0
^FB427,1,0,L,0
^FD%{vintage} %{varietal}
^FS
^FX -- ROW 2: size --
^FO20,146
^A0N,24,0
^FB180,1,0,L,0
^FD%{variant_name}
^FS
^FX -- PRICE: one big price, right side --
^FO190,128
^A0N,58,0
^FB257,1,0,R,0
^FD$%{price}
^FS
^FX -- BARCODE: bars + digits, bottom --
^FO20,188
^BY2,3,38
^BCN,38,Y,N,N
^FD%{barcode}
^FS
^XZ
T13 Pack Size
The name (2 lines), size, pack size in large type, SKU, a big price, and a full barcode. Good for beer, seltzer, and cooler doors. The pack size comes from the item's package type, like 6-pack or 12-pack.
^XA
^PW467
^LL264
^CI28
^MD30
^PR3
^FX -- NAME: product name, wraps to 2 lines --
^FO20,14
^A0N,34,0
^FB427,2,2,L,0
^FD%{product_name}
^FS
^FX -- ROW 1: size --
^FO20,92
^A0N,26,0
^FB176,1,0,L,0
^FD%{variant_name}
^FS
^FX -- ROW 2: pack / package type --
^FO20,122
^A0N,30,0
^FB176,1,0,L,0
^FD%{package_type}
^FS
^FX -- ROW 3: SKU --
^FO20,154
^A0N,20,0
^FB176,1,0,L,0
^FD%{sku}
^FS
^FX -- PRICE: one big price, right side --
^FO200,88
^A0N,80,0
^FB247,1,0,R,0
^FD$%{price}
^FS
^FX -- BARCODE: bars + digits, bottom --
^FO20,188
^BY2,3,38
^BCN,38,Y,N,N
^FD%{barcode}
^FS
^XZ
Troubleshooting
A field prints blank: Either the item doesn't have that detail filled in, or the placeholder is misspelled. Check it against "Available placeholders" in Back Office.
The sale price is blank on T11: The item isn't in an active sale. Sale prices only fill in during a sale.
Long names print on top of each other: The name needs more than 2 lines. Switch to T9, or use %{short_name} in place of %{product_name}.
The label prints cut off or in the wrong place: The label size in Back Office doesn't match the labels in your printer. Measure your labels and update "Width" and "Height," or use the 2.25″ × 1.25″ edit in "Making Quick Edits."
