Open your Shopify admin and you'll find sales by day, sell-through rate, inventory on hand — pages of numbers about what already happened. What you won't find is the one number that actually runs your business: the date each product runs out. Shopify inventory forecasting is the discipline of turning that rear-view data into a forward view, and you can do the first version of it this afternoon with a CSV export and one honest correction most brands miss. This guide walks through the whole method, with the math shown.
Key takeaways
- Shopify's reports describe the past. A forecast answers a different question: how many days of stock are left, per SKU?
- The core formula is simple: on-hand units ÷ true daily velocity = days remaining.
- "True" is the key word — include stockout days in your average and you'll underestimate demand by exactly the fraction of days you were dark.
- Days remaining only becomes a decision when you subtract your supplier's lead time from it.
- Spreadsheets handle this fine at 10 SKUs. At 50 SKUs with size variants, the spreadsheet is usually the cause of the next stockout.
Why Shopify inventory forecasting needs more than native reports
Shopify's analytics are genuinely good at what they do: units sold by day, by variant, by channel; inventory snapshots; average sell-through. But every one of those reports is a mirror, not a windshield. None of them will tell you that your bestselling 500 ml bottle has 11 days of stock left and your co-packer needs 30 days to make more — which means you're already 19 days late.
Three things are missing. First, projection: no report converts current stock into a run-out date. Second, lead-time awareness: Shopify has no idea your fabric supplier quotes three weeks and delivers in four. Third, demand correction: Shopify records a stockout day as a zero-sales day, quietly poisoning any average you compute from it. A forecast has to supply all three.
Step 1: Export your sales history
Everything starts with order-level data. From your Shopify admin, export Sales over time by product variant (Analytics → Reports) for the last 90 days, or pull the orders CSV and pivot it yourself. Ninety days is the sweet spot for most D2C brands — long enough to smooth out a weird week, short enough that last season's dead trend doesn't distort the picture.
Two rules for a usable export. Work per variant, not per product: "Black Kurta" is not a SKU you can produce — "Black Kurta / M" is, and its demand curve is different from XL's. And keep daily granularity: you'll need day-by-day rows for the stockout correction in the next step, and weekly rollups destroy that information.
Alongside sales, note each variant's current on-hand quantity and — from your own records, because Shopify doesn't hold it — each product's supplier lead time.
One more column to build before you calculate anything: which days each variant was out of stock. Shopify doesn't export this directly, but you can reconstruct it — any stretch of consecutive zero-sales days on a product that normally sells daily is almost always a stockout, and your inventory history confirms it. Mark those days now; they're the raw material for the correction that makes or breaks the whole forecast.
Step 2: Calculate true daily velocity (exclude stockout days)
Here's where most spreadsheet forecasts silently break. The obvious calculation is units sold in the window divided by days in the window. The obvious calculation is wrong whenever you've had a stockout — which, if you're reading a forecasting guide, you have.
Work the numbers. Your bestseller sells 6 units a day when it's available. Last month it was out of stock for 10 of 30 days, so it sold 120 units in the 20 days it was live:
That 10-day stockout dragged a 6-a-day product down to 4 a day on paper. Plan production off 4 a day and you'll order a third less than demand, stock out again, and drag the average even lower — a doom loop where each stockout manufactures the next one. The fix costs nothing: mark the days each variant had zero available inventory, and divide sold units by in-stock days only. This single correction is the highest-leverage improvement in all of Shopify inventory forecasting, and it's the first thing Honey Shelf's velocity engine does with your sales history. The same trap, and eight other stockout-prevention tactics, are covered in our guide to avoiding stockouts without overstocking.
Choosing the averaging window
How many days should the average cover? Ninety days of in-stock history gives stability; thirty gives responsiveness. A practical compromise is to compute both and let the shorter window win when they disagree sharply — a 30-day velocity running 50% above the 90-day figure means demand is accelerating, and the conservative move is to plan on the faster number. For products with fewer than 30 days of history, treat any forecast as a hypothesis and reorder in smaller, more frequent batches until the data settles.
Step 3: Convert velocity into days remaining
With true velocity in hand, the forecast itself is one division per SKU: on-hand units ÷ velocity. Now "300 units in the warehouse" becomes "19 days of cover," which is a sentence a founder can act on. Ranked by days remaining, your whole catalogue turns into a priority list:
| Variant | On hand | True velocity | Days remaining | Lead time | Verdict |
|---|---|---|---|---|---|
| Black Kurta / M | 90 | 6.0/day | 15 | 30 days | Already late — order now |
| Black Kurta / XL | 84 | 2.1/day | 40 | 30 days | Order within 10 days |
| Linen Shirt / M | 210 | 3.5/day | 60 | 21 days | Healthy — recheck weekly |
| Cotton Scarf | 400 | 0.9/day | 444 | 15 days | Overstocked — pause production |
Notice what the table exposes. The M and the XL of the same kurta are in completely different situations — which is why per-variant forecasting matters. And the scarf, comfortably "in stock" by any Shopify report, is actually 14 months of cover: cash frozen in fabric form.
Step 4: Layer in lead times
Days remaining tells you when you'll run out. It doesn't tell you when to act — for that, subtract the time it takes to get more. If replenishment takes 30 days end-to-end (production plus shipping plus receiving), your real deadline is days remaining − 30. When that number hits zero, today is the last safe day to order. When it's negative, you're choosing the length of your stockout, not whether you'll have one.
Use honest lead times: the average of your last five actual deliveries, not the number the supplier quoted a year ago. If your manufacturer says 21 days but the last five POs landed in 22, 26, 24, 31, and 25 days, plan on 26 and buffer toward 31 — planning on the quote guarantees a late order two times out of five. Add a few days of cover for demand spikes — sized properly with a safety stock calculation rather than a guess — and you have a complete reorder trigger per SKU: velocity, days remaining, lead time, and buffer, all feeding one date on the calendar.
When the spreadsheet stops scaling
Everything above works in Google Sheets, and at 10-20 SKUs it genuinely is the right tool. The failure mode isn't the math — it's the maintenance. The forecast is only correct on the day someone re-exports the CSV, re-marks the stockout days, and re-checks the lead times. Miss a week because of a launch, and every countdown on the sheet is fiction.
The usual breaking points: around 30-50 active SKUs; size and colour variants that multiply every row; more than one person needing the numbers; and the first stockout caused not by bad math but by a stale sheet. If the weekly update takes over an hour, or the team quietly stopped trusting the file, you've hit the ceiling. We've written a fuller cost-benefit breakdown in spreadsheets vs. inventory software.
From forecast to production: closing the loop
A forecast that ends in a spreadsheet cell is a warning. A forecast that ends in a production order is a system. The complete workflow looks like this: sales sync in daily from your store, velocity recalculates with stockout days excluded, the days-remaining countdown crosses your lead-time threshold, and a draft production order appears — quantities recommended from real demand, materials computed from the product's bill of materials, purchase orders drafted for whatever is short.
That's the loop Honey Shelf automates: two-way Shopify sync pulls sales in and pushes finished goods back per variant, and the 6-stage pipeline carries each signal from "stock is low" to "goods are back on the shelf" without a single manual CSV export. Setup takes about ten minutes, and the first honest countdown usually reveals at least one SKU that's quieter — or closer to empty — than anyone thought.
Start with one number
Don't build the perfect model first. Export 90 days, correct for stockout days, and compute days remaining for your top ten variants. That single afternoon of work will change what you order next month — and once the number proves itself, automating it is the easy part.