How the discount is applied
The bundle discount runs through a Shopify Functions discount function (Rust/WASM, with a JavaScript fallback), registered as an automatic app discount. On every cart change it:
filters bundles by the customer's Shopify Market;
with Automatic bundle assembly in cart off, considers only lines added through the widget; with it on (the default), it merges any qualifying lines even if the customer never touched the widget;
excludes free-gift lines from tier-quantity counting, and zero-prices them once their variant belongs to the currently selected option's gift set;
applies the configured discount so that checkout, order confirmation emails, and multi-currency and multi-language stores all need no extra setup — the discount is native to Shopify's own discount system, not a bolt-on.
This means the discount is automatic end-to-end: no discount code, no cashier action, and it carries through to whatever currency or language the storefront is already showing.
A legacy path exists only for stores installed before the Functions rollout. On those stores, the widget creates a temporary Shopify discount code at add-to-cart, and the app deletes expired codes on a schedule. Every current installation runs on Functions — the discount-code path is not something a new install will encounter.
Does inventory track per component?
Yes. Selling a bundle deducts inventory from each component individually, not from a single "bundle" stock figure. A bundle is out of stock as soon as any component has no stock in any variant that's part of the bundle — the bundle list flags this with a Bundle out of stock warning and related component warnings.
Multiple locations. Stock is summed across all of your locations; deduction starts at the first location and continues into the next as stock runs out. The Locations setting restricts which locations bundles are allowed to draw from.
Widget behavior when a component is out of stock. Three modes control only whether the widget is visible, not what its Add to cart button says: Show the widget only on product pages of in-stock products, Always show the widget even if some bundle products are out of stock, or Hide the widget if any bundle product is out of stock.
Out-of-stock caption. A product with inventory tracking switched off reports as available with zero stock, and the widget currently captions it Pre-order — that caption text is editable in Widget customization → Text settings → Products.
Stock level. Can optionally be shown per product inside the widget.
Cart and checkout behavior
Action after add to cart. Stay on current page, Redirect to cart, or Redirect to checkout.
Skip cart. Sends multi-product bundles straight to checkout, bypassing the cart page entirely.
Required products. For bundles without their own single cart line, removing a required component from the cart removes the bundle discount. Shopify bundles added as a single product keep their components grouped, so none can be removed individually.
Show bundle props on checkout. Surfaces component properties on the checkout page, for bundles with a product page that are added to the cart as one product.
Third-party inventory and fulfillment compatibility. Enable compatible with 3rd party inventory splits product-page bundles into separate order lines so external inventory and fulfillment apps can see and process each component. This is a global setting, applied to every bundle that has a product page. One firm limit: orders not in the store's default currency cannot be split this way — instead, a zero-cost duplicate order is created with the original order number plus an A suffix, and that duplicate is excluded from analytics.
My theme has a slide-out cart drawer — will it open after Add to cart?
Action after add to cart (Settings) has three modes: Stay on current page, Redirect to cart, and Redirect to checkout. There is no separate "open the drawer" mode, because the drawer belongs to your theme rather than to the app.
Stay on current page is the one that works with a drawer. On it, the app announces the cart change using Shopify's standard cart event, and any theme built on Shopify's current cart layer picks that up and reopens its own drawer with the new items. Older slide-cart apps that expose their own global hooks are handled too.
If your shopper is landing on the /cart page instead, check that setting first — Redirect to cart does exactly that by design. If it is already on Stay on current page and the drawer still does not reopen, your theme does not use the standard cart layer the app can detect. Request the Ajax (Slider) cart integration from Setup → Custom Features; it is set up for you on request.
Showing the discount on the cart page
This is a free custom installation rather than a switch you flip. Go to Settings → Installation → Custom Features and request Display bundle discount on the cart page; our team installs a small snippet in your theme. It only has an effect when Skip cart is off — with skip-cart on, shoppers never see the cart page at all.
There is no "you have a bundle in your cart" banner or badge feature. The only bundle message shown to a shopper is the confirmation that appears inside the widget itself right after Add to cart.
Showing each item's stock or pre-order status in the cart
There is no app setting that prints per-component stock or pre-order status on the cart page. Two settings are often mistaken for it:
Enable compatible with 3rd party inventory acts on the placed order, after checkout, and does nothing to the cart page.
The pre-order caption belongs to the product-page widget only.
What does work indirectly: on a Shopify or Physical bundle, setting Bundle products on cart and checkout page to Separate items puts each component in the cart as a real, separate Shopify line. Your theme then renders its own native stock or pre-order badge for each of those lines — that badge comes from your theme, not from us.
What the order actually contains
This follows directly from the bundle type you chose when building it (see "The kinds of bundle you can build" for the full comparison):
Widget-only bundle. Component items appear in the cart and order as themselves; there's no bundle "product" involved.
Physical bundle. Each component appears as its own separate order line.
Shopify bundle. One line in the cart, split into its components at checkout and in the order (or shown separately, depending on setup).
What happens when something changes after a bundle is built
Required product removed from cart. The bundle discount is removed.
Customer removes an auto-added gift. The gift isn't re-added automatically; it stays reachable in the free gift bubble.
Cart quantity drops below a volume option. Gifts tied to a lower option apply only if that option itself defines them — there's no fallback to a lower option's gifts otherwise.
A component goes out of stock. The bundle is flagged out of stock, and the widget follows whichever out-of-stock display mode you've set.
A component or variant is removed or unpublished. An alert appears on the bundle; the bundle product itself alerts if it's unpublished or deleted.
A new variant is created. On a fully included product, it's added to the bundle automatically, unless Add new product variants to product bundle automatically is off.
A non-default-currency order, with third-party splitting on. A zero-cost duplicate order is created (suffix A) and excluded from analytics, as described above.
Active automatic discounts exceed Shopify's account-wide limit. Bundles beyond the ceiling stop discounting, and a warning banner appears on the bundle list.
Does the bundle's price stay current if a component's price changes?
It depends entirely on bundle type, and this is worth knowing before you rely on it:
A Widget-only bundle holds no stored price at all — the widget price and the charged price are always computed from live, current data, so a stale-price problem simply can't happen on one.
Physical and Shopify bundles both write prices into a real Shopify product when built, so both hold a price snapshot from that moment. Only the Shopify bundle self-heals automatically when a component's price changes. A Physical bundle is not rebuilt by a plain price edit — it's only rebuilt when a component's variant list changes length (a variant added, removed, or renamed), so a same-length price change (say, $19.99 to $24.99) leaves the Physical bundle showing the old price until you act.
The fix that works today is to open the Physical bundle in the app and save it again — that re-reads current component prices and republishes the product. If several bundles on your store are affected, contact support and mention that you need a shop-wide resync of your Physical bundles, rather than saving each one individually — there is no self-service "Sync bundles" button in the app for this. Full mechanics are in "Keeping your bundle's prices current."
