OPERATIONS · DATA · ANALYTICS · 13 JULY 2026 · 8 MIN READ
Inventory forecasting for a store with seasonality
Every default inventory metric assumes a flat sales rate. On a seasonal catalogue that assumption is wrong in exactly the weeks the decisions get made.
Forecast the *shape* of last year rather than its total, and forecast at the horizon of your supplier lead time rather than by calendar month. A seasonal store’s decisions are made before the season, so the useful question is never “how much will we sell this year” — it is “how much do we need to commit on the last date we can still commit”. Then segment: only a handful of products deserve a real forecast, and the rest need a reorder rule and nothing more.
IN SHORT
- Shopify’s “days of inventory remaining” is stock divided by the average quantity sold per day over the selected period, so it is optimistic going into a peak and pessimistic coming out of one.
- Shopify grades products by revenue contribution: A-grade products “collectively account for 80% of your revenue”, B-grade the next 15%, C-grade the last 5%.
- Forecast A-grade lines individually and give the C-grade tail a reorder rule — a forecast for a product contributing to the last 5% of revenue costs more to produce than it can save.
- Sell-through rate in Shopify is quantity sold divided by quantity sold plus quantity still in inventory, which makes it a measure of how a buy performed rather than a prediction.
- The forecast horizon is your supplier lead time plus your safety margin, not the financial calendar.
- A seasonal index built from your own weekly order history is more useful than any external benchmark, because it encodes your promotions and your customers.
- Decide the markdown dates before the season starts; the decision you make in week six of a bad season is worse than the rule you wrote in month one.
Why the built-in numbers mislead you in exactly the wrong week
Shopify’s inventory reports are good, and two of them will quietly lie to a seasonal buyer. Both do it for the same reason: they average.
“Inventory remaining per product” calculates days of inventory remaining as “Total quantity of items still in inventory (ending quantity) divided by the average quantity of items sold per day”, where the average is “quantity sold divided by number of days in the time period”. In a store with steady demand this is exactly right. In a store with a season, it is a statement about the past applied to a future that will not resemble it. On 1 November, the average daily rate from the preceding quarter will tell you that you have plenty of days of cover. You do not. And in January the same metric will show you drowning in stock that is actually about to sell at normal rate.
“Products by sell-through rate” has a related property. Shopify defines it as “Total quantity of items sold divided by the (total quantity of items sold + total quantity of items still in inventory)”. That is an excellent measure of how a buy performed, and it is not a forecast — a 90% sell-through on a line that sold out in week two is a line you under-bought, and the metric reads it as a triumph.
None of this makes the reports wrong. It makes them descriptions, and a seasonal buyer needs a projection. The gap between those two is where most of the money is lost.
Forecast the shape, then scale it
The practical method for a store with a few years of trading is boring and works. Take the last two or three years of order data by week, by product or product group. Normalise each year so the weeks sum to one — that gives you a seasonal index, which is the shape of your year with the size taken out. Average the years, weighting the most recent one more heavily if the business has changed materially.
Now you have separated two questions that stores usually answer as one. The shape question is “when does demand arrive”, and it is remarkably stable — customers buy garden furniture, advent calendars and school shoes at roughly the same time every year. The size question is “how much bigger will we be”, and it is a business judgement about marketing spend, channels and range that no time series can answer for you. Keep them separate and each is tractable. Blended together, you get a single number with unknowable error bars.
Two adjustments the raw data will not make for you. First, strip out the weeks where a promotion pulled demand forward — otherwise you will forecast a peak caused by a discount you may not repeat, and then discount again to hit it. Second, censor the stockouts: a week where you sold forty units because you had forty units is not a week where demand was forty. Treating a stockout as demand is the most common way a forecast institutionalises last year’s mistake.
The horizon is the lead time, not the month
The forecast that matters is the one you can still act on. If your supplier needs twelve weeks and your freight needs four, then a decision made in late July is the last one that changes what you have in November. Everything after that is not forecasting; it is watching.
So build the calendar backwards from the season, and mark the commitment dates explicitly: the last date to place a full order, the last date a top-up can arrive in time to sell, the last date air freight is cheaper than the lost margin. Those dates are the agenda. A monthly forecast review that does not line up with them is a meeting about a number nobody can change.
This is also the honest answer to “how accurate does the forecast need to be”. Accuracy matters in proportion to how irreversible the decision is. A product you can reorder in three weeks needs a rough number and a good reorder rule. A container of seasonal product with a twelve-week lead time and no second chance needs real work — and probably needs a deliberate decision about how much stockout risk you are willing to take, because the alternative to some stockouts is guaranteed leftover stock.
Only forecast what is worth forecasting
Shopify’s ABC analysis is the segmentation to start from, and its definitions are specific: A-grade products “collectively account for 80% of your revenue”, B-grade “the next 15%”, and C-grade “the last 5%”. For most catalogues that means a small number of lines carry the outcome.
Use that to ration effort rather than to decide what to stock. A sensible allocation:
- A-grade, seasonal. Individual forecasts, reviewed against the commitment calendar, with an explicit view on stockout risk. This is where analyst time belongs and almost the only place it pays.
- A-grade, non-seasonal. A reorder point and a safety stock level based on lead time variability. Stable demand does not need a forecast; it needs a trigger.
- B-grade. Forecast by group rather than by line. Group-level demand is far more stable than any individual SKU within it, which is why forecasting a category is easier than forecasting its worst-selling colourway.
- C-grade. A reorder rule, a minimum, and no meeting. A product in the last 5% of revenue cannot repay the hours spent modelling it.
Variants are where seasonal forecasts actually fail
Total demand for a product is usually predictable. The split across sizes and colours is where the money goes missing, because a size curve that is slightly wrong produces exactly the outcome every apparel buyer knows: sold out of the middle sizes in week three, holding the extremes in February.
Compute the size and colour mix from your own history rather than the supplier’s standard curve, and compute it from *demand* rather than sales — which means, again, censoring the periods where a size was out of stock. If a size was unavailable for a third of the season, its share of sales understates its share of demand, and buying to last year’s sales locks the error in permanently.
Returns belong in this calculation too. A size that sells well and comes back at a high rate is not selling well. Forecasting on gross units and reporting on net units is how a line looks like a winner for two seasons.
Decide the exit before the season starts
A forecast is a prediction, so some of them will be wrong. The plan for being wrong is worth more than the marginal accuracy of the prediction, and it is cheaper to produce.
Write the rules in advance: at week four, if sell-through on a line is below the level the buy assumed, it gets a promotional slot; at week eight, the first markdown; at week ten, the deeper one. Set these before the season because the same decision made mid-season is made by a person who is attached to the buy, arguing that next week will be better. It usually is not — a seasonal line that is behind at week four is behind against a demand curve that is about to fall.
The counterpart is the upside rule: what happens if a line is ahead. Who is allowed to authorise air freight, at what cost per unit, and up to what value — decided in advance, so that the answer arrives in a day rather than after a week of emails during the one week it would have mattered.
What we would not buy yet
Forecasting platforms are easy to justify and easy to waste money on. Before buying one, run two full seasons on a spreadsheet built as above. It is a few days of work, the logic is visible, and it will tell you whether your problem is the model or the data.
It is almost always the data. Demand censored by stockouts, promotions not flagged, returns not netted off, inventory counts that disagree with the warehouse — a forecasting platform fed on those produces confident wrong numbers faster than you produced them yourself. Fix the inputs first, and the spreadsheet may turn out to be sufficient. Buy the platform when the spreadsheet is genuinely the constraint: hundreds of A-grade lines, multiple warehouses, or replenishment decisions frequent enough that nobody can make them by hand.
What does pay in the meantime is the operational plumbing — inventory that agrees across systems, purchase orders and receipts recorded where the forecast can see them, and someone whose job it is to run the review against the commitment calendar every month. That is unglamorous, continuous work rather than a project, which is why it tends to sit with an [ongoing support and store management arrangement](/services/support) rather than getting scoped as a build.
Questions this raises
How do you forecast inventory for a seasonal store?
Separate shape from size. Build a weekly seasonal index from two or three years of your own order history, correcting for stockouts and promotions, then scale it by a growth assumption that comes from business judgement rather than from the data. Forecast at the horizon of your supplier lead time, and review against commitment dates rather than calendar months.
Why is “days of inventory remaining” misleading before a peak?
Because Shopify calculates it as remaining stock divided by the average quantity sold per day across the selected period. Going into a peak, that historical average is far below the rate you are about to sell at, so the metric shows comfortable cover for a position that is actually short. Coming out of a peak it does the reverse.
How far ahead should the forecast run?
At least supplier lead time plus freight plus your receiving time, and ideally to the end of the season those goods serve. The useful test is whether the forecast covers a decision you can still change. Beyond the last commitment date, a forecast is information rather than a decision, and should take proportionately less of anybody’s time.
Should we forecast every SKU?
No. Use Shopify’s ABC analysis — A-grade products account for 80% of revenue, C-grade for the last 5% — and give individual forecasts only to A-grade seasonal lines. Forecast B-grade by group, because group demand is far more stable than any single variant in it, and give the C-grade tail a reorder rule.
Do we need a forecasting platform?
Not until a spreadsheet has genuinely failed for two seasons. Most forecasting problems are data problems — demand censored by stockouts, unflagged promotions, returns not netted off, inventory that disagrees between systems — and a platform fed the same data produces the same errors with more confidence. Buy one when volume or frequency, not accuracy, is the constraint.
How do you handle a new product with no history?
Borrow the shape from the closest comparable line and make the size judgement explicit and conservative, with a reorder plan rather than a large first buy where lead time allows one. Record the assumption you used so that after the season you can see whether the comparable was a good choice — that is how you build a house method rather than repeating a guess.
NEXT STEP
Free store audit
A senior Shopify engineer reviews your storefront, theme performance and checkout, then sends a prioritised list of fixes.
