Why automate shipping labels?
Order comes in. Someone has to copy the address into the label maker, check for typos, add the tracking number, print it, tape it on. Next order. Copy, check, print, tape. 50 times a day. One wrong digit in the zip code and the package ends up in the wrong state.
Built-in labels from Shopify and ShipStation all look the same. No room for your logo, no custom fields for "FRAGILE" or picking instructions, no way to match your warehouse's workflow.
Make's visual scenario builder lets you connect your store to a label template — and its Iterator module means you can process entire order batches in one go. New orders come in, labels print automatically, with the exact layout your team needs.
Create your shipping label template
1.1 — Choose a template
Start with one of our pre-built shipping label templates or create your own:
- Go to Templates
- Filter by Shipping Label category
- Choose the format that matches your printer
- Click Use Template to add it to your dashboard
This tutorial uses the US Letter Shipping Label template — ideal for North American paper sizes.
Screenshot: US Letter shipping label template in the template gallery
Other option: A4 Shipping Label for international paper sizes.
1.2 — Understand the template structure
The template uses dynamic fields that get replaced with real data. Some fields you'll hardcode (your return address), others come from Make (recipient address, tracking number).

Hardcode once (your company)
sender_name— Your company namesender_address_line1— Return addresssender_city_state_zip— City, state, postal code
Edit these directly in the template — they stay the same for every label.
Dynamic from Make (per label)
recipient_name— Recipient namerecipient_address_line1— Street addressrecipient_address_line2— Apt, suite (optional)recipient_city_state_zip— City, state, ziporder_id— Order referencetracking_number— Tracking codeweight,dimensions— Package infoshipping_date— Ship date
Map these from your e-commerce platform in Make.
Handling multi-line addresses
Most e-commerce platforms send addresses as separate fields (line 1, line 2, city, state, zip). Use Make's built-in text functions to combine them into the format your template expects.
Learn more: Data binding · Expressions
1.3 — Configure the tracking barcode
The template includes a Code 128 barcode bound to {{tracking_number}}. Click on the barcode in the editor to configure it:
Screenshot: Barcode selected in the editor with properties panel showing Value, Format, and Show text options
Select the barcode
Click on the barcode in the canvas. Blue handles appear when selected.
Check the properties panel
The right panel shows: Value (the variable), Format (Code 128), Show text, and dimensions.
Tip: Code 128 works with most carriers (UPS, FedEx, USPS, DHL). Make sure there's enough white space around the barcode for reliable scanning.
Learn more: Barcodes & QR codes
1.4 — Test with the Preview tab
The Preview tab lets you test your template with sample data before building your Make scenario. The JSON panel on the right contains your test data, and the rendered label appears on the left in real-time.
View full JSON payload example
Tip: The field names in the JSON (like recipient_name) are exactly what you'll map in Make's HTTP module body. Each key fills its matching {{placeholder}} in the template.
Build your Make scenario
The scenario is straightforward: order comes in, label goes out. Three modules, fully automatic:
2.1 — Set up the trigger
Choose your e-commerce platform and trigger event:
Shopify
Module: Watch Orders or New Order
WooCommerce
Module: Watch Orders
BigCommerce
Module: Watch Orders
Etsy
Module: Watch Transactions
- Go to make.com and create a new scenario
- Search for your e-commerce platform module
- Select the Watch Orders trigger (or equivalent)
- Connect your store and run once to test with a recent order
Screenshot: Make scenario editor with Shopify trigger module configured
Shopify shipping address fields
After running the trigger, you'll see the shipping address broken down into separate fields. Map them to your template:
- •
Shipping Address Name→recipient_name - •
Shipping Address Address1→recipient_address_line1 - •
City + Province + Zip→ combine intorecipient_city_state_zip
2.2 — Add the HTTP module
Add an HTTP module to call the TemplateFox API and generate the label PDF:
- Add a new module: HTTP → Make a request
- URL:
https://api.pdftemplateapi.com/v1/pdf - Method:
POST - Headers:
x-api-key: your_api_keyandContent-Type: application/json - Body type: Raw → JSON
- Map your order fields from the trigger into the JSON body
Screenshot: HTTP module configuration with URL, headers, and JSON body mapping
View example request body
Tip: Hardcode your return address (sender_* fields) directly in the template. Only map dynamic data like recipient address and order ID from the trigger module.
About tracking numbers: Your e-commerce platform may not have tracking numbers at order creation time. Options:
- • Add an HTTP module to fetch tracking from your carrier API (ShipStation, EasyPost)
- • Trigger the scenario on "Fulfillment Created" instead of "New Order"
- • Generate labels without tracking, add it manually before printing
2.3 — Send or print the label
The HTTP module returns a pdf_url. Add one more module to deliver the label:
Email to warehouse
Add a Gmail or SMTP module to send the PDF to your fulfillment team. They print and attach the label to the package.
Save to Google Drive
Upload to a shared folder organized by date. Your team downloads and prints in batches.
Print automatically
Use the Ezeep or PrintNode module to send directly to your thermal printer (Zebra, DYMO, Brother).
Upload to S3
Use TemplateFox's built-in S3 integration to store labels in your own bucket for archival and compliance.
That's the basic setup. Order placed, label ready. Your warehouse team can start packing immediately — no data entry, no typos.
Screenshot: Final generated shipping label PDF with barcode and all data filled in
Process orders in bulk
The basic scenario handles one order at a time. But what if you need to generate labels for a batch of orders — say, all orders from the last hour or all unfulfilled orders? This is where Make's flow control modules shine.
3.1 — Iterator for batch orders
The Iterator module takes an array of items and processes them one at a time. Feed it a list of orders, and it generates one label per order automatically.
- Replace the trigger with a Schedule module (e.g., every hour or daily at 8am)
- Add a Shopify → Search Orders module filtered by "unfulfilled"
- Add an Iterator module — point it at the orders array
- The Iterator feeds each order one-by-one to the HTTP module
- Each order gets its own label PDF
Screenshot: Make scenario with Schedule, Search Orders, Iterator, and HTTP modules connected
Why Iterator? Without it, Make would try to pass the entire orders array to one HTTP call. The Iterator unpacks the array so each order gets its own API call and its own label.
3.2 — Filter module for routing
The Filter module sits between two modules and only lets data through if conditions are met. Use it to:
Only fulfilled orders
Filter: fulfillment_status equals fulfilled. Skip orders still being packed — only generate labels when they're ready to ship.
Route by shipping method
Use a Router module with filters on each branch. Express orders go to one template (priority label), standard orders go to another.
Route by region
Filter by shipping_address.country. Domestic orders get one label format, international orders get a label with customs fields.
Screenshot: Make scenario with Router module splitting into domestic and international label branches
API docs: Full API reference · Make integration guide
Supported platforms
Any e-commerce platform or order management system with a Make module or webhook support works. Here are the most popular: