Inventory Planning for Shopify Product Variants
A ten-variant product is ten forecasts, not one. How to plan size and colour curves, handle thin per-variant history, and stop one variant killing the rest.
Shopify tracks inventory at the variant level, so a candle sold in five sizes is not one planning problem with a dropdown on top. It is five stock numbers, five reorder points, and five separate ways to be out of stock while the product page still says available.
The trouble is that the history you want to forecast from lives at the top of that structure and the stock you have to buy lives at the bottom. This post is about moving between the two: when to forecast the parent and split it, when to forecast a variant directly, and what wrecks the split. Turning tracking on per variant in the first place is covered in the inventory tracking setup guide, and bundles, where one sale consumes several variants at once, are a different problem again.
The variant problem
Here is one product, twelve weeks, five sizes. The parent sold 600 units across the quarter, an even 50 a week.
| Variant | 12-week units | Share | Per week |
|---|---|---|---|
| Cedar & Fig 250g | 420 | 70% | 35 |
| 160g | 96 | 16% | 8 |
| 400g | 48 | 8% | 4 |
| 700g | 24 | 4% | 2 |
| 90g | 12 | 2% | 1 |
At parent level this product is about as well behaved as inventory gets. Its twelve weekly totals run 47, 54, 47, 49, 60, 46, 53, 50, 49, 52, 42, 51: an average of 50 with a coefficient of variation of roughly 0.09. Any method you like will forecast that.
Now look underneath. The 700g's twelve weeks are 0, 3, 0, 0, 6, 1, 6, 2, 0, 4, 0, 2. Same product, same customers, same quarter, and a coefficient of variation of about 1.1. Five of its twelve weeks are zeros. The 90g is worse: 0, 0, 2, 5, 0, 3, 0, 0, 1, 0, 0, 1, which is twelve units in a quarter arriving in four bursts.
Forecast the parent or the variant
The default that works for most catalogues is aggregate then split. Forecast the parent, where the history is stable, then divide the answer by the variant mix. On the numbers above, a twelve-week forecast of 600 units splits into 420 of the 250g, 96 of the 160g, 48 of the 400g, 24 of the 700g and 12 of the 90g. The split adds back to 600 by construction, which is the quiet advantage of the method: your variant plan can never total more or less than your product plan.
Forecast a variant directly when it has enough of its own signal to carry a method. The 250g at 35 a week does. The 160g at 8 a week probably does. The 400g, 700g and 90g do not, and running a moving average over a series with five zeros in it produces a number that is arithmetically correct and operationally useless. That pattern has its own planning approach, and it is not a forecast in the usual sense.
Forecast where the signal is. Buy where the stock sits.
The failure mode of aggregate-then-split is that it treats the mix as a fact when it is an estimate with a shelf life. Everything that follows in this post is about that estimate.
Size and colour curves
The mix is your splitter, and it is worth computing on purpose rather than lifting from whatever date range your report defaulted to. Two rules make it usable.
Compute it over a clean window. Weeks where a variant was out of stock do not belong in a mix calculation, for the reason set out two sections down. Neither do weeks where one variant was discounted and the others were not, because you measured the promotion and not the preference.
Watch for the mix moving. Compare the last four weeks' mix against the trailing twelve. If the 400g has gone from 8% to 12% of volume and you keep splitting on the old curve, a 600-unit buy sends 24 units to the wrong sizes: 48 of the 400g instead of 72, with the difference landing on variants that did not ask for it. Twenty-four units is six weeks of that variant's sales, so the error is not a rounding matter.
Sizes and colours behave differently as splitters and it helps to keep them apart. A size curve reflects the bodies or the shelf space of the people buying, and it tends to hold from one buy to the next. A colour or scent mix reflects what people currently want, so it can move for reasons that have nothing to do with the last twelve weeks: a new release, a change in the photography, a colour that a competitor made popular. Where a product has both, split by size first, since that is the more stable axis, and treat the colour split as the one you re-check every buy.
Thin-history variants
Two kinds of variant have too little history to forecast: the brand new one, and the permanently slow one. They need different answers.
For a new colourway or size, borrow a mix instead of inventing a number. If the last colourway you launched settled at 9% of the product's volume by week eight, that is a better starting estimate than anything a spreadsheet can derive from four data points, and it comes with a review date attached. The general case of planning with no history at all is covered in forecasting for new products.
For a permanently slow variant, the constraint is usually not the forecast. The 90g sells 12 units a quarter. If the supplier's minimum is 50 units, one order is roughly fifty weeks of cover, and no amount of forecasting precision changes that. The decision in front of you is whether to carry it at all, not what to predict for it.
Substitution between variants
A stocked-out variant does not simply record zero. Some of the customers who wanted it buy the size either side instead, so the stockout pushes demand sideways into the neighbours and both readings end up wrong.
Take the same twelve weeks with a three-week stockout on the 250g. The 250g sells 9 weeks at 35 rather than 12, so 315 instead of 420. Over those three weeks the 160g sells 42 instead of its usual 24 and the 400g sells 18 instead of 12. Twenty-four of the 105 missing candles came back as sales of another size, and the rest walked. Product total for the quarter: 519, not 600.
Now recompute the mix on that window. The 250g reads 60.7% instead of 70%, the 160g reads 22.0% instead of 16%, the 400g reads 10.4% instead of 8%. Split your next 600-unit buy on those shares and the 250g gets 364 units where it needed 420, and the 160g gets 132 where it needed 96. The 250g is 56 units short, which is a week and a half of its sales, and the 160g is 36 units long, which is four and a half weeks of extra cover on a variant that did not need it.
weeks the 250g was out of stock
units short on the next buy, from the distorted mix
surplus units sent to the 160g instead
The stockout you already had has booked you a second one. The fix is unglamorous: keep a note of which variants were unavailable and when, and exclude those weeks from any window you calculate a mix over. Nothing in a sales report tells you the difference between a week of no demand and a week of no stock, so that note has to come from you.
Reorder points per variant
The arithmetic is the same one the reorder point formula guide works through, applied once per variant rather than once per product. Shopify tracks a quantity per variant per location, and that pair is the smallest unit of stock the platform has, so it is also the smallest unit a trigger can sit on.
What changes with variants is the shape of the answers. On a 12-day lead time, the 250g at 5 units a day has a lead-time demand of 60 units and a reorder point that behaves the way the textbook says. The 700g at 2 units a week has a lead-time demand of about 3.4 units. A trigger of "3.4 plus a buffer" on a variant that arrives in a case of 24 is a formula answering a question the supplier will not accept. For the long tail, the practical trigger is stated in whole cases: order one case when stock falls below one case. Precision below the size of the smallest order you can place is decoration.
Pruning a variant
Adding a variant is a product decision. Keeping one is an inventory decision, and it gets reviewed far less often than it should.
- What share of the product does it hold? A variant under a few percent of volume is carrying a fixed cost in attention, counting and shelf space against a small return.
- Do its buyers substitute? If a customer who cannot get the 90g buys the 160g, dropping it costs you very little. If they leave, it costs you the whole order.
- How does the minimum order compare to the sell-through? The 90g moves 12 units a quarter at $18, so $216 of revenue, while one 50-unit order at $7 puts $350 of cash on the shelf. The order outlasts the quarter's revenue by a wide margin.
- Does it anchor the range? A large size that hardly sells can still make the mid size look like the sensible choice. That is a merchandising argument, and it is a legitimate reason to keep a slow variant, as long as you make it deliberately.
The platform is not what limits you here. Shopify raised its variant ceiling to 2,048 per product on 15 October 2025, up from a long-standing limit of 100, while leaving the number of options per product at 3. Shopify's own developer changelog attaches a caveat to that increase: merchants using older apps that are not aligned with the current GraphQL product APIs may encounter degraded functionality on products above 100 variants. So the ceiling is high, the option count did not move with it, and expanding past 100 variants is a decision to test your apps as well as your buying. Running that many stock pools well is a separate discipline, covered in inventory planning for high-SKU stores.
Recomputing a mix, a forecast and a reorder point per variant is the kind of work that is fine for one product and impossible for four hundred. StockCue calculates velocity and a reorder point for every tracked variant from your own order history and recalculates them nightly, with forecasting on every plan including Free, where it covers your top 50 variants by sales velocity.
Frequently Asked Questions
Should I forecast at the product level or the variant level?
Usually both, in that order. A parent product's combined history is steadier than any single variant's, so forecast the parent first, then split that number across variants using the recent sales mix. Then sanity-check the split against each variant's own history, and forecast a variant directly only where it has enough sales of its own to support one. Whichever way you forecast, you buy and hold stock per variant, because that is the level Shopify tracks inventory at.
How do I forecast a new colourway with no sales history?
Borrow a mix rather than inventing a number. Take the share of volume that a comparable variant held at the same point in its life, apply it to the parent product's forecast, and buy the smallest quantity your supplier will sell you. The first four to six weeks of real sales are the data collection, not the plan, so review it on a short cycle instead of waiting for a normal quarterly review.
Does a stocked-out size distort demand for other sizes?
Yes, in both directions. The stocked-out variant records zero demand it actually had, and some of that demand shows up as extra sales on the sizes either side of it, which inflates their share of the mix. If you then compute your next size split over a window that contains the stockout, you under-buy the size that ran out and over-buy its neighbours. Exclude stockout weeks from the window you calculate the mix over.
How many variants is too many for one product?
Shopify raised the platform ceiling to 2,048 variants per product on 15 October 2025, with the number of options still capped at 3, and its own developer changelog warns that apps not aligned with the current GraphQL product APIs may show degraded functionality on products above 100 variants. The planning limit sits well below the platform limit. Every variant is a separate forecast, a separate reorder point and a separate pile of cash, so the useful question is how many variants you can actually keep in stock rather than how many the product page will hold.
STOCKCUE
A five-size product is five reorder points that all drift at different speeds. StockCue keeps a velocity figure and a reorder point per variant, recalculated nightly from your own sales history, so the slow sizes stop being the ones nobody checks.
Install StockCue on Shopify →