ShipStation Packing Slip Templates: How to Customize Every Field
Where packing slip templates live in ShipStation, how to customize the header, logo, and fields, the field-replacement variable system, real recipes for gifts and barcodes, and what to do when a retailer requires a format ShipStation can't produce.
Jacob
Founder
For four years I printed thousands of packing slips a day out of ShipStation. I learned its template editor the hard way — by needing it to do something it wouldn't, at 6am, with a warehouse waiting. So this is the honest version: what you can genuinely customize, exactly where the settings live, the variable system that does the real work, and the handful of walls you'll hit that no help article warns you about.
If you just want a clean slip with your logo, your fields, and prices hidden for gift orders, ShipStation handles it. If you're shipping for a retailer that dictates the format down to the barcode, that's where it gets complicated — and I'll be straight about that too.
Where packing slip templates live in ShipStation
There are two different screens, and mixing them up is the first thing that trips people up.
The format — the physical size and orientation — is set under Account Settings → Printing → Printing Setup, then Document Options for Packing Slips. That's where you choose between a 4" x 6" thermal slip and the 8.5" x 11" options (one full-page, or two slips per page).
The content — the actual layout, logo, and fields — is edited in your packing slip template. You copy the default template (you can't edit the default directly), open it, and you're into an editor split into four sections you click to edit one at a time:
- Order Header — store logo, Ship From / Ship To addresses, order number, order date, and ship date.
- Order Items Header — the column labels for the item table.
- Order Items — the repeating row: SKU, description, quantity, price.
- Order Footer — notes, totals, and anything you want at the bottom, like a barcode.
Each section is editable as raw HTML, with CSS and Liquid for conditional logic. If you know a little HTML you have a lot of room; if you don't, the point-and-click field picker still gets you a long way.
Customizing the header, logo, and fields
The logo and company name aren't set in the template itself — they come from the store. ShipStation drops the Company Name in the top-left and the Store Logo in the top-right from the Branding tab of that store's settings, plus any footer text you've added under the store's Packing Slips settings. So if your logo is wrong on the slip, you fix it on the store, not in the template HTML.
Logo sizing is the one exception that lives in the template. In the Order Header section you'll find the logo inside an img tag with resizing parameters in the URL (you'll see numbers like 300/80/ or 150/60/). Change those, or set an explicit width with a CSS style attribute, and the logo scales.
Everything else — what fields show up and where — is done with field replacements, which is the part worth understanding properly.
The field replacement (variable) system
Field replacements are ShipStation's merge variables: bracketed pieces of text that get swapped for real order data when the slip prints. [Carrier Name] prints the actual carrier. You add them from the Field Replacements dropdown in the editor, or type them by hand — but if you type them, they have to match the list exactly, including capitalization and spaces, or they print as literal text.
The rule that catches everyone: item-level fields only work inside the Order Items section, and order-level fields only work in the Header or Footer. A [Sku] in the header prints nothing. A [Carrier Name] in the item row prints nothing. Keep item data in the item rows and order data in the header/footer and half the "why is my field blank?" problems never happen.
Here are variables I've confirmed against ShipStation's current Field Replacements documentation — use these as a starting set, and open the in-editor dropdown for the full list:
| Field replacement | What it prints | Section |
|---|---|---|
[Order #] |
The order number | Header / Footer |
[Carrier Name] |
The shipping carrier's name | Header / Footer |
[Shipping Service] |
The selected service | Header / Footer |
[Custom Field #1] |
Your custom order field (notes, gift flags) | Header / Footer |
[Sku] |
The line item's SKU | Order Items |
[UPC] |
The line item's UPC | Order Items |
[Image URL] |
The product image URL | Order Items |
Note [Image URL] is just the URL — it doesn't render an image on its own. You have to wrap it in an image tag: <img src="[Image URL]">. That's the next recipe.
Common recipes
Add product images. In the Order Items section, drop <img src="[Image URL]"> into the row (a good spot is right after the [Sku] cell) and add a height attribute so it prints as a thumbnail instead of a full-size image. One gotcha that wasted an afternoon for me: the image URL has to be https or it silently won't render.
Hide prices for gift orders. Two ways. The blunt way is to delete the price column — remove the <th> for price in the Order Items Header and the matching <td> in the Order Items row. The better way, if you ship a mix of gift and non-gift orders, is to make a separate gift template with no prices and let an automation rule apply it: ShipStation can key a rule off the Gift field, so gift-marked orders automatically get the no-price slip and everything else gets your normal one.
Add a barcode. In the Order Footer, ShipStation supports a barcode tag around a field, like <barcode barcodetype="Code128A">[Order #]</barcode>. There's also a checkbox in Printing Setup → Document Options to include a "Scan to View" barcode on packing slips without touching HTML. If your order numbers are long or run to high volumes, use Code128A specifically — the default barcode type has known issues with long digit strings.
Per-store slips. If you sell on multiple channels and each needs its own look, you don't switch templates by hand. Assign a template to a store under Selling Channels → Store Setup → Edit Store Details → Packing Slips tab, pick the template from the dropdown, and every new order from that store prints on it. Two caveats worth knowing: it only affects orders that import after you set it, and the format still has to be one your Document Options allows.
The limits nobody tells you about
The editor is flexible inside its box. The box has hard edges.
- The formats are fixed. You get 4" x 6" thermal or 8.5" x 11" paper. That's the menu. There's no custom page size, and — despite years of user requests — no landscape 4" x 6" option. If a spec calls for a landscape thermal slip, ShipStation can't produce it natively.
- Format and label printing are coupled. If you set your label layout to print the packing slip together with the label, you lose the ability to set the slip's format independently in Document Options — the label choice wins.
- The layout is a single linear flow. Header, items, footer. There's no true multi-zone page design, no tear-off remittance stub, no second-page insert. You can style within the sections, but you can't fundamentally re-architect the page.
- You can't edit the default template. You have to copy it first and edit the copy. Minor, but it surprises people who go looking for an "edit" button that isn't there.
None of this matters if you're printing your own-brand slips. It matters enormously the moment someone else dictates the format.
When a retailer requires a format ShipStation can't produce
This is the wall I hit over and over, and it's the reason ShipExtension exists.
We shipped drop-ship orders for Home Depot, Macy's, and Lowe's. Each one hands you a packing slip specification — exact layout, exact barcode symbology and placement, exact orientation — and getting it wrong means compliance violations and chargebacks. Home Depot wants a landscape slip with a specific barcode. Macy's and Bloomingdale's want a portrait slip whose branding switches based on the sales division. Lowe's wants its own portrait format with black headers. ShipStation's template editor — linear, portrait-or-4x6, no landscape thermal — simply can't render these, so for years I generated them outside ShipStation and hand-matched every slip to its label.
ShipExtension's retailer-compliant packing slips are the fix I built for exactly that. It generates true retailer-format PDFs — Home Depot, Macy's/Bloomingdale's, and Lowe's — to each retailer's specification, working alongside ShipStation through the API rather than replacing it. You still run ShipStation's own template editor for your regular branded slips; you reach for ShipExtension only when a retailer's format is one the built-in editor genuinely can't produce.
The point isn't that ShipStation's packing slips are bad — for the common case they're good, and I still use them. It's knowing which side of the line you're on, so you're not fighting an HTML editor at 6am trying to make it do something it was never built to do.
Frequently asked questions
Can I use a different packing slip template for each store?
Yes. Assign a template to a store under Selling Channels → Store Setup → Edit Store Details, on the Packing Slips tab, by choosing it from the Packing Slip Template dropdown. From then on, every order that imports from that store prints on that template. It only applies to orders that import after you set it, so orders already in your account keep whatever template they came in with, and the format still has to be one you've enabled in Printing Setup → Document Options.
How do I remove prices from a packing slip?
Two ways. You can delete the price column directly by removing the price cell from the Order Items Header and the matching cell in the Order Items row. Or, if you only want prices hidden on gift orders, create a separate template with no prices and let an automation rule apply it — ShipStation can trigger a rule off the Gift field, so gift-marked orders automatically print the no-price version while everything else uses your standard slip.
How do I add a barcode to my packing slip?
In the Order Footer section, wrap an order field in a barcode tag, for example a Code128A barcode around the order number. There's also a checkbox under Printing Setup → Document Options to include a built-in "Scan to View" barcode without editing any HTML. If your order numbers are long or you ship at high volume, choose the Code128A type specifically, because the default barcode type has known issues encoding long digit strings.
Can I print a packing slip without buying a label?
Yes. Select one or more orders in the Orders grid, open the Print menu, and choose Packing Slips. That prints the slips on their own, with no label purchased and no shipment created — useful for pick-and-pack workflows where slips go to the floor before anyone rates or buys postage.
The bottom line
ShipStation's packing slip editor does more than most people realize — four editable sections, a full field-replacement system, Liquid conditionals, per-store assignment, barcodes, product images. Learn where the two settings screens live and the item-vs-order field rule, and you can build a genuinely sharp branded slip. Just know the edges: fixed formats, no landscape thermal, one linear layout. When a retailer's spec lives past them, that's the gap ShipExtension closes.
Share this article