How to Create Shipping Label PDFs with QR Codes for WooCommerce

A shipping label is the smallest document in the series and the one you print most: the recipient address in large type, the sender in small type, the order number as a QR code the warehouse can scan, and the shipping method. This guide builds an A6 landscape label from a blank template with PDF Invoice for WooCommerce + Drag and Drop Template Builder (plugin slug pdf-for-woocommerce, by add-ons.org), generates it for every processing order and prints labels one by one or as one merged PDF for a whole batch of parcels. The packing slip and picking list guide covers the related warehouse documents.

Video tutorial

1. What the Label Contains

BlockContentMerge tags
SenderOne small line with the store name and addressYee Add-ons + static text
Recipient“SHIP TO” plus the full shipping address in 16–20 px , , , , , , , 3286550379
QR codeThe order number, scannable with any phone or warehouse scanner8448 inside the Qrcode element
Order lineOrder number, date, shipping method, number of items, a blank for the weight8448, August 28, 2026, , 1

The plugin prints the label at the paper size you choose in the template, so pick the size your label printer or sticker sheets use: A6 (105 × 148 mm) is the common European parcel label, 4 × 6 in is the US standard. Both are available in Settings PDF.

2. Build the Label Template

Step 1: New blank template

Go to PDF Templates → New Template and name it Shipping Label. A new template starts with one empty row.

A new empty PDF template named Shipping Label in the builder
A blank template: one empty row, ready for elements.

Step 2: Paper size and orientation

Click Settings PDF at the top right of the canvas. Set Orientation to Landscape and Paper Size to A6 (105 × 148 mm). The canvas keeps its width on screen, but the generated PDF uses the real label size.

The Settings PDF panel with Orientation Landscape and Paper Size A6
Settings PDF → Landscape, A6. Use A7 for small sticker rolls or a custom size.

Step 3: Sender line

Builder note: a new element is inserted just above the element you drop it on (the first element of an empty row is simply added). The quickest way to get the reading order sender → recipient → QR code → order line is to create the order line (step 6) first, then drop each of the other blocks onto it in steps 3, 4 and 5; the blocks slide in above it in the order you add them.

Drag a Text/HTML element from the Elements panel into the row and type the sender in a small font:

FROM: Yee Add-ons · 123 Main Street · Anytown, US 11155 · +1 145 581 552
The first Text element selected with the sender line in 9 px
The sender line: 9 px, one line.

Step 4: Recipient block

Drag a second Text/HTML element below it. Use the Shortcodes menu or type the shipping merge tags, and set the name to 20 px bold and the address to 16 px so it stays readable from a distance:

SHIP TO
 
 
 , 

Phone: 3286550379
The recipient Text element selected with the shipping merge tags in the Editor panel and the rendered address on the canvas
The recipient block. The canvas shows the sample order, the Editor shows the merge tags.

Step 5: QR code

Drag the Qrcode element into the row. In its Editor panel the Content field is the text encoded in the code: enter 8448. Set the Width to about 90 px and align it to the right so it sits next to the address. Scanning the label with a phone or a warehouse scanner returns the order number; you can also encode the order URL or a tracking number from order meta.

The Qrcode element selected with 8448 as its content and a width of 90
Qrcode element: content = order number merge tag, width 90 px.

Step 6: Order line

Add a last Text/HTML element with the order details the carrier or the packer needs:

Order #8448 · August 28, 2026
Shipping:  · Items: 1 · Weight: ______ kg
The order line Text element selected in the builder
The order line with the shipping method and the item count.

Click Save. The whole template is four elements in one row.

The finished Shipping Label template in the builder with sender, recipient, QR code and order line
The finished label template.

3. Generate the Label for Every Order

Go to WooCommerce → Settings → PDF → Add new PDF:

The PDF setting for the shipping label: label Shipping label, template Shipping Label, file name label-8448, status Processing, no attachments, My Account never
The shipping label setting.
FieldValue
LabelShipping label
PDF TemplateShipping Label
PDF Namelabel-8448
Enable when order statusProcessing (paid, ready to ship)
Attachment tonone; optionally New order so the admin notification carries the label
Allow My Account invoice downloadNever
The PDF settings list with the Shipping label row next to the other documents
The label is a separate document next to the invoice, packing slip and picking list.

4. Print Labels

One order

Open a processing order: the PDF box has a Shipping label entry with Download, Preview and Regenerate. Preview opens the A6 PDF in a new tab; print it at 100 % scale on the label printer.

The PDF box on the order screen with Invoice, Packing slip, Picking list and Shipping label entries
The PDF box of a processing order with the Shipping label entry.
The generated A6 landscape shipping label for order 1771: sender line, SHIP TO Nami Joan with the Seattle address, a QR code and the order line
The generated label: A6 landscape, recipient in large type, QR code with the order number.

A batch of parcels

In WooCommerce → Orders filter on Processing, tick the orders you are shipping, choose Download PDF – Shipping label in the bulk actions and click Apply. One PDF with one A6 page per order is downloaded, ready for the label printer.

The Orders list filtered on Processing with the PDFs column
Orders → Processing.
Three orders ticked and the bulk action Download PDF - Shipping label selected
Bulk actions → Download PDF – Shipping label.
Page 1 of the merged shipping label PDF
The merged PDF: one label per page.

5. Tips

  • Label size: A6 landscape (148 × 105 mm) matches most thermal label printers; choose A7 or a custom size under Settings PDF for smaller stickers, and keep the fonts at 16 px or larger.
  • Barcode instead of QR: the Barcode element prints a Code 128 barcode from the same content; use it when the carrier scanner does not read QR codes.
  • Tracking number: if a shipping plugin stores the tracking number in order meta, print it with and encode it in the QR code.
  • Return address label: duplicate the template, swap the sender and recipient blocks and set the status to Refunded or Cancelled for a prepaid return label.
  • Country names: prints the ISO code (US, DE…); add the full country name in a text block if your carrier requires it.
  • Regenerate: after editing the template click Regenerate on the order; the bulk download always renders fresh.

6. Frequently Asked Questions (FAQ)

Does the QR code work in downloaded and emailed PDFs?

Yes. The code is rendered on your server as an image inside the PDF; no internet connection is needed to scan it.

Can I print two labels per A4 page?

Keep the template at A6 and set your printer dialog to “2 pages per sheet” or “multiple”, or build an A4 template with a two-column row and two copies of the blocks.

Why is the shipping method empty?

The tag prints the shipping line of the order. Orders without a shipping line (virtual products, free shipping without a method) print nothing; add a fallback text if needed.

Can the label be generated at another status?

Yes, tick any status under Enable when order status, for example Completed if you ship after marking the order complete.

Can I use the label for pickup orders only?

Enable conditional logic in the setting and compare the shipping method or a custom field, so the label is generated only for orders that match.