Packing slip template kit

Shopify packing slip template for Order Printer.

Start with a warehouse-friendly packing slip, then add barcode, metafield, gift message, line item property, and 4x6 options only where the Shopify order data supports them.

Basic Minimal 4x6 Gift message Barcode
Packing slip #1048
|||| ||| ||||
Ship to

Avery Chen
218 Market Street
Austin, TX 78701

QtyItemSKU
2Blue ceramic mugMUG-BLUE-01
1Gift card insertINSERT-GIFT

Gift message and custom fields stay optional until the data is confirmed.

Template paths

Pick the packing slip shape before adding fields.

The first pass should prove the base layout prints cleanly. Barcode, metafield, and custom field snippets come after the core pick-pack document works.

Template option

Gift message

Gift notes and line item properties without exposing private app fields.

Gift message template tool

Template option

Custom fields

Product, variant, order, and customer metafields inside the right template section.

Custom fields template tool

Editable fields

Keep field changes inside one packing slip page until demand repeats.

Barcode, metafields, line item properties, CSS, HTML, page break, and 4x6 searches are useful, but they should first support this parent page instead of becoming separate core landing pages.

logo and store nameorder numbershipping addressSKU and quantityprice visibilitygift messagebarcode placeholdermetafieldsline item propertiespage break and 4x6 CSS

Order Printer code paths

Use the exact code page when the packing slip problem is specific.

These pages connect the parent packing slip template to the free Order Printer code generator and the common field-level fixes: metafields, barcode placement, and gift messages.

Internal code path

Free Shopify Order Printer template code generator

Start here when you need a complete Order Printer template before adding packing slip, invoice, barcode, or metafield snippets.

Free Shopify Order Printer template code generator

Internal code path

Add product metafields to a Shopify packing slip

Use this when product, variant, order, or customer metafields need to print inside the right packing slip row or section.

Add product metafields to a Shopify packing slip

Internal code path

Add barcode code to a Shopify packing slip

Generate barcode Liquid for order names, SKUs, variant barcodes, tracking numbers, and item-loop placement.

Add barcode code to a Shopify packing slip

Internal code path

Print a packing slip gift message

Find whether the gift note is stored as an order note, note attribute, or line item property before editing Liquid.

Print a packing slip gift message

Internal code path

Fix blank Shopify Order Printer metafields

Use this broader metafield guide when product, variant, order, or customer metafields do not print in Order Printer.

Fix blank Shopify Order Printer metafields

Free template builder

Generate starter Order Printer code for the packing slip.

Use the generated code as the base, then follow exact tools for barcode, metafields, line item properties, VAT, PO number, or customs fields.

Packing slip template code

Shopify packing slip template code for Order Printer

Generate a compact packing slip starter and copy the install steps.

This starter uses 4in x 6in print CSS. Browser print dialogs and thermal printer drivers can still add margins.
Standard order with one clear product row.
Need this 4x6 layout adjusted for your printer?

Thermal printers, browser scaling, long titles, and addresses can all change the fit, so the fix is scoped around your real label output.

Adjust this 4x6 layout
Validate a 4x6 starter pack

Use this when the free starter is close but you want a polished 4x6 template pack before custom work.

Request 4x6 starter pack

Need more than code snippets?

Generated Liquid

Copy-paste code

<style>
  @page {
    size: 4in 6in;
    margin: 0.12in;
  }

  body {
    margin: 0;
    font-family: Arial, sans-serif;
    font-size: 11px;
    line-height: 1.3;
    color: #111;
  }

  .opk-slip {
    width: 100%;
  }

  .opk-header,
  .opk-ship-to,
  .opk-items {
    border-bottom: 1px solid #111;
    padding-bottom: 8px;
    margin-bottom: 8px;
  }

  .opk-header {
    display: flex;
    justify-content: space-between;
    gap: 12px;
  }

  .opk-order-name {
    font-size: 18px;
    font-weight: 700;
  }

  .opk-barcode {
    max-width: 1.5in;
    text-align: right;
  }

  .opk-items table {
    width: 100%;
    border-collapse: collapse;
  }

  .opk-items th,
  .opk-items td {
    padding: 4px 0;
    text-align: left;
    vertical-align: top;
  }

  .opk-qty {
    width: 28px;
    font-weight: 700;
  }

  .opk-item-title {
    overflow-wrap: anywhere;
  }

  .opk-sku {
    width: 82px;
    font-size: 10px;
  }

  .opk-muted {
    color: #555;
  }
