How Promotions Affect Shopify Inventory Forecasting
A promotion can double demand overnight and confuse a forecast that only looks at normal sales. Here is how to plan inventory around planned demand spikes.
Run a five-day promotion on Cedar & Fig, 250g and something predictable happens: for those five days it outsells its usual pace by a wide margin. Then the promotion ends, and the spreadsheet recalculating the reorder point every month quietly folds those five loud days into its ninety-day average — and keeps ordering as if that pace never stopped.
The fix is a deliberate step most manual forecasts skip: separating what the promotion actually added from what would have sold anyway, then pulling it back out of the baseline once it's over. See our complete guide to Shopify inventory forecasting for how this fits into the wider process.
Why Promotions Confuse Forecasts
A forecast is built to project demand under normal conditions — what's usually called baseline demand, defined plainly as the demand that would exist without the impact of the promotion. A promotion, by design, isn't normal conditions. The extra units it generates are the uplift, and telling the two apart is treated as fundamental to modelling promotion behavior at all, not an optional refinement.
Most small-store forecasting methods don't make that separation on their own. A moving average just averages whatever sales numbers you feed it, with no idea that one of those weeks had a 20%-off banner on it. Fold enough unflagged promo weeks into that average and your "normal" baseline drifts upward for good — raw sales history that includes unflagged promotional periods overstates normal demand for every ordinary week that follows.
Worth being precise about how this differs from a seasonal pattern, because the fix for each is opposite. A seasonal spike is recurring and calendar-based (the same rise most Novembers) and belongs inside the model on purpose; see our guide to forecasting seasonal inventory for that case. A promotion is neither recurring nor calendar-driven. It's a spike you chose to create, for exactly as long as you chose to run it, and once it's over it needs to come back out rather than settle in as a new normal.
Estimating Promo Uplift
The practical version of the baseline/uplift split: work out what a SKU would have sold anyway during the promotion window, using your own Shopify sales data, then treat everything above that as the uplift.
Uplift = Actual sales during the promotion − Baseline demand for the same period
Cedar & Fig, 250g normally sells 5 units a day — the same velocity behind its 90-unit reorder point. Run a five-day promotion and sell 60 units total. Baseline demand for those five days, at the normal rate, would have been 5 × 5 = 25 units. Uplift = 60 − 25 = 35 units. That's what the promotion itself added, not the whole 60.
baseline units expected, 5 days
units actually sold
units of real uplift
That 35-unit uplift isn't automatically 35 units of new, durable demand. Two effects are worth checking before you plan around it as if it were.
The first is cannibalization. A university thesis on the topic defines it as how much of a promotion's uplift is diverted from a substitute product's sales rather than being new demand, measured as the ratio between the cannibalized item's volume drop and the promoted item's volume uplift. If Cedar & Fig, 250g is one of six candle scents you carry and its neighbors quietly dipped that same week, some of that 35-unit uplift came out of your own catalog, not new customers.
The second is pull-forward: a discount can pull sales that would have happened soon anyway into the promotion window, as buyers already planning to purchase simply buy now at the lower price. That inflates the promotion-period number, then depresses demand afterward as the pulled-forward stock gets worked through — not because interest dropped, but because it was already spent. Neither effect has a reliable universal size; watch your own numbers in the following weeks rather than assuming a fixed discount off the raw uplift.
Stocking for the Promotion
Once you have an uplift estimate, sizing the order uses the same three ingredients as any other reorder calculation — average demand, lead time, and a buffer — from the reorder point formula, just applied to the promotion window instead of everyday velocity. The "average demand" input becomes your projected promo-period rate — baseline plus estimated uplift — rather than your normal daily average.
Skew the buffer wider than usual: an uplift estimate is a projection, not a measured average from ninety days of ordinary selling. Understocking costs twice: you lose the sale and the marketing spend that drove someone to the page. Overstocking costs once, but for longer — full-price cost of goods on units that only looked attractive at a discount.
Order timing matters as much as size. The stock has to clear your supplier's lead time and land before the promotion starts, not when it starts.
Resetting the Baseline After
The step that's easiest to skip is the one after the promotion ends: deliberately excluding that window from whatever recalculates your ongoing demand. By hand, that means swapping the promo days out of a moving-average window — a shorter recent window, or a normal week's number substituted in their place — rather than letting them sit in the average and pull it upward for months.
Watch the week right after, too. A dip there can look like demand collapsing when it's often just pull-forward working itself out — buyers who would have purchased that week already bought during the discount. Read it as the promotion's aftereffect finishing, not a reason to cut the baseline further.
Doing this properly means marking a calendar for every promotion, on every SKU, and remembering months later exactly which weeks to pull back out — the part that quietly stops happening past a handful of SKUs. It's the specific job StockCue is built to handle: flag a variant as on promotion between two dates with an expected uplift multiplier, and the buying quantity accounts for that window directly, while its outlier exclusion keeps those sales out of the baseline it recalculates everywhere else.
STOCKCUE
Flag a promotion window on any variant with an expected uplift multiplier, and StockCue folds it into that order without disturbing the baseline it uses for every other week. Free plan covers your first 50 SKUs.
Install StockCue on Shopify →Frequently Asked Questions
Why do promotions distort inventory forecasts?
Because a promotion inflates demand for a reason that won't repeat on its own (a discount, extra marketing, a flash sale), and if that inflated period gets averaged in as if it were ordinary selling, every forecast built from that average afterward assumes the promotional pace is the everyday pace. The fix is treating the promotion's extra sales as a separate uplift figure rather than folding them into your baseline.
How much extra stock should you order for a sale?
There's no fixed multiplier that applies across products or discount depths, so the safer approach is to estimate baseline demand for the promotion window from your normal sales rate, compare it against what a similar past promotion actually produced if you have that history, add a wider buffer than usual because the estimate is a projection rather than measured history, and place the order early enough to clear your supplier's lead time before the promotion starts.
Should promotional sales be excluded from your normal forecast baseline?
Yes. A forecast baseline is meant to represent demand under normal conditions, so a period inflated by a promotion should be flagged or removed before it's used to calculate ongoing averages; otherwise every future "normal" forecast quietly assumes promotional-level demand is the everyday rate.