How to Improve Shopify Inventory Forecast Accuracy
Why your inventory forecast keeps missing, how to actually measure forecast accuracy, and the review habit that keeps a forecast from going stale.
A forecast that's "off" isn't useful information by itself. Off by how much, and in which direction, are two separate questions. Most merchants who say their forecasting "doesn't work" have never actually measured either one. Accuracy improves less from a better formula than from the habit of checking a forecast against what actually happened, and reading what the gap says.
Why forecasts drift
Most of the time a forecast isn't wrong because the method is broken: it's wrong because something in the business changed and the forecast hasn't caught up. A supplier's lead time quietly got longer, a promotion spiked demand and vanished, or a genuinely seasonal pattern reasserted itself against a forecast still averaging the off-season months. None of these are method failures: the forecast just hasn't been told the ground shifted.
There's a subtler drift with no single event behind it: a stockout. When a product runs out, the sales you record aren't the demand that existed: they're the demand you were able to fill, capped at zero the moment the shelf emptied. A forecast built on that history reads the stockout as "demand fell," not "we ran out," and quietly orders less next time. Order less, run out again, and the number keeps sliding — a documented pattern sometimes called a spiral-down effect. If a SKU's forecast keeps missing low and it also keeps hitting zero stock, check the stockout history before you touch the formula.
Measuring forecast error
"How far off, and in which direction" is the whole idea. The formal terms below are worth knowing, but the plain-English question is what actually changes what you do next.
Mean Absolute Error (MAE) is the average size of the miss, in real units:
MAE = average of |Actual − Forecast|
Say last week's forecast for "Cedar & Fig, 250g" was 35 units and it actually sold 42. The miss is |42 − 35| = 7 units. Expressed as a percentage of what actually sold, that same miss is the Mean Absolute Percentage Error, or MAPE:
MAPE = average of ( |Actual − Forecast| ÷ Actual ), as a percentage
7 ÷ 42 = 16.7%. MAPE is popular because it's scale-free — a percentage lets you compare a five-unit-a-day candle against a fifty-unit-a-day one without the bigger number automatically looking worse. That's also exactly where it breaks.
MAPE divides by the actual number sold. On a slow-moving SKU that number is small, and dividing by a small number turns an ordinary miss into an extreme-looking percentage.
A SKU forecast at 2 units that sells 1 shows a 100% MAPE for that week — |1 − 2| ÷ 1 = 100% — even though the real miss was a single unit. Most small Shopify catalogs carry a long tail of exactly this kind of low-volume SKU, which makes MAPE least trustworthy on the products a merchant most needs a real read on. Track MAE, or a raw unit count, alongside it for anything selling in the single digits.
Size alone misses direction. Bias — Mean Percentage Error, or MPE — keeps the sign instead of taking the absolute value, so a consistent lean shows up instead of canceling out:
Forecast Bias (MPE) = average of ( (Forecast − Actual) ÷ Actual ), signed
For the same week: (35 − 42) ÷ 42 = −16.7%. The negative sign says the forecast came in under what actually sold. One week of that is noise. A run of weeks all landing negative is a forecast that's systematically low — a pattern MAE and MAPE, on their own, won't show you, because neither tracks direction.
A related metric, the tracking signal, catches that kind of run — a cumulative total of the signed errors divided by the average absolute error, watched for a value that drifts consistently away from zero. A commonly used default treats roughly ±4 as worth investigating, but that's an industry convention, not a derived statistical limit. The same caution applies to MAPE: there is no universal "good" MAPE number. What counts as reasonable varies by category, volatility, and how far ahead you're forecasting — compare your own number against its own trend, not a borrowed threshold.
Forecast vs. actual review
A single week's error tells you almost nothing on its own — every forecast misses sometimes, and a five-unit miss on a five-unit-a-day product is a different story than the same miss on a five-hundred-unit-a-day one. What matters is the review: logging the forecast and the actual side by side, for the same SKU, period after period, and watching the pattern rather than reacting to any single number.
Two things are worth separating there. Error size tells you how precise the forecast has recently been. Direction — bias, above — tells you whether it has a systematic lean, a different problem with a different fix than an error that's simply noisy both ways: noisy-but-centered needs a steadier input, biased needs the underlying assumption corrected.
How often to run this depends on how fast a wrong number gets expensive. A fast mover compounds a bad forecast quickly, so weekly is worth the ten minutes. A slow seller can be checked monthly without missing much — the risk there is usually a slow drift, not a sudden one.
Building a recalibration habit
One check worth running before adding complexity to a forecast: compare it to the simplest possible baseline, a naive forecast that just repeats last period's actual number forward. This comparison has a name in forecasting practice, Forecast Value Added, and the question behind it is blunt: is the more careful forecast actually beating "just use last week's number," or is the extra process not earning its keep?
When the review above turns up a real, repeated miss (not one noisy week but a pattern), the fix is rarely a different formula. It's almost always a short list of concrete causes: a stale sales window that missed a real trend, a lead time that changed without the input being updated, a promotion or a stockout that quietly distorted the baseline. The common forecasting mistakes behind this are worth checking directly, rather than guessing.
Logging a forecast, waiting for the actual, computing the gap, and watching for a pattern across a real catalog is the kind of habit that survives the first week and fades by the third. StockCue recalculates every SKU's forecast nightly against real sales, so the comparison happens automatically instead of living in a spreadsheet. On Growth, the "why this qty?" breakdown shows exactly which input (velocity, trend, or seasonality) moved the number, turning "the forecast was off" into "the forecast was off because of this."
Frequently Asked Questions
How do you measure inventory forecast accuracy?
Forecast accuracy is measured by comparing what you forecast against what actually sold, then looking at both the size and the direction of the gap. Size is usually expressed as MAE (the average miss, in units) or MAPE (that miss as a percentage of actual sales); direction (whether you're consistently over- or under-forecasting) is a separate question that matters just as much.
What's a reasonable forecast error to expect for a small Shopify store?
There's no single "good" forecast-error number for every Shopify store: it depends on the category, how volatile demand naturally is, and the forecast horizon, and no credible source sets a universal threshold. Track your own error over time and by SKU instead: stable or improving matters more than clearing an external bar, and a widening error on one SKU is the signal to investigate, not the absolute figure.
How often should you compare a forecast to actual sales?
Weekly for fast-moving products, since a bad forecast compounds quickly at high volume. Monthly is usually enough for slower sellers, without reacting to ordinary week-to-week noise. Either way, it needs to happen consistently enough that a genuine shift (a new trend, a lead-time change, a stockout) gets caught before it repeats for months unnoticed.
STOCKCUE
StockCue compares its forecast to real sales every night instead of once a quarter, and Growth's "why this qty?" breakdown shows exactly which input moved when a forecast misses.
Install StockCue on Shopify →For the full process this measurement habit fits into, see the complete guide to Shopify inventory forecasting.