FoxrFoxr

Troubleshooting order templates

The SKU is blank, lines aren't grouping, or the preview looks wrong — what each symptom means.

The SKU is missing in the template preview

Expected. Shopify's packing slip and notification previews render fake line items with no line item properties, so Bundle SKU and _bundle_id are both empty there and nothing groups.

Test with a real order instead:

  • Packing slip — Orders → open a real order with a bundle → More actionsPrint packing slips.
  • Notification — place a test order, then Orders → the order → Resend email.

The SKU is missing on a real order

Work down this list:

Is the setting on? Bundle builder → Builder Settings → General Settings → Advanced settings → Add the bundle SKU to each product in the order. See Turn on the bundle SKU.

Does the parent product have a SKU? The app never invents one. Publish once to create the parent product, then set its SKU in Shopify admin.

Did you publish after turning it on? Builder settings only reach the storefront when the builder is published. (A SKU edit on the parent product syncs on its own — it's the switch that needs a publish.)

Was the order placed before the change? Properties are stamped at add-to-cart. Existing carts and past orders keep the old set — place a fresh test order.

Lines aren't grouping

  • Check for _bundle_id. Open the order in admin and look at the line item properties on a component. Underscored properties are always visible there. If _bundle_id is absent, the item wasn't added through a bundle builder.
  • Check your property syntax. line.properties["_bundle_id"] and line.properties._bundle_id both work; line.properties.Bundle SKU does not — a name with a space needs the bracket form.
  • Check the loop variable. Packing slips use line_items_in_shipment; notifications and Order Printer use line_items; themes often use item. A snippet copied from the wrong page loops over nothing and silently prints nothing.
  • Check line_item.groups. It exists on packing slips only. In Order Printer or a theme it's always empty, so those snippets group by _bundle_id alone.

Two boxes render as one group

They shouldn't — each box gets its own _bundle_id. If they merged, you're probably grouping by _bundle_builder_id (which identifies the builder, not the box) rather than _bundle_id.

One box renders as two groups

The opposite problem, and usually the same cause in reverse: mixing key sources. On packing slips, resolve the key once per line — native group title first, _bundle_id as the fallback — and use that single value in every loop, exactly as the packing slip snippet does.

The bundle name says "Bundle"

That's the last fallback in the chain, and it means none of the name sources were present on the line. It's harmless. If the name matters to you, the reliable identifier on the line is the SKU — turn it on and lead the header with it.

Prices don't add up

Sum final_line_price across the components, never price or original_line_price. final_line_price already includes bundle pricing and any of your own automatic discounts, so the group total matches what was charged. The bundle parent line no longer exists on the order, so there's nothing else to read the total from.

A bundle splits across two printed pages

Add page-break-inside: avoid; to your bundle group's CSS class. It's included in the packing slip CSS.

I broke the template

  • Notifications — Settings → Notifications → the notification → Revert to default. This discards all customizations in that template, not just yours.
  • Packing slip — there's no revert button. Paste back the copy you saved before editing.
  • Theme — Online Store → Themes → → the older version, or discard the changes in the code editor's file history.

What support can and can't do

We can confirm which properties are on your order lines and what they mean. We can't write or debug Liquid in your store's templates — those belong to your store, and a template edit can affect far more than bundles.

On this page