Home / Data & Inventory / Shopify Inventory Forecasting
Article · Data & Inventory

Shopify inventory forecasting: your stockouts are a lead-time problem, not a demand problem.

Ask an e-commerce brand why they ran out of their best seller and they'll tell you demand spiked. Pull the numbers and it's usually not true. Demand was within a few units of normal. What changed was the supplier who said four weeks and shipped in seven, and the reorder point that was still doing math on four.

Shopify can't see that. Neither can most forecasting apps. This is how inventory forecasting actually breaks, and what an AI inventory layer does about it.

September 2026. About a seven minute read.

01 · What Shopify shows you

Shopify tells you what you have. It has no idea when more is coming.

Shopify's inventory reports show stock on hand, sell-through, and a days-remaining estimate. The estimate is a straight-line average of recent sales. It doesn't know your supplier's lead time, because Shopify has never seen a purchase order. It looks at one store at a time, and it counts products, not the size and color that's actually about to run out.

So the report says "18 days remaining." Your supplier takes 35. You were already late when you read it.

A · The stock count

Three stores, one variant, three unrelated numbers.
store · UShoodie · black / M14on hand
store · CAhoodie · black / M3on hand
store · UKhoodie · black / M22on hand
A straight-line estimate that never sees a lead time or another store.

B · The forecast

Every store feeds one layer.
USinventory webhook
CAinventory webhook
UKinventory webhook
Inventory layer
velocity · 7 / 28 / 90d2.1 / 1.7 / 1.5 per day
lead time · supplier A35 days
reorder point · CA60 units
next order · CAoverdue · 9 days
next order · USOct 2
One schema. Every store, every variant, a reorder date on each row.
Fig. 01The stock count versus the forecast. Only one of them knows when the truck arrives.
02 · What a real forecast needs

Demand is the easy half.

Here's the part nobody wants to hear: your demand guess is probably fine. Take a 7-day, a 28-day, and a 90-day sales rate per variant and you'll land within a reasonable margin most of the time. Seasonality and promos move it, but they're visible and you know they're coming.

Lead time is the other half, and it's the half that's never current. It lives in a spreadsheet cell someone typed in January. The supplier has slipped twice since. Nobody updated the cell, because updating the cell isn't anyone's job.

A forecast with a stale lead time isn't wrong by a little. It's wrong by exactly the number of days the supplier slipped.

One variant, 12-week view
what the sheet thinkslead time typed in January
IN STOCK
LANDS DAY 46 · BEFORE ZERO
LEAD TIME · 28D
REORDER POINT · DAY 18
what the supplier didship confirmation, last week
IN STOCK
STOCKOUT · 21 DAYS
ACTUAL · 49D
REORDER POINT · DAY 18
todaywk 2wk 4wk 6wk 8wk 10wk 12
velocity × lead time + buffer
reorder point · per variant · per store
The whole forecast reduces to this line. The one input nobody updates is the one it hangs on.
Fig. 02Same demand, same reorder point, one stale number. Three weeks of empty shelf.
03 · The app route

Why the apps don't fix it.

Off-the-shelf forecasting apps are demand engines. They pull your Shopify sales history, run a model over it, and give you a replenishment suggestion. The demand math is decent. Then they ask you to type in a lead time per supplier, once, and trust it forever.

Three more problems stack on top. Each store is forecast as its own island, so a variant selling in three stores gets three forecasts that don't know about each other. The logic is a black box, so when the number looks wrong you can't see why. And the fee runs monthly for a forecast you don't own and can't change.

They solved the half you already had.

04 · Where AI fits

What AI inventory forecasting actually does at 6am.

This is where AI earns its place, and it isn't in the forecast math. The math stays simple and readable. AI's job is the inputs and the actions, the parts a human was supposed to do and didn't.

