Shopify’s ‘Inventory Remaining per Product’ Report: The 28‑Day Math and What It Leaves Out
Shopify works out days of inventory remaining from a flat 28‑day sales average. Here’s the math, a worked example, and four things to check before you reorder.
Shopify can estimate how many days each product’s stock will last. The estimate lives in a report called Inventory remaining per product, and its main column is Days of inventory remaining. It’s a quick way to spot what’s running low, as long as you know the simple math behind it and what that math doesn’t consider.
Where to find the report
From your Shopify admin, go to Analytics > Reports, filter the list by the Inventory category, and open Inventory remaining per product.
The chart groups your variants by how long their stock should last, from 0 days up to 91+ days. The table lists each variant with its ending quantity (the stock left at the end of the period), how many it sold per day, and its days of inventory remaining.
How Shopify calculates days of inventory remaining
Days of inventory remaining = stock left ÷ average units sold per day
Shopify’s help page for inventory reports says the daily average is based on each variant’s sales over the last 28 days. It’s a plain average, so a sale four weeks ago counts the same as one yesterday.
Two edge cases are worth knowing:
- No sales in the period: the variant shows N/A instead of a number, because there’s no sales speed to divide by.
- Oversold (negative stock): the variant shows 0 days.
That’s the whole calculation. It doesn’t look at your supplier, and it doesn’t look at anything already on the way to you.
A worked example
Juniper & Pine sells Stoneware Mug · Ash, supplied by Northfield Ceramics. In the last 28 days it sold 56, and 28 of those sold in the last 7 days. There are 80 in stock, and Northfield takes 14 days to deliver.
What Shopify shows. 56 sold ÷ 28 days = 2 a day. 80 ÷ 2 = 40 days.
At this week’s pace. 28 sold ÷ 7 days = 4 a day. 80 ÷ 4 = 20 days.
A blend of the two. Half the 28-day average plus half the 7-day average = 3 a day. 80 ÷ 3 = 26.7, so 26 full days.
Forty days reads like a problem for next month. At the speed the mug is selling now, it has 20 to 26 days left, and the supplier needs 14 of those to deliver. Using the blend, the order should go out within about 12 days (26 − 14), or within 6 if this week’s pace holds.
Nothing in the report is wrong. It answers a narrower question than the one you’re asking, which is “when do I need to order, and how many?”
What the report leaves out
Your supplier’s lead time
Days left only means something next to how long a new order takes to arrive. Forty days is plenty if your supplier delivers in a week, and not enough if they take eight weeks.
The report can’t make that comparison, because Shopify has no supplier lead-time field. Its own guide for stores moving off Shopify’s Stocky suggests storing lead times in custom metafields, which you then compare by hand.
The rule of thumb: if days left is less than the lead time, the product will sell out before a new order can arrive, so order now. If days left is within a week or so of the lead time, put it on this week’s list.
Changes in sales speed
A flat 28-day average is steady, but slow to notice change. When a product picks up speed, as the mug did, the average lags behind and days left looks longer than it really is. When a product slows down, the opposite happens, and the report can push you to reorder too early.
Blending the 28-day and 7-day averages, half and half, catches a product that’s speeding up without overreacting to one unusual day. To see a 7-day average in Shopify, open the Inventory sold daily by product report and set the date range to the last 7 days. Its Inventory units sold per day column is the average for whatever range you choose.
Stock that’s already on the way
The report divides the stock you have now. Stock on its way to you, which Shopify shows as Incoming, isn’t in the table at all. A product can look urgent while 40 units are in transit, and if you reorder straight from the report, you can end up ordering the same stock twice.
Before you order, check the Incoming tab on your Inventory page (Products > Inventory). Then keep watching that product until the delivery arrives. Until it does, the shelf still holds only what’s there now.
How many to order
Days left tells you when to act, not how much to buy. The amount needs your lead time, how long you want the new stock to last (cover days), and what’s already coming:
Reorder = sales per day × (lead time + cover days) − in stock − on the way
For the mug, with 30 days of cover and nothing on the way: 3 × (14 + 30) − 80 − 0 = 52. If 30 were already on the way, the order would drop to 22. The post on how much to reorder explains how to choose each number.
What N/A is telling you
It’s easy to skim past N/A. On a product with stock, it means the variant hasn’t sold in the report’s period. That isn’t a low-stock problem, it’s the opposite one: cash sitting on a shelf.
If your report has a lot of N/A rows, those products deserve their own look. Here’s how to find products that haven’t sold in 90 days.
When the report is good enough
For steady sellers with short, reliable lead times and nothing on order, the report’s number is close enough to act on. It gets less reliable as lead times grow, as sales speed changes, and as more stock is in transit.
It also only helps when you open it. Shopify has no built-in report subscription, so a regular email of this report means building a scheduled workflow in Shopify Flow.
Doing this for every product
Checking one product takes a minute. Across a few hundred variants, with speeds changing every day, it becomes a standing spreadsheet job.
StockDigest does this math for every product each morning. It takes sales per day as half the 28-day average plus half the 7-day average, compares days left with each product’s lead time (14 days unless you change it), and subtracts stock on the way from the reorder amount. When something needs attention, it emails you the list. The low-stock report page shows what that email includes.