Skip to main content

ZPL Shelf Label Templates

Shelf label templates decide what prints on every tag, so starting from a tested template means correct prices and names on the shelf without learning label code. See Designing Shelf Labels for building one from scratch.

H
Written by Henry Rundio

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."

Did this answer your question?