Why does my Shopify bundle show in stock when the stuff inside it is actually sold out?

When a bundle sells, Shopify doesn't automatically know it should also subtract stock from the individual products inside it — here's what actually controls that, and how to fix it.

inventorybundleskittingproducts

What's going on

"I sell kits made up of products I also sell individually, but Shopify only tracks stock on the kit's own SKU, and the components never budge. I've oversold ingredients three times this month because the kit says in stock when the actual component is out." This is one of the most common inventory complaints from merchants who sell bundles, kits, subscription boxes, or multipacks: Shopify's core inventory system tracks stock per product or variant, and a bundle built as its own product is, by default, just another variant with its own independent quantity, completely disconnected from the products it's supposedly made of.

That disconnect causes two failure modes. First, overselling: the kit shows available stock while one of its components is actually out, because nothing told Shopify to check or decrement the component. Second, phantom stockouts: a component sells out on its own while kits containing it still show as purchasable, because the kit's inventory number was never linked to the component's.

The fix isn't a bug fix, since nothing is actually broken, it's a configuration gap. Shopify needs to be told, explicitly, that selling one kit consumes specific quantities of specific other SKUs. Whether that instruction lives in Shopify's native bundle tools, a Flow automation, or a third-party kitting app, the underlying requirement is the same: a defined bill of materials and a mechanism that enforces it at the moment of sale.

Why it happens

Shopify's inventory model is built around the product or variant as the atomic unit: every SKU has its own available quantity, and checkout only knows how to subtract from the SKU that was actually added to the cart. There's no native "this product is made of these other products" relationship built into core inventory, so a bundle product, unless something explicitly links it, behaves like any standalone item with its own independent stock count.

Shopify closed part of this gap with its own Bundles app, which creates that link for fixed bundles and automatically decrements each component's inventory on sale. But it's built for a specific case, a fixed set of components sold as one SKU, and stops short of customer-assembled kits, tiered pricing, or subscription compatibility, which is exactly the kind of setup that generates the most inventory confusion in practice.

4 ways to fix it

1

Use Shopify's native Bundles app for simple, fixed kits

If every kit is the same fixed set of items every time (a "Starter Kit" that's always Cleanser plus Toner plus Moisturizer, for example), install Shopify's own Bundles app from the Shopify App Store. It creates the bundle as its own product and automatically decrements the inventory of each component when the bundle sells, so a component that's also sold on its own won't get oversold behind the scenes. It's free to install and needs no custom scripting, but it's built for fixed combinations within certain size limits, and it doesn't handle customer-built mix-and-match kits, tiered "buy more, save more" pricing, or subscriptions.

2

Track the kit as its own SKU and decrement components with an automation

If you'd rather not add another app, you can keep the kit as its own tracked product with its own SKU, keep every component as a separately tracked inventory item, and use a Shopify Flow automation (or a manual process) to reduce each component's stock whenever a kit order comes in. This stays entirely inside Shopify's own admin and automation tools, but it's fragile: miss a step, or sell a component both inside kits and on its own without reconciling the two, and your counts will drift until you oversell or misreport stock.

3

Move to a dedicated bundling or kitting app once your setup gets complex

Once you're dealing with customer-assembled mix-and-match packs, kits fulfilled through a third-party logistics provider, or components split across multiple warehouse locations, the native tool generally isn't enough. A number of dedicated bundling and kitting apps in the Shopify App Store are built specifically to sync component stock in real time across sales channels and locations, and to break a bundle down into its individual component SKUs at fulfillment so a warehouse or 3PL gets correct pick instructions instead of one meaningless "kit" line. Compare a few against your specific catalog size and fulfillment setup before committing, since features and limits vary by app.

4

Write down your consumption and replenishment rules before picking a tool

Whichever route you take, the real fix isn't a tool, it's a decision: define exactly how many units of each component a given kit consumes, whether that ratio ever changes (seasonal substitutions, for instance), and what triggers a reorder for a component that's shared across several kits and sold standalone. Most kitting problems trace back to this never being written down, so whoever configures the app, native or third-party, ends up guessing at the rule instead of enforcing it.

Bottom line

Shopify's core inventory system has no built-in concept of a bill of materials for components — it only decrements stock for whatever product or variant actually got added to the cart. Shopify's own Bundles app closes that gap well for simple, fixed kits with automatic component decrementing, and Flow can patch in manual rules for anything a bit more custom. Once you're running mix-and-match kits, multi-location stock, or third-party fulfillment, a dedicated bundling or kitting app is usually the more practical answer than trying to force it through core admin.

Still Stuck?

Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.