Ecommerce Demand Forecasting: How to Reorder Before a Bestseller Sells Out
Ecommerce demand forecasting is the process of predicting how many units of each SKU you'll sell in a future period, then using that number to decide what to reorder and when. Done right, it answers one question for every product in your catalog: reorder now, reorder soon, or wait.
The topic gets treated as an academic supply-chain exercise in a lot of guides. For a Shopify merchant it's simpler than that. You don't need statistical modeling software. You need four numbers per SKU, updated regularly, and a rule for turning them into a purchase order before you run out.
What ecommerce demand forecasting actually decides
A demand forecast exists to trigger one decision: place a purchase order today, or don't. Everything else, the charts, the seasonality curves, the confidence intervals, is in service of that single yes/no call for each product.
Retailers lose an estimated $818 billion a year worldwide to inventory distortion, split between out-of-stocks and deeply discounted overstocks, according to IHL Group's 2nd Annual Inventory Distortion study, cited by Retail TouchPoints. Out-of-stocks alone accounted for roughly $456.3 billion of that figure. IHL attributes the distortion to a mix of people, process, infrastructure, and supply-chain factors, not one single cause. In practice, though, a large share of both failure modes traces back to the same operational gap we see in Shopify catalogs: sales data that never got converted into a timely reorder decision. That's our read on the day-to-day cause, not a conclusion the study itself draws.
A forecast that doesn't lead to a reorder date and quantity is a report, not a forecasting workflow. Keep that distinction in mind through every step below.
The four inputs every SKU-level forecast needs
You need four data points per SKU. Skip one and the forecast will be wrong in a predictable direction.
- Daily or weekly sales velocity over a recent, representative window
- Supplier lead time, in days, from order placed to stock received
- A demand adjustment for known promotions, seasonality, or trend shifts
- Current on-hand stock plus anything already in transit
Most spreadsheet-based forecasting breaks down not because the formula is wrong, but because one of these four inputs goes stale. Lead times change when a supplier gets busy. Sales velocity shifts after a product gets featured on social. If an input sits unrefreshed for three weeks, the forecast built on it can be materially off, sometimes by a wide margin, well before anyone notices.
Step 1: Calculate a reliable daily sales rate
Start with average daily sales over the last 30 to 90 days, not the last 7. A short window overreacts to a single big order day or a slow Tuesday. A window that's too long buries a recent trend change under old data.
For a new or trending product, weight recent weeks more heavily than older ones. A simple approach: take the last 14 days' average and the last 60 days' average, then lean toward whichever one better reflects current reality (a launch spike should not be treated as steady-state demand; a genuine sales trend should not be diluted by pre-launch weeks with no sales at all).
For products with irregular, spiky order patterns, look at units per week instead of units per day. Weekly aggregation smooths out day-to-day noise while still catching a real shift in demand within a few data points.
Step 2: Account for supplier lead time and safety stock
Multiply your daily sales rate by supplier lead time in days to get the stock you'll burn through before a new order arrives. That's your reorder point baseline, before any buffer.
Then add safety stock, extra units held to cover demand spikes or a late shipment. Shopify's own guidance on safety stock recommends basing the buffer on maximum daily usage and maximum lead time, not just averages, precisely because averages hide the bad weeks that cause stockouts.
A basic safety stock calculation looks like this: (max daily sales x max lead time) minus (average daily sales x average lead time). It's not the most statistically rigorous formula available, but it's fast to compute per SKU and it catches the two most common failure points: a supplier that's slower than usual, and a week that sells faster than usual.
For a full walkthrough of turning these numbers into an actual reorder quantity, see our Shopify reorder point formula guide.
Step 3: Adjust for promotions, seasonality, and recent demand shifts
A pure trailing-average forecast will underorder before a known spike and overorder after one ends. Adjust manually for anything you already know is coming.
- Planned promotions or discount codes launching in the forecast window
- Seasonal patterns from the same period last year, if you have at least one prior cycle of data
- Recent shifts in traffic source, like a viral post or a new ad campaign driving a product
- Bundle or gift-with-purchase mechanics that pull stock from one SKU faster than usual
If you don't have a full year of history for a SKU, borrow the seasonal curve from your closest comparable product. An imperfect seasonal adjustment beats none: a bestseller that historically triples in December will blow through a flat, non-seasonal forecast well before the holiday peak.
Step 4: Turn the forecast into a reorder priority list
A forecast is only useful once it's ranked by urgency. For every SKU, calculate your reorder point in units: adjusted daily sales rate multiplied by supplier lead time in days, plus the safety stock units from step 2. That single number, in units, is what you compare current on-hand stock against.
Sort your catalog by how close current on-hand stock is to that reorder point, closest first. Any SKU where on-hand stock has already reached or dropped below its reorder point moves to the top of the list, regardless of how it ranks on total revenue.
- Red: on-hand stock is at or below (adjusted daily sales x lead time) in units, order today, you're already inside your lead-time window with no buffer left
- Yellow: on-hand stock is at or below the full reorder point in units, (adjusted daily sales x lead time) plus safety stock, order this week
- Green: on-hand stock is comfortably above the reorder point in units, revisit at the next review cycle
If you prefer to think in days of stock rather than raw units, divide current on-hand stock by adjusted daily sales rate and compare that to your lead time plus a safety buffer in days. The math is equivalent to the units-based version above; use whichever unit your team already thinks in, but keep the underlying formula and the red/yellow/green thresholds consistent so the two views never disagree.
Running this against your full catalog also surfaces which SKUs deserve the tightest forecasting attention in the first place. Pairing it with an ABC analysis of your Shopify inventory keeps you from spending equal forecasting effort on a top seller and a SKU that sells twice a month.
Common forecasting mistakes that cause stockouts or excess stock
- Using a single trailing average for every SKU, ignoring that a new arrival and a five-year staple behave differently
- Forecasting off gross sales instead of net units after returns and cancellations
- Treating lead time as fixed when a supplier's actual delivery time varies by season or order size
- Rebuilding the forecast monthly instead of weekly for fast-moving SKUs, so the reorder point is always a few weeks stale
- Ignoring in-transit stock and reordering units you already have on the water
The most expensive mistake is usually the first one. A flat trailing average smooths out exactly the signal you need, the moment demand starts accelerating on a product about to sell out.
How to monitor forecast risk without maintaining spreadsheets
Manual forecasting works at low SKU counts. Past a few dozen active products, recalculating four inputs per SKU every week stops being a realistic weekly habit, and the spreadsheet quietly goes stale, which is exactly when a bestseller sells out unnoticed.
Skymetrics' stock intelligence module runs this exact workflow continuously against your live Shopify sales data: sales velocity, lead time, and current stock combine into a reorder forecast per SKU, with alerts before a bestseller runs low rather than a report after it's gone. It replaces the spreadsheet update cycle with a ranked, always-current reorder list.
If you're not ready for a dedicated tool, at minimum set up low-stock alerts in Shopify as a floor. Alerts alone won't forecast demand, but they stop the worst-case outcome: finding out a top seller is at zero from a customer support ticket instead of your own data.
Whatever system you use, review the forecast on a cadence that matches how fast the SKU moves: weekly for your top 20% of revenue-driving products, monthly for the long tail. That's the single habit that separates merchants who catch a stockout risk with weeks of runway from merchants who catch it the day the product page shows 'sold out.'