Documentation
Bundle Types
Flex Bundles supports three bundle types. You choose one when you create a bundle, based on whether the contents are pre-set, built by the customer, or given away for free.
Fixed Bundles
Pre-configured bundles with a set list of components. The bundle is attached to a parent product variant: when a customer adds that variant to the cart, its components are automatically included.
Fixed bundles are ideal for curated sets and seasonal offerings where you decide exactly what goes in the box. Components are sold at their normal prices.
Because the bundle lives on the parent variant, fixed bundles work without any custom theme development.
Expand bundle on order edits
Fixed bundles are expanded into their components by Shopify's Cart Transform during checkout. Some orders never go through checkout with the bundle in the cart: post-purchase offers (the one-click add shown after payment and before the thank you page) add the product to the existing order through an order edit, and orders from marketplaces and channels such as TikTok Shop, Amazon, and the Shop app are created outside Shopify checkout. On those orders the bundle arrives as a single parent line item with no components.
Each fixed bundle has an Expand bundle on order edits setting in the bundle editor, below the components list. When it is on, Flex Bundles watches for that bundle's parent variant arriving on an order without its components and expands it after the fact using Shopify's Order Editing API:
- The component variants are added to the order at their bundle quantities.
- The parent line is removed and its inventory restocked, since that variant was never physically sold.
- Per-line discounts are applied so the component prices sum to exactly what the customer paid for the parent line, allowing for any discount codes Shopify re-applies to the added lines and for per-line tax rounding.
- The edit is committed. The customer is not charged or refunded anything.
The setting is off by default and per bundle. Leave it off if you handle expansion through your own integration.
Orders are tagged so you can find them:
| Tag | Meaning |
|---|---|
flex-bundles-expanded |
The bundle was expanded on this order |
flex-bundles-expanded-skipped |
The bundle could not be expanded, for example a component was out of stock or Shopify rejected the order edit. Review the order manually |
flex-bundles-expanded-unbalanced |
The expansion committed, but the order's balance no longer matches what the customer paid. Correct it in the Shopify admin |
Expanded orders also receive the flex-bundles-has-bundle tag and the $app:bundle_breakdown metafield, so they are counted in bundle analytics like any other bundle order. Orders placed in a currency other than your store currency are left untouched.
Flex Bundles
Customer-built bundles. Instead of a fixed set of components, customers choose the products that go into the bundle themselves, which is how you build mix-and-match and "build your own" experiences.
Flex bundles are added to the cart through Shopify's Cart API using line item properties. Each flex bundle is set to one of two pricing modes in the bundle editor:
- Parent price: the bundle is priced from the parent variant, with an optional discount.
- Component sum: the bundle price is the sum of the selected components' prices.
The mode is stored on the bundle rather than read from the cart request, so a tampered request can't switch it. See Pricing Modes.
Flex bundles require custom theme development to build the selection UI. See the Cart API Integration guide for the request format, and Customization for theme integration.
Free Bundles (Shopify Plus)
Free bundles let you add a line item to the cart at no charge, for gift-with-purchase (GWP) style promotions. The free item is flagged with the _is_free: true line item property when it is added to the cart.
This type requires Shopify Plus.
Choosing a type
| Type | Contents | Plan |
|---|---|---|
| Fixed | A set list you define | Any |
| Flex | Chosen by the customer | Any |
| Free (GWP) | A free gift line item | Shopify Plus |
You pick the bundle type when you create a new bundle from the app dashboard.