Product
Put a Dollar Figure on Last Month's Stockouts
A stockout you can only describe in words gets discussed; a stockout with a dollar figure and a SKU next to it gets ordered.
Three columns turn "we had stockouts" into a number
"We had some stockouts last month" is a sentence that survives an entire buying meeting without changing a single order quantity. It is true, everyone agrees with it, and nobody can act on it — because it names no product, no duration, and no amount. The version that changes a decision has three columns: the product, how many days it was out, and what that absence cost.
That is the shape of a lost-revenue report. A single blended figure for the whole store — "we lost roughly this much to availability" — is a headline, not an instruction; you cannot buy against it. A per-SKU row points at one product, sized against every other product, which is exactly the ranking a buying decision needs. Ten rows sorted by lost revenue tell you where the next dollar of purchase order should go.
It is also a different question from the one most inventory dashboards answer. Out-of-stock rate is conventionally the count of out-of-stock SKUs divided by total SKUs — a useful hygiene metric that is completely silent about money. Say twelve percent of your catalogue is unavailable: that means one thing if it's your dead tail and something very different if it's your top seller.
| Question | Out-of-stock rate | Lost revenue by product |
|---|---|---|
| What it counts | SKUs unavailable ÷ total SKUs | Money not collected, per product |
| Unit | A percentage | Currency |
| Tells you where to look | No — every SKU weighs the same | Yes — rows rank against each other |
| Survives a buying meeting | Noted, then set aside | Becomes a line on the order |
A count metric and a money metric answer different questions.
Where the days come from, and where the dollars come from
The days come from availability history: for each product, the stretch of the period it could not be bought. The dollars come from arithmetic on top of that — the product's run rate before it went out, multiplied across the days it was gone.
lost revenue ≈ average daily sales before the stockout × days out of stock
That method is a standard shelf-availability calculation, and the same shape works in profit terms — days out × average units per day × profit per unit — if margin is the number you buy against.
Now the honest part, because a number you cannot defend gets argued away the first time someone pushes on it. The estimate is a ceiling on demand, not a receipt, and it prices only the missed order — not the ad spend, ranking, or customers a stockout also costs you. Some shoppers substituted into another product you sell, so the revenue never left the store; some came back a week later and bought it anyway, so the sale was delayed, not lost. The baseline is censored too: during a stockout you observe sales, not demand. In Corsten and Gruen's worldwide out-of-stock study, reported in Harvard Business Review in 2004, the most common shopper response was to buy the item at another store — ahead of substituting a different brand, substituting within the same brand, or delaying the purchase. That was physical grocery two decades ago, not your Shopify store, so treat it as a reminder that the splits exist rather than as your coefficients.
None of that makes the figure useless. It makes it a ranked buying-priority signal rather than an accounting entry: the order of the rows is robust even when the absolute totals are generous, and the order is what you need.
Ask for the report instead of building it
The reason most stores never produce this report is not that the data is missing. It is that building it means picking a date range, joining availability against sales, filtering, and choosing columns — twenty minutes of assembly that gets skipped every month until it is skipped permanently.
Assisty's AI Report Builder removes the assembly step: you type what you want to know and Atlas builds the report from your live store data. "Lost revenue from stockouts" is one of its named, supported report types, and "Where am I losing revenue to stockouts?" ships as a suggested question — so the report starts as a click, not a blank field.
A lost-revenue figure whose date range you cannot see is a figure you cannot defend, so refine it by talking — "add gross profit," "show the last 90 days" — and every filter stays visible as a chip that shows where it came from.
Save it as a Custom Report and it joins My Reports; open it in the full report editor to add charts; export it as CSV, PDF, or Google Sheets. Saving turns a one-off question into the same report next month, on the same definition, so two months are actually comparable.
| Step | What Assisty does |
|---|---|
| Ask | You type the question; Atlas builds the report from live store data — "lost revenue from stockouts" is a supported report type (AI Report Builder) |
| Refine | "Add gross profit." "Show the last 90 days." Only what you asked for changes; the rest of the report stays intact (AI Report Builder) |
| Audit | Every filter appears as a removable chip, and every change shows where it came from (AI Report Builder) |
| Save | Save as Custom Report — it joins My Reports and can be opened in the full editor (AI Report Builder) |
| Schedule | Quick Actions → Schedule Report captures that report exactly — breakdown, time range, filters, columns (Scheduled Reports) |
| Deliver | Email with a CSV, Excel, or PDF attachment to multiple recipients, or Google Sheets, Drive, or a Shopify Flow trigger (Scheduled Reports) |
From a typed question to a recurring delivery, without rebuilding the query.
A retrospective number is only useful before the buying review
Here is where this kind of report usually dies. It gets built once, in a burst of curiosity, three weeks after the month it describes — by which time the reorder for those products has already gone out at last month's quantities. The analysis was correct and arrived too late to change anything.
Which is what scheduled reports are for: build the report once and Assisty runs it on your cadence and delivers it where you work, including reports you built by asking Atlas.
Set the cadence to land the number where the decision happens — daily, weekly, or monthly, down to the hour it runs, in your store's timezone — which decides whether a report meant for a Monday morning review shows up Monday morning or Sunday night.
Two settings matter more than they look. Send when empty: a month with no stockouts is real information, and suppressing that email means silence carries two meanings — nothing happened, or the schedule broke. Choose on purpose. And run history: every run is kept, with the file it sent, re-downloadable any time, so you can put this month's rows beside the last three and see whether the same product keeps appearing. One month of lost revenue is a report. The same SKU on the list four months running is a supplier conversation.