Bundles & kits, explained

Shopify Bundle Inventory: Why Bundles Go Out of Stock First

In a bundle-heavy store, one component SKU quietly feeds several kits at once. Your Shopify bundle inventory looks healthy right up until that one shared component hits zero — and suddenly every kit containing it is unsellable. Here's the component-demand math that catches it early, with a worked example you can copy.

A practical guide from the team behind Replenish · updated for 2026

A bundle stockout never breaks just one product. The bundle itself goes dark the moment any single component runs out — and because the same component usually sits in more than one kit, a single SKU hitting zero can take three or four saleable products offline at the same time. If that component happens to be in a subscription box, the stakes climb again: a missed shipment isn't one lost sale, it's recurring revenue put at risk.

The frustrating part is that your low-stock alerts probably never fired. A flat per-SKU alert watches each component's own sales rate — it has no idea the component is also being drained through every bundle that contains it. The fix isn't more alerts. It's computing the component's true demand, bundles included, and setting the reorder point on that number.

Watch · 40 seconds

One SKU. Five products.

The problem

Why did my bundle go out of stock?

Because a component did — and the component was selling far faster than any single report showed.

A bundle is sellable only while every component is in stock. So bundle availability is hostage to the weakest component — and the weakest component is usually the shared one, because it's being consumed from several directions at once:

  • Direct sales — customers buying the component on its own product page.
  • Every bundle that contains it — each kit sale silently consumes its share of the component.

Shopify decrements the inventory correctly when bundles sell. What it doesn't do is tell you the component's combined burn rate — so a low-stock threshold set against standalone sales watches the slowest of the demand streams and misses the rest. The alert flags one SKU, late; several products break at once.

The mechanics

Component demand: the number that's actually true

Every bundle sale decomposes into component demand. Add up all the streams and you get the component's real velocity.

Total component demand = direct sales/day + Σ (each bundle's sales/day × units per bundle)
One row per bundle. The reorder point gets computed on the total, not the direct rate.

Three inputs, all already in your store data:

  • Direct velocity — units/day the component sells on its own.
  • Each bundle's velocity — units/day each kit containing the component sells.
  • Units per bundle — how many of the component go into one kit (a gift set might use 2 of the same item).

If a kit sells 5 a day and uses 2 of the component per kit, that bundle alone pulls 10 components a day — on top of whatever the component sells directly. Miss that decomposition and every downstream number (days of stock, reorder point, order quantity) is computed against a fiction.

Worked example

Putting real numbers in

Take one shared component — say a bottle of vanilla syrup that's sold solo and also goes into four gift kits.

Your inputs

Direct sales (standalone product page)3 / day
Bundles containing it4 gift kits
Each kit sells2 / day
Syrup per kit1 bottle
Bundle demand = 4 kits × (2/day × 1 per kit) = 8 / day
Total demand = 3 + 8 = 11 / day
The standalone report says this product moves 3 a day. Reality is 11 a day — any reorder point computed on 3/day is about 3.7× too low.
This is what the trap looks like from the shelf: 40 bottles on hand "looks like" 13 days of stock at 3/day. At the real 11/day it's under 4 days — and when it hits zero, all four gift kits go out of stock together, in the same hour, while the syrup's own low-stock alert is still days away from firing.
The trigger

The reorder point, on the component's total pull

Same reorder point formula as any other product — the only change is which velocity you feed it.

Reorder point = (total component velocity × supplier lead time) + safety stock
When the component's stock on hand drops to this number, place the order.

Run the syrup through it with a 14-day supplier lead time and 7 days of safety stock:

  • Lead-time demand: 11/day × 14 days = 154 units
  • Safety stock: 11/day × 7 days = 77 units
  • Reorder point: 154 + 77 = 231 units — equivalently, 11 × (14 + 7)

Now the same calculation on the standalone 3/day: 3 × (14 + 7) = 63 units. That trigger looks reasonable on paper — but 63 units is under 6 days of cover at the real 11/day rate, against a 14-day wait. Order at 63 and you're dark for roughly 8 days, across every kit that uses the syrup.

And how much to order? Order on time — the day stock touches the 231-unit reorder point — and the quantity works out to exactly your lead-time demand at the total rate: 11/day × 14 days = 154 units. The point is the trigger; the lead-time demand is the order. The full when-vs-how-much logic (including safety stock and what happens when you order late) is in our guide to when to reorder inventory on Shopify.

Where it goes wrong

The anatomy of a bundle stockout

Two mistakes cause almost every one of them — and both live in the inputs, not the formula.

Mistake 1

Reorder points set on standalone velocity

The component's own sales page says 3/day, so that's what goes into the spreadsheet — while four kits quietly pull another 8/day through the back door. Every number downstream inherits the error: days of stock reads 13 when it's under 4, the reorder point lands at 63 instead of 231, and the alert fires after the kits are already dark.

Mistake 2

Forgetting the long-lead import inside an everyday kit

Bundle-heavy stores often have one imported ingredient or part with a long lead time — say 21 days — sitting inside kits that sell daily. At the true 11/day, the reorder point is 11 × (21 + 7) = 308 units. Computed on the standalone 3/day it's 84 — under 8 days of cover at the real rate against a 21-day wait. That's roughly 13 days with every kit containing that component unsellable.

The shortcut

Or let the decomposition run itself — and show its work

You can maintain this in a spreadsheet: one row per component, one column per bundle, re-checked every day as velocities drift. For a handful of kits it works. Past that, it's exactly the kind of bookkeeping software should own. That's what Replenish does: it reads your Shopify sales history and bundle definitions, decomposes every bundle sale into component demand, and computes each component's reorder point on its total velocity — with the per-bundle breakdown visible, not buried:

Reorder 231 units of Vanilla Syrup. Direct sales are 3 per day — but the Holiday Kit, Brew Bundle, Gift Box, and Starter Set together pull another 8 per day, so true demand is 11 per day. Your supplier takes 14 days, plus your 7-day buffer: order the moment stock touches 231.

Because the numbers are deterministic arithmetic — not an AI guess — you can verify every line against the math on this page. Bundle-aware demand ships in the Growth plan ($29/mo); every plan starts with a 14-day free trial.

FAQ

Common questions

How does Shopify bundle inventory tracking work?
Every bundle sale consumes its components, so a component's true demand is its direct sales plus what every bundle pulls: total demand = direct velocity + the sum of (each bundle's sales per day × units of the component per bundle). Example: a component selling 3/day on its own that also sits in 4 bundles, each selling 2/day with 1 unit per bundle, really moves 3 + 4 × 2 = 11 units per day. Any reorder point computed on the 3/day standalone rate is about 3.7× too low.
Why did my bundle go out of stock when the components looked fine?
A bundle is sellable only while every one of its components is in stock, so the moment one shared component hits zero, every kit containing it goes out of stock at once. It feels sudden because the component was being drained by several bundles at the same time, while your low-stock alert was set against its standalone sales rate — 3/day instead of the real 11/day in our example — so the warning fired far too late, or never.
What is a bundle stockout?
A bundle stockout is when a bundle becomes unsellable because one of its components ran out, even though every other component is still on the shelf. Because one component often feeds several kits, a single SKU hitting zero can take multiple saleable products offline simultaneously — and if that component is in a subscription box, a missed shipment also puts recurring revenue at risk.
How do I set a reorder point for a bundle component?
Use the standard reorder point formula — (daily velocity × supplier lead time) + safety stock — but feed it the component's total velocity, bundles included. Example: at a true 11/day with a 14-day lead time and 7 days of safety stock, the reorder point is 11 × (14 + 7) = 231 units. Compute it on the 3/day standalone rate instead and you get 63 — under 6 days of cover at the real rate, which against a 14-day lead means roughly 8 days of stockout across every kit that uses the component. The base formula is explained step by step in our when-to-reorder guide.
How much should I reorder for a bundle component?
Order on time — the day stock touches the reorder point — and the quantity works out to exactly your lead-time demand at the total rate: 11/day × 14 days = 154 units in our example. The reorder point (231) is the trigger that tells you when; the lead-time demand (154) is how much. The only difference from a normal product is that both numbers must be computed on the component's total velocity, bundles included.
What about imported components with long lead times?
Long lead times amplify the error. Take the same component (3/day direct + 8/day through kits = 11/day) sourced from an importer with a 21-day lead time and 7 safety days: the reorder point is 11 × (21 + 7) = 308 units. Computed on the standalone 3/day it would be 84 — under 8 days of cover at the real rate against a 21-day wait, which is roughly 13 days with every kit containing that component unsellable.

Stop letting one SKU break four products.

Replenish decomposes every bundle sale into component demand and computes each reorder point on the component's true total velocity — with the math shown for every recommendation. Built as a Stocky replacement, from $10/mo.

Install Replenish on Shopify

From $10/mo · 14-day free trial on every plan · no credit card required during trial