</style>

<div class="opk-slip">
  <div class="opk-header">
    <div>
      <div class="opk-order-name">{{ order.name }}</div>
      <div>{{ order.created_at | date: "%b %d, %Y" }}</div>
    </div>
    <div class="opk-barcode">
      <s-barcode value="{{ order.name }}" />
    </div>
  </div>

  <div class="opk-ship-to">
    <strong>Ship to</strong><br>
    {{ shipping_address.name }}<br>
    {{ shipping_address.address1 }}{% if shipping_address.address2 != blank %}, {{ shipping_address.address2 }}{% endif %}<br>
    {{ shipping_address.city }}, {{ shipping_address.province_code }} {{ shipping_address.zip }}<br>
    {{ shipping_address.country }}
  </div>

  <div class="opk-items">
    <table>
      <thead>
        <tr>
          <th class="opk-qty">Qty</th>
          <th>Item</th>
          <th>SKU</th>
        </tr>
      </thead>
      <tbody>
        {% for line_item in line_items %}
          <tr>
            <td class="opk-qty">{{ line_item.quantity }}</td>
            <td class="opk-item-title">{{ line_item.title }}</td>
            <td class="opk-sku">{{ line_item.sku | default: "No SKU" }}</td>
          </tr>
        {% endfor %}
      </tbody>
    </table>
  </div>

  {% if note != blank %}
    <div class="opk-note">
      <strong>Order note</strong><br>
      {{ note }}
    </div>
  {% endif %}
</div>

Install wizard

Place the snippet before testing output.

1
Template area

New full template

2
Paste target

Replace a duplicate 4x6 test template, not the live invoice first.

3
Test order

One, three, and five item orders on the target printer

Paste location

Use this as a duplicate full template first, then tune margins in the browser and printer driver.

Test checklist

  • Duplicate the Shopify Order Printer template before editing the live one.
  • Preview with the regular order.
  • Test actual size or 100% scale before fit-to-page in the print dialog.
  • Print or save one test preview before using the template in production.

Common failure

  • Using invoice-only content on warehouse packing slips.
  • Forgetting to test long product names and multi-item orders.
  • Pasting line item fields outside the loop that renders products.

Mock preview

#1048|||| ||| ||||
Avery Chen
218 Market Street, Austin, TX
2Blue ceramic mugMUG-BLUE-01

Pack with care. Gift note included.

Troubleshooting

Fold field-intent searches into the template workflow.

Barcode prints blank

Fix
Check whether the value is order-level or line-item-level before placing the snippet.

Metafield does not show

Fix
Confirm owner object, machine namespace/key, line item placement, and .value output.

Gift options leak private data

Fix
Filter underscore-prefixed line item properties and whitelist only visible options.

4x6 slips overflow

Fix
Test long product names, multi-line orders, browser scaling, and print margins.

Prices appear on packing slips

Fix
Use a no-price template path unless the document is intentionally customer-facing.

Page breaks split item rows

Fix
Keep item rows together in CSS and preview orders with many line items.

Free path

Use the starter template when the base document is enough.

Copy the packing slip code, preview single-item and multi-item orders, then add one snippet at a time. This is the best path for merchants testing a no-price warehouse slip.

Paid path

Request a fix when the current template is already custom.

Send the current code when the template has existing tables, CSS, app fields, bundle properties, or customer-facing requirements that make a safe paste harder.

Send packing slip request

FAQ

Shopify packing slip template questions

Can Shopify packing slips be edited?

Yes. Shopify Order Printer templates can be edited with Liquid and print CSS. Work in a duplicate template and preview real orders before replacing a live packing slip.

Should a packing slip include prices?

Most warehouse packing slips hide prices. Use price fields only when the document is meant to work as a customer receipt or invoice-like printout.

Can I add barcodes to a Shopify packing slip template?

Yes. Order-level barcodes usually go near the header. SKU and variant barcodes belong inside the line item loop.

Can this replace a full invoice app?

No. This page is for Order Printer template code and small fixes. Full invoice automation, emails, hosted PDFs, B2B tax logic, or e-invoicing usually need a dedicated app.