Skip to content

Packing slips & documents

A packing slip is the document you drop in the box: what’s in this shipment, who it’s going to, and which order it belongs to. Sellerlane renders slips from a template you can fully customize with HTML, CSS, and Liquid — and deliberately prints no prices, so a slip is always safe to include in a gift or a marketplace shipment.

From an order — open the order and use Print packing slip on a fulfillment (or on a fulfillment order that hasn’t shipped yet, as a pick list). Each slip covers one shipment: if you ship an order in two parts, each part gets its own slip listing only its items. The slip opens as a print-ready page in a new window — use your browser’s print dialog to print or save as PDF.

In bulk — on the Orders list, tick the orders you want and choose Print packing slips from the bulk actions. Sellerlane produces one combined print document; when your selection spans multiple locations you can filter to one location’s slips.

Partial shipments show “N of M”

When a shipment contains only part of a line, the slip prints the quantity as shipped of ordered — for example 2 of 5 means this box holds 2 of the 5 the customer ordered. The template also knows whether the shipment contains the entire order, so it can print an “items in this shipment” heading only when relevant.

Customize the template

  1. Go to Settings → Shipping and delivery → Documents and open Packing slip template.

  2. Edit the template. It’s plain HTML and CSS with Liquid variables, filters, and tags — the full Liquid variable reference is below.

  3. Click Preview template at any time to render your template with sample order data, so you can iterate without a real order.

  4. Save. Every slip printed from now on uses your template.

To throw away your customizations, click Revert to default — the built-in template is restored.

Liquid variable reference

All variables below are available in the packing slip template. Loop over line_items_in_shipment for the items; everything else is a single object.

shop and shop_address

VariableDescription
shop.nameYour store’s name
shop.emailYour store’s contact email
shop.domainYour store’s primary domain
shop_address.address1Street address of your default location
shop_address.address2Apartment, suite, etc.
shop_address.cityCity
shop_address.provinceState or province name
shop_address.province_codeState or province code
shop_address.zipPostal code
shop_address.countryCountry name
shop_address.country_codeCountry code
shop_address.phonePhone number
<p>{{ shop.name }}{{ shop_address.city }}, {{ shop_address.country }}</p>

order

VariableDescription
order.order_numberThe order’s number, without prefix (1001)
order.nameThe customer-facing order name (#1001)
order.noteThe note on the order, if any
order.created_atWhen the order was placed, in your store’s timezone — format it with the date filter
<p>Order {{ order.name }} — placed {{ order.created_at | date: "%B %-d, %Y" }}</p>

customer

VariableDescription
customer.first_nameCustomer’s first name
customer.last_nameCustomer’s last name
customer.nameFull name
customer.emailEmail address

shipping_address and billing_address

Both addresses expose the same fields:

VariableDescription
shipping_address.nameFull name on the address
shipping_address.first_nameFirst name
shipping_address.last_nameLast name
shipping_address.companyCompany, if given
shipping_address.address1Street address
shipping_address.address2Apartment, suite, etc.
shipping_address.cityCity
shipping_address.provinceState or province name
shipping_address.province_codeState or province code
shipping_address.zipPostal code
shipping_address.countryCountry name
shipping_address.country_codeCountry code
shipping_address.phonePhone number

Use billing_address. with the same field names for the billing address. Pickup orders have no shipping address — guard with a conditional:

{% if shipping_address %}
<p>{{ shipping_address.name }}<br>{{ shipping_address.address1 }}, {{ shipping_address.city }}</p>
{% endif %}

line_items_in_shipment

The items in this shipment (not the whole order). Inside the loop each line_item exposes:

VariableDescription
line_item.titleProduct title
line_item.variant_titleVariant title (blank for products without variants)
line_item.vendorProduct vendor
line_item.skuVariant SKU
line_item.quantityTotal quantity ordered on this line
line_item.shipping_quantityQuantity in this shipment
line_item.imageProduct image URL
line_item.propertiesLine customizations — each has a name and value
{% for line_item in line_items_in_shipment %}
<p>
{{ line_item.title }}{% if line_item.variant_title %}{{ line_item.variant_title }}{% endif %}
({{ line_item.shipping_quantity }} of {{ line_item.quantity }})
</p>
{% for property in line_item.properties %}
<small>{{ property.name }}: {{ property.value }}</small>
{% endfor %}
{% endfor %}

Other variables

VariableDescription
includes_all_line_items_in_ordertrue when this shipment contains the entire order — use it to switch between “Items” and “Items in this shipment” headings
delivery_method.instructionsYour pickup instructions, present on slips for pickup orders
nowThe current date and time — format with the date filter
{% unless includes_all_line_items_in_order %}
<h3>Items in this shipment</h3>
{% endunless %}
<p>Printed {{ now | date: "%B %-d, %Y" }}</p>

Sender name on shipping labels

Also under Settings → Shipping and delivery → Documents is the Sender name on shipping labels setting. Choose your store name (the default) or a custom name between 3 and 25 characters. This name is saved now so it’s ready for when shipping label purchasing is supported — it doesn’t appear on packing slips.

Next steps

Pickup in store

Slips for pickup orders carry your pickup instructions — see Pickup in store.