Packing Lists and Production Sheets From Shopify Orders
Packing slip template, Order Printer pick lists or an export: how to turn Shopify orders with personalised items into packing lists and production sheets.
In this guide
If you make products to order, every morning starts with the same question: what do we need to make today, and what goes in which box? Shopify has the answer in the orders, but not in the shape a workshop needs. A packing slip is per order. A production sheet is per product, with every engraving text, size and colour listed together.
This guide covers the three tools Shopify gives you for this job, what each one is good at, and how to build a production sheet when the details live in line-item properties.
Packing list, pick list, production sheet
These words get used loosely. It helps to separate them, because each one has a different shape.
| Document | One row or page per | Used by | Must show |
|---|---|---|---|
| Packing slip | Order (shipment) | Packer | Items, quantities, address, gift note |
| Pick list | Product or order, across a batch | Picker | SKU, quantity, location |
| Production sheet | Item to make, across a batch | Maker | Product, variant, every custom detail |
A packing slip goes in the box. A pick list tells someone what to take off the shelf. A production sheet tells someone what to make, which for personalised products means the customer’s text, font and upload link for every single item.
Option 1: Shopify’s packing slip template
Every store has a packing slip template. To edit it, go to Settings > Shipping and delivery, and in the Documents section click Packing slip template. Click Preview template to check your changes, then Save. Shopify documents this in Customizing packing slips.
The template is Liquid. According to Shopify’s packing slip variable reference, each item in line_items_in_shipment has these attributes, among others:
| Attribute | Meaning |
|---|---|
title |
Product name, with the variant name if there are variants |
variant_title |
Variant name |
sku |
SKU |
quantity |
Total quantity for that product |
shipping_quantity |
Quantity fulfilled in this shipment |
properties |
The product properties |
image |
Product image, if one exists |
The order object gives you name, order_number, created_at and note, and shipping_address gives the address parts. There is also includes_all_line_items_in_order, which is false when the shipment does not contain every item, handy for a “more to follow” line.
If your slip does not show engraving text today, check whether your template loops over line_item.properties. A simple version inside the line-item loop:
{% for property in line_item.properties %}
{% assign first_char = property.first | slice: 0 %}
{% unless property.last == blank or first_char == '_' %}
<p>{{ property.first }}: {{ property.last }}</p>
{% endunless %}
{% endfor %}
Test it with Preview template on an order that has properties before saving. Shopify’s Liquid reference notes that a property whose name starts with an underscore is hidden from customers at checkout. The example above skips those internal properties and empty values.
To print slips for many orders, select them on the Orders page, click Print, then Print packing slips, as described in Shopify’s printing packing slips guide. If you have several locations, you choose the location fulfilling the orders.
Good for: what goes in each box. Not built for: a per-product view of what to make.
Option 2: Shopify Order Printer and its pick lists
Shopify Order Printer is Shopify’s app for printing and customising invoices, packing slips, pick lists and other documents. Custom templates use HTML, CSS and Liquid.
It also has pick lists, which are the closest built-in thing to a production view:
- Picking by product shows product image, name, variant, order ID, SKU and quantity, and can be sorted by quantity, SKU or variant.
- Picking by order shows the same item details grouped by order.
- You can include unfulfilled, fulfilled, on hold or scheduled orders.
Two limits matter for production:
- Shopify’s printing guide says you can print up to 50 orders at a time, and suggests exporting orders to a CSV file for larger batches.
- Pick list templates cannot be customised with custom code, and Shopify’s pick list page does not list line-item properties among the columns. If the maker needs the engraving text, a pick list alone will not carry it.
Good for: picking stock products in batches of up to 50 orders. Not built for: personalised details across a large batch.
Option 3: Export line items to a spreadsheet
For production, a spreadsheet is usually the most practical format. You can sort it, filter it, split it between makers, and keep it as a record of what was produced.
Shopify’s built-in order export puts each line item on its own row, with SKU, quantity, name and vendor, plus the order note and note attributes. It does not include line-item properties as columns, which is the detail personalised shops need most. Our guide to exporting orders with line-item properties explains why, and how to keep each property with its own item.
What a good production sheet looks like
One row per item to make, one column per detail:
| Order | SKU | Product | Variant | Qty | Property: Engraving | Property: Font | Property: Upload |
|---|---|---|---|---|---|---|---|
| #1041 | RING-S | Silver ring | Size 7 | 1 | Anna & Tom | Script | |
| #1042 | PRINT-A3 | Art print | A3 | 2 | link to file | ||
| #1042 | RING-S | Silver ring | Size 6 | 1 | 12.06.2026 | Serif |
Two rules make this layout work:
- One row per line item, so each engraving text sits next to the product it belongs to. Our post on one row per line item covers this layout in detail.
- Each property in its own column, so you can filter for every item with a
FontofScript, or every item with an upload.
Grouping by product
Once the rows are in a spreadsheet, grouping is a sort, not a rewrite:
- Sort by SKU, then variant. All size 7 silver rings sit together.
- Add a pivot table with SKU and variant as rows and the sum of quantity as values. That is your blank count: how many of each item to pull or cut.
- Filter by property to split the work: one maker takes everything with a
Font, another everything with anUpload. - Check empty required fields. A filter on an empty
Engravingcolumn for engraved products catches missing details before production, not after.
If you open the file in Excel, import it as described in our guide to exporting Shopify orders to Excel, so SKUs and dates keep their original form.
A daily batch routine
- Choose the batch. For example, all paid, unfulfilled orders up to this morning. Tag them with a batch name if you want a clean cut-off.
- Export the production sheet for that batch, one row per line item.
- Print packing slips for the same orders, so each box has its slip.
- Make from the sheet, grouped by product.
- Pack against the slips, then fulfil. Our guide to bulk fulfilling and tagging orders covers the last step.
- Save the sheet with the batch date. When a customer questions their engraving, you can show what came in with the order.
Pitfalls
- Inconsistent property names.
Engravingon one product andEngraving texton another become two columns. Standardise the names in your product forms. - Edited orders. If an order is edited after you export, the sheet is out of date. Export as close to production as you can.
- Partially fulfilled orders. Make sure the batch only contains items that still need making.
- Gift messages in the wrong place. Some themes save gift messages as note attributes on the order, others as properties on an item. Check one real order to see which.
- Batches over 50 orders. Order Printer prints 50 at a time; plan your printing or use an export.
Building production sheets with StoreFleet: Order Export
StoreFleet: Order Export is a Shopify app, currently in review for the Shopify App Store, that exports orders to CSV or Excel with each line-item property and note attribute in its own column. It includes a packing list template (shipping address, shipping method, SKU, item, variant and quantity, one row per line item) and a personalised items template that adds the item’s properties and the order note. You can filter by date, payment status, fulfillment status and tags, or select specific orders, and the file is built in your browser.
FAQ
Can Shopify’s packing slip show engraving text?
Yes, if your template prints it. Each line item in line_items_in_shipment has a properties attribute. Loop over it in the packing slip template and check the result with Preview template.
How many orders can I print at once?
Shopify Order Printer prints up to 50 orders at a time. For bigger batches, Shopify suggests exporting orders to a CSV file.
Does Order Printer’s pick list include line-item properties?
Shopify’s pick list documentation lists image, product name, variant, order ID, SKU and quantity, and the pick list template cannot be customised with code. It does not list line-item properties.
Does Shopify’s order export include line-item properties?
No. The standard order CSV includes the order note and note attributes, but not line-item properties. You need an export tool that reads them from each line item.
What is the difference between a pick list and a production sheet?
A pick list tells someone which stock to take off the shelf. A production sheet tells someone what to make, including every custom detail for each item.