A Tuesday morning, before anyone logs in:

  • The supplier's shipping confirmation landed overnight. The agent reads it: ship date is 9 days later than the PO said. Lead time for that supplier gets updated. Not the sheet. The layer.
  • Every reorder point tied to that supplier recalculates. Three variants move from "fine" to "order this week."
  • One variant was already past the line. The agent flags it: this one stocks out on the 28th regardless. Here are the two stores it affects and the units left in each.
  • It drafts the purchase order for the three that can still be saved, and a note to the supplier asking for a partial ship on the fourth.
  • Someone approves it over coffee. Nothing was typed into a cell.

That's the whole system. The forecast never got smarter. The inputs stopped being stale.

The morning run
05:58supplier email parsed · lead time 28 → 37 daysinput updated
05:58reorder points recalculated · 41 variants · 3 storesrecomputed
05:593 variants crossed reorder point · black / M · black / L · navy / Morder this week
05:591 variant past recovery · black / L · stocks out on the 28th · US + CAflagged
06:00purchase order drafted · 3 variants · supplier Aawaiting approval
06:00supplier note drafted · partial ship request · black / Lawaiting approval
07:40approved · PO sent · note senthuman
Fig. 03One supplier email, 41 variants touched, five actions, one approval. Nobody edited a cell.
One product, three variants, 12-week view
black / Msells 1.7 a day
IN STOCK
LANDS BEFORE ZERO
LEAD TIME · 35D
REORDER POINT
black / Lsells 2.4 a day
IN STOCK
STOCKOUT · 16 DAYS
ORDERED LATE · 35D
REORDER POINT · MISSED
navy / Msells 0.9 a day
IN STOCK
OK
35D
REORDER POINT
todaywk 2wk 4wk 6wk 8wk 10wk 12
Product-level forecasting sees one number for the hoodie. It misses black / L entirely.
Fig. 04Same product, three variants, three different order dates. The supplier lead time is 35 days on all of them.
05 · What you need

Not a bigger model. A place for the inputs to live.

  • Inventory and order webhooks from every store into one layer, so a variant is one row, not three. Shopify Plus expansion stores included.
  • Lead time as a living number per supplier, updated from emails and ship confirmations, not typed once.
  • Reorder points and safety stock calculated per variant per store, in logic you can read.
  • Actions that draft and wait for approval: purchase orders, supplier notes, low-stock alerts, pausing ads on a variant that's about to sell out.

We build this layer for multi-store e-commerce brands running tens of thousands of variants. It's the same inventory layer described on our Shopify inventory automation page. Forecasting is what it does first; the rest of the actions hang off it.

THE TEST If your lead time was last updated by a human, your forecast is already wrong. You just don't know by how much yet. HARD STOP
FAQ

Common questions.

Does Shopify have inventory forecasting built in?

No. Shopify reports stock on hand and a days-remaining estimate based on recent sales. It doesn't know supplier lead times, because it never sees purchase orders, and it forecasts one store at a time at the product level. Forecasting needs a layer on top that holds lead times and sees every store.

What's the best inventory forecasting app for Shopify?

Most apps forecast demand reasonably well for a single store. Where they fall short is the other half: lead times are a field you type once, each store is forecast alone, and the logic can't be inspected. For multiple stores or variant-level stock, a custom inventory layer built on your own data is the version that stays accurate.

Can AI forecast inventory for a Shopify store?

AI inventory forecasting is most useful for the inputs, not the math. It can read supplier emails and shipping confirmations to keep lead times current, flag unusual velocity changes, and draft purchase orders for approval. The reorder calculation itself should stay simple enough to check by hand.

How do you forecast inventory across multiple Shopify stores?

Pull inventory and order data from every store, including Shopify Plus expansion stores, into one place. Calculate velocity per variant across all of them, and set reorder points per variant per store using each supplier's current lead time. Shopify's native reports can't do this because each store only sees itself.

Closing law
Demand you can guess. Lead time you have to know.
Get started

See what this looks like on your stack.

If you found out about your last stockout from a customer, the lead time was stale. A free 30-minute call. We map your workflows together and show you what's worth automating.

Book a Free Discovery Call