Overview
You can show Shopify bundle names on packing slips by printing each component’s group title inside the existing shipment-item loop. Keep the component names, SKUs and shipped quantities visible so your team can still see exactly what to pack. This guide covers the Liquid change, partial-shipment checks and the limits around parent bundle SKUs and external fulfillment templates.
Contents
- Which bundle details can a Shopify packing slip show?
- Step 1 - Back up the correct packing slip template
- Step 2 - Add the bundle name beside its components
- Step 3 - Keep component quantities specific to the shipment
- Step 4 - Test bundle labels and component lines
- What are the limits of this packing slip change?
Which bundle details can a Shopify packing slip show?
A packing slip should answer two practical questions: which products go in this parcel, and which offer do they belong to? Adding a bundle label gives your packing team that context without hiding the individual items.
Distinguish the bundle name from component and parent SKUs
A bundle name identifies the set; a component SKU identifies an item to pick. A warehouse that scans beans and mugs still needs those component codes, even when the customer bought a coffee set. Treat the parent bundle SKU as a separate requirement rather than substituting it for every item.
Check whether the order exposes bundle group data
Shopify’s packing-slip reference documents group titles on shipment lines. The code below relies on that data being present. If an app represents the offer differently, check a sample order before assuming the same label can be recovered from its product names or custom properties.

Step 1 - Back up the correct packing slip template
Save a copy before editing. A small insert is easier to review and reverse than a complete replacement of a template your team already uses.
Locate Shopify’s packing slip template
- Open Settings > Shipping and delivery.
- In Documents, open Packing slip template.
- Copy the full template to a backup file.
- Find the existing
for line_item in line_items_in_shipmentloop and its product-description area.
Shopify explains this location in its printing and editing instructions. Keep the surrounding layout, addresses and quantity output intact while you locate the insertion point.
Separate packing slips from Order Printer and order emails
Confirm which tool produces the document your team actually prints. This guide covers Shopify’s native packing-slip template. Our order-confirmation email guide covers a different template surface; its grouped-email objects should be pasted only into the appropriate email template.
If staff print through Order Printer or a fulfillment platform, identify that tool’s template first. Editing an unused native template will not resolve the document they are seeing.
Step 2 - Add the bundle name beside its components
Insert the following fragment inside the existing shipment-item loop, beside the component description. It adds a label; it does not create another list of products.
Use line_item.groups and group.title for the bundle label
{% for group in line_item.groups %}
<span class="line-item-description-line">
{% if group.deliverable? %}
Add-on for: {{ group.title | escape }}
{% else %}
Part of: {{ group.title | escape }}
{% endif %}
</span>
{% endfor %}
Keep the existing title, variant and SKU output around this insert. The escape filter prevents a group name containing characters such as & or < from being treated as HTML. Do not paste a second outer shipment loop below the existing one, which would repeat the products.
Distinguish bundle groups from nested add-ons
The branch matters: Shopify distinguishes bundle membership from an add-on relationship. Without it, an accessory could be labelled as part of a bundle incorrectly. An ordinary item with no group produces no extra label.
If your template already prints group information, update that existing block rather than adding a second copy. Save the change, then compare an actual order with the original output.
If the label stays blank, check the insertion point and the order’s actual group data separately. A product title containing “bundle” does not establish a group relationship. Keep the component lines visible while investigating; an absent label should not remove products from the pick list.

Step 3 - Keep component quantities specific to the shipment
A readable bundle title does not make an incorrect quantity safe. Review the quantity cell separately, especially if your warehouse sends one order in several parcels.
Choose shipping_quantity rather than the total ordered quantity
Use shipping_quantity for this parcel. To show it alongside the ordered total, use this expression in the existing quantity position:
{{ line_item.shipping_quantity }} of {{ line_item.quantity }}
For example, “1 of 2” tells the picker that this parcel contains one unit from an order for two. Avoid adding another quantity column if the same information is already shown clearly.
Check a bundle split across more than one shipment
Check each shipment independently. You can add this notice outside the item loop so it appears once:
{% unless includes_all_line_items_in_order %}
<p>Some items from your order are not included in this shipment.</p>
{% endunless %}
Keep the bundle label attached to the component lines that are present. Do not print a complete-set checklist suggesting that missing components are inside the parcel. Ask the packing team to compare the slip with the shipment they are preparing, rather than only reviewing an order-wide preview.
Step 4 - Test bundle labels and component lines
Use controlled examples with known expected results. The following is a verification plan for your store, not a claim that your template or fulfillment integration has already passed.
Compare two bundles, repeated bundles and a standalone item
- Two different bundles: each component receives the correct set name.
- Repeated bundles or shared components: labels and quantities remain understandable without inventing a unique group identifier.
- A standalone product: no misleading bundle label appears.
- A split shipment: only the quantities for that parcel are presented as shipped.
Also try a long bundle title and a title containing an ampersand. Check the saved PDF and printed layout for wrapping, repeated lines and labels that run into the quantity column. A screen preview alone can miss a poor page break.
Verify app-created bundle groups before claiming compatibility
For an app-created bundle, including a Biscuits Bundles order, inspect the actual component lines and group output before applying the same pattern broadly. A grouped storefront cart does not by itself prove what every packing or export tool receives.
If the external warehouse needs a different record structure, use our bundle fulfillment and ERP comparison to frame that separate integration question. Keep the picking details on the slip while you investigate.
What are the limits of this packing slip change?
Can the template show the parent bundle SKU?
The native group reference documents a title, not a parent bundle SKU field. Do not invent group.sku or assume that printing the title also retrieves that SKU. If your warehouse requires the parent code, establish a supported data source for that exact order and template before adding it.
Will a third-party fulfillment app use this template?
That depends on which template the app uses. A change to Shopify’s native packing slip does not establish compatibility with a separate document renderer. Confirm the source template with the provider and test one representative order. Keep the backup until the packing team has reviewed the result.