What the order looks like
A customer buys "Hair Care Set" (2× shampoo + 1× conditioner, bundle price $45):
| LINE ITEM | SKU | QTY | PRICE | ATTRIBUTES |
|---|---|---|---|---|
| Shampoo | SHAMPOO-250 | 2 | $12.50 | _bundle_parent: HAIR-SET |
| Conditioner | COND-250 | 1 | $20.00 | _bundle_parent: HAIR-SET |
The fulfillment order (what your 3PL's Shopify integration imports) lists the same component lines. Inventory decrements on the components, never on a phantom bundle SKU.
Why this matters: the failure mode we designed against
Most bundle apps work at the presentation layer: the order contains one "Bundle" line, and either your 3PL can't map it to pickable items, or the app edits the order after creation to swap in components. Post-order editing races your 3PL's import: if they pull the order before the rewrite lands, they ship the wrong thing. Peak-season order volume makes the race worse exactly when mistakes are most expensive.
Solid Bundles uses Shopify's Cart Transform API: the expansion happens inside checkout, so there is no moment where the order exists without component SKUs. There is nothing to race.
Provider notes
- ShipBob / ShipHero / Shipmonk / Amazon MCF: standard Shopify order import picks up component lines automatically. No kitting configuration needed unless you physically pre-kit.
- Pre-kitted stock: if you physically pre-assemble bundles and stock them as one unit, a fixed-bundle app isn't what you want. Create a normal product with its own SKU instead. Solid Bundles is for pick-from-components fulfillment.
- Barcode workflows: component lines carry the variant's own barcode fields; scanners resolve normally.
- Partial refunds/returns: refunds hit specific component lines, so your 3PL's return processing maps 1:1.
Verify it yourself
App → Verification runs real test carts and shows resulting totals per market. For a full dry run: place a test order (Bogus Gateway on a dev store, or a 100% discount code) and inspect what your 3PL portal imports.
Forward one test order to your 3PL before going live. If their portal shows real component SKUs, the integration is done. Questions about your setup? Email [email protected].
View on the App Store