Zapier Tutorial

Automate Packing Slips with Zapier

New order comes in, packing slip prints at the warehouse. No clicking, no copy-pasting.

The problem

Every order needs a packing slip. Someone has to log into Shopify, find the order, print it, and match it with the right package. Do that 50 times a day and it gets old fast.

And Shopify's default packing slips are... fine. But they don't have your branding, can't show gift messages, and don't include barcodes for scanning.

We're going to fix both problems. You'll create a custom packing slip template, connect it to Shopify, and have it print automatically when orders come in.

What's on a packing slip?

For the warehouse

  • • Order number (often with barcode)
  • • SKU codes for each item
  • • Quantities to pick
  • • Checkboxes for verification
  • • Bin locations (if applicable)

For the customer

  • • Their name and shipping address
  • • List of items in the package
  • • Gift message (if applicable)
  • • Return instructions
  • • Your company branding
1

Create your packing slip template

1.1 — Choose a template

I'll use one of our packing slip templates. You can also build one from scratch if you have specific requirements.

  1. Go to Templates
  2. Filter by Packing Slip
  3. Pick one and click Use Template

Want to test first? Try the free packing slip generator with your own data.

Packing slip template in the visual editor showing line items table and dynamic fields

1.2 — How the template works

Some things stay the same on every packing slip (your company name, return address). Others change per order (customer name, items). Here's how that breaks down:

Hardcode once (your company)

  • company_name — Your business name
  • company_address — Your warehouse address
  • company_email — Support email
  • company_phone — Support phone

Edit these directly in the template — they stay the same for every order.

Dynamic from Zapier (per order)

  • order_number — Order ID (e.g., TS-2026-00847)
  • order_date — When order was placed
  • ship_to_name — Recipient name
  • ship_to_address — Street address
  • ship_to_city — City, state, zip
  • items[] — Line items array
  • customer_note — Special instructions

The line items table

The table expands automatically. If an order has 3 items, you get 3 rows. 10 items, 10 rows.

Each row uses:
{{items.sku}} — Product SKU code
{{items.description}} — Product title
{{items.qty_ordered}} — Quantity ordered
{{items.qty_shipped}} — Quantity shipped
{{items.status}} — Status (Shipped, Backorder)
{{items.image_url}} — Product image (optional)

Picking checkboxes

Add a checkbox column to your items table for warehouse staff to mark items as picked. Use the Unicode checkbox character or a simple empty box:

Empty box: (U+2610)
Checked box: (U+2611)

Customize barcodes and QR codes

The template includes scannable codes for quick order lookup. To customize them, simply click on the barcode or QR code in the canvas:

Template editor showing barcode and QR code with properties panel - click any code to edit its Value, Format, and Show text options
1

Click on the barcode/QR — The element is highlighted and handles appear.

2

Edit in the right panel — Change the Value (variable), Format (Code 128), Show text, and dimensions.

Code128 barcode: {{barcode:order_number}}
QR code: {{qrcode:tracking_number}}

Tip: QR codes can store more data than barcodes. Use them for URLs (like {{qrcode:order_url}}) or tracking links that staff can scan with their phone.

Learn more: Data binding · Barcodes · Tables

1.3 — Test it

Before connecting Zapier, make sure the template looks right. Click the Preview tab and paste in some test data.

Packing slip preview tab with JSON data panel showing real-time rendering
1

JSON data maps to template fields

Each key in the JSON (like order_number) fills its matching {{order_number}} placeholder.

2

Line items array becomes table rows

The objects in the items array generate one table row per product.

3

Barcode renders from order number

The {{barcode:order_number}} syntax generates a scannable barcode.

Tip: Use the Copy Payload button to copy the JSON structure. This is the exact format you'll need to send from Zapier.

View full JSON payload example
{
"company_name": "TechStore Inc.",
"company_address": "123 Commerce Blvd, Suite 200, Austin, TX 78701",
"company_email": "fulfillment@techstore.com",
"company_phone": "+1 (512) 555-0199",
"order_number": "TS-2026-00847",
"order_date": "Feb 3, 2026",
"order_url": "https://techstore.com/orders/TS-2026-00847",
"ship_to_name": "Sarah Mitchell",
"ship_to_address": "456 Oak Lane, Apt 12B",
"ship_to_city": "Portland, OR 97201, USA",
"ship_to_phone": "+1 (503) 555-0142",
"shipping_method": "FedEx Ground",
"tracking_number": "794644790132",
"estimated_delivery": "Feb 7, 2026",
"customer_note": "Please leave at the front door if no one is home.",
"items": [
{
"sku": "WBH-PRO-BLK",
"description": "Wireless Bluetooth Headphones",
"qty_ordered": 1,
"qty_shipped": 1,
"status": "Shipped"
},
{
"sku": "USB-C6-WHT",
"description": "USB-C Charging Cable (6ft)",
"qty_ordered": 2,
"qty_shipped": 2,
"status": "Shipped"
},
{
"sku": "WM-ERG-GRY",
"description": "Wireless Mouse - Ergonomic",
"qty_ordered": 1,
"qty_shipped": 0,
"status": "Backorder"
}
]
}
2

Connect with Zapier

I'm using Shopify for this tutorial, but the same approach works with WooCommerce, BigCommerce, or any platform that has a Zapier integration.

Zapier workflow: Shopify New Order → TemplateFox Generate PDF → PrintNode Create Print Job

2.1 — Set up the Shopify trigger

  1. Go to zapier.com and create a new Zap
  2. Search for Shopify
  3. Pick New Order as the trigger
  4. Connect your store and test — Zapier should pull a recent order

Shopify gives you everything you need: order number, shipping address, line items, customer notes.

2.2 — Map the line items

Shopify sends line items as an array. Here's how the fields map:

TemplateShopify
items.skuLine Items SKU
items.descriptionLine Items Title
items.qty_orderedLine Items Quantity
items.image_urlLine Items Image Src

You don't need to loop or do anything special — the table expands automatically for each item in the order.

2.3 — Add the PDF action

  1. Add an action and search for TemplateFox
  2. Pick Generate PDF
  3. Connect your account (you'll need your API key)
  4. Select your packing slip template
  5. Map the Shopify fields to your template variables
  6. Test it — you should get a PDF URL back
3

Get it to the warehouse

Now you have a PDF. Here are a few ways to get it to your warehouse team:

3.1 — Email to warehouse

Send the packing slip to a shared inbox that your warehouse team monitors:

  1. Add an Action: Gmail, Outlook, or SMTP
  2. Set recipient: warehouse@yourcompany.com
  3. Subject: New Order #{{order_number}} - Ready to Pick
  4. Attach the PDF URL from the TemplateFox action

Tip: Create an email rule to automatically move these to a "To Pick" folder or flag them for quick access.

3.2 — Auto-print

This is my favorite option. The packing slip prints automatically at the warehouse as soon as the order comes in.

  1. Set up Ezeep or PrintNode on your warehouse computer
  2. Connect it to Zapier
  3. Add a Print Document action
  4. Pass the PDF URL from the previous step

Order comes in, packing slip prints. Your warehouse staff just grab it and start picking.

3.3 — Save to Google Drive

Archive packing slips in a shared folder for records and auditing:

  1. Add an action: Google Drive"Upload File"
  2. Select a shared folder (e.g., Orders/Packing Slips/2026)
  3. File URL: PDF URL from TemplateFox
  4. Filename: PackingSlip-{{order_number}}.pdf

Other platforms

I used Shopify for this tutorial, but this works with any platform that has a Zapier trigger: WooCommerce, BigCommerce, Etsy, Squarespace, Wix, Amazon, eBay, Magento. The setup is nearly identical — just use their "New Order" trigger instead.

Other tutorials

Frequently asked questions

What's the difference between a packing slip and an invoice?

Packing slip goes in the box — it lists what's inside so warehouse staff can pick the right items and customers can verify their order. Invoice is for billing. Packing slips usually don't show prices.

Can I include product images?

Yes. Pass the image URL from Shopify and use {{items.image_url}} in your template. Makes it easier for warehouse staff to identify products.

What about orders that ship in multiple boxes?

Use a Filter or Paths step in Zapier to split the items, then generate a separate packing slip for each box.

Can I add a barcode?

Yes. Use {{barcode:order_number}} for a Code128 barcode or {{qrcode:order_number}} for a QR code. Staff can scan it to pull up the order.

How do I auto-print?

Add Ezeep or PrintNode as the last step in your Zap. The packing slip prints at your warehouse printer as soon as the order comes in.

What does it cost?

You get 60 free PDFs per month. After that, plans start at $19/month. See pricing.

Automate your PDF generation

Complete documentation, no-code integrations, and a powerful API to help you generate PDFs at scale. Let us handle the boring stuff.