What out-of-stock actually costs a Shopify store
How to estimate the sales you lose when a product sells out, and why plain averages make the problem worse.
What an out-of-stock product actually costs you on Shopify
An out-of-stock product costs you two kinds of money. The first is visible and simple: every day a product stays sold out, its normal sales drop to zero, and that revenue is gone. The second is invisible and bigger than most store owners assume — customers who buy somewhere else and never come back, ad spend pointed at a dead product page, and the refund-and-apology cycle if the product oversold before it went dark.
Shopify will show you that a product is out of stock. It will not show you what that cost. No native report puts a dollar figure on dark days, and the platform's own changelog shipped nothing in that direction through late 2026. This article fixes that with a method you can run on a napkin: how to estimate the lost revenue for any single SKU using numbers you already have, what the best available shopper research says about where the demand actually goes, and where to find your out-of-stock days in the Shopify admin.
The visible cost: sales that simply stop
When a tracked variant hits zero available inventory, Shopify stops selling it. That's the default and usually the right default — the alternative is taking orders you can't fill (more on that problem here).
The math of the visible cost is uncomfortable because the lost sales are so ordinary. If a product quietly sells 9 or 10 units a day, being dark for a week and a half costs you about as much revenue as your best week. Nothing dramatic happened — no refund wave, no scandal. The product just wasn't there, and the money went elsewhere.
Two things make this worse than it looks on the sales chart:
- Your best-sellers go dark most often. They sell fastest, so they hit zero first and most frequently. The products with the most demand spend the most days unavailable.
- The cost hides in the denominator. A day at zero sales looks identical to a day of low demand in every standard report. That's not just a reporting nuisance — it corrupts the velocity numbers you use to decide how much to reorder, which is why dark products have a habit of staying dark (the full explanation).
The invisible cost: where the demand actually goes
The visible cost assumes the sale merely waits for you. Mostly, it doesn't.
The landmark 2002 out-of-stock study commissioned by the Grocery Manufacturers of America (Coca-Cola Retailing Research Council) observed 71,000 shopper decisions across 14 countries and recorded what people did when the item they wanted was out of stock. It remains the most-cited decomposition of out-of-stock shopper behavior:
| What shoppers did when the item was out of stock | Share |
|---|---|
| Went to another store to buy the item | 31% |
| Bought the same brand at another store later | 26% |
| Bought a substitute item in your store | 19% |
| Delayed the purchase (came back for it later) | 15% |
| Bought nothing at all | 9% |
Three honest readings of this table:
- It's retail-wide, not Shopify-specific. The study is from 2002 and was run largely in grocery and mass retail. Treat the percentages as a directional map of shopper behavior, not a conversion rate for your store.
- At best, only about a third of the demand waits for you (the 19% who substitute in-store are partly recaptured, and the 15% who delay may or may not return). The majority — 57% — walks to a competitor with the item in hand.
- The 31% who switched stores are the expensive ones. In a grocery aisle, "another store" is a competitor across town. In ecommerce, it's the next tab. If they buy from a competitor, you may have lost the sale and handed a new customer to someone else.
The invisible cost also includes things the study doesn't capture:
- Wasted ad spend. Shopify sellers in community threads regularly describe paying for ads that land on sold-out product pages — you pay the click cost and convert nothing.
- Page decay. A product page that sits out of stock stops accumulating fresh sales signals while its rivals keep selling.
- Support load. If the product oversold first, add the cost of cancelled orders, refunds, and apology emails.
A simple method to estimate what a dark product cost you
You can't know exactly how many sales a dark product would have made. But you can estimate it honestly with three numbers:
Estimated lost revenue = out-of-stock days × in-stock-only daily velocity × price
Each piece matters:
- Out-of-stock days are a fact, not an estimate. Shopify knows when available inventory was zero (more on retrieving that below).
- In-stock-only daily velocity is the product's average units-per-day computed excluding the days it was unavailable. This is the part almost everyone gets wrong: if you compute velocity across all days, the dark days drag the average down and you'll understate the very losses you're measuring. If your product was dark 11 of the last 90 days, the denominator is 79, not 90.
- Price is your listed price; use the average realized price if you run frequent discounts.
Worked example
Suppose a variant of yours — say a $28.99 kitchen gadget — did the following over the last 90 days:
- Sold 686 units
- Was available for sale on 73 of those 90 days (dark for 17, most recently an 11-day stretch)
Step 1 — in-stock-only velocity:
686 units ÷ 73 in-stock days = 9.4 units per day
Step 2 — estimate the units the 11 most recent dark days would have sold:
9.4 units/day × 11 days = 103.4 units, call it 103
Step 3 — convert to revenue at the listed price:
103.4 units × $28.99 = about $3,000 in estimated lost revenue
The same estimate through a margin lens
Revenue overstates what you actually lost, because you'd have paid for the goods too. If your contribution margin on this SKU is $11.60 per unit (price minus product cost, shipping, and fees), the same 103 estimated units cost you:
103.4 units × $11.60 = about $1,200 in estimated lost margin
Run both numbers. The revenue figure tells you how big the hole is in your top line; the margin figure tells you what it did to the bank account. Both are estimates — the velocity assumes the dark days would have looked like your available days, which seasonality, promos, and demand trends can bend in either direction. The out-of-stock days are the fact; the dollar conversion is the estimate. Treat the output as a floor for planning, not an invoice.
One refinement worth making: don't average velocity across a whole quarter for a trending product. A 90-day average on a product that's accelerating will understate the recent dark stretch. When in doubt, compute velocity over the last 30 available days only.
Where the demand goes while you're dark — and what you can do about it
Map the 2002 decomposition onto your store and the mitigation options become obvious:
- The 31% (switch store): these sales are gone within minutes. Your only lever is being back in stock faster, which is a buying-decision problem, not a storefront problem.
- The 26% (buy the brand elsewhere): unless you're the only seller of your brand, same story.
- The 19% (substitute): recaptured automatically, but weaker than it sounds — substitutions in a physical aisle happen in front of the shelf. Online, a sold-out page has no shelf; it just says "Sold out." A related-products section helps a little.
- The 15% (delay): this is the group you can actually recover, and Shopify gives you a basic tool for it: customers can ask to be notified when a product is back in stock, and the admin can send a restock email when you add inventory. It's a plain, single-email mechanism — no SMS, no segmentation — but it's free and it targets exactly the people who already wanted the product. The Shopify Help Center covers the mechanics (accessed Oct 2026); check how your theme exposes the signup on the product page.
- The 9% (buy nothing): unrecoverable and, honestly, the cheapest loss in the table.
The practical conclusion: restock notifications soften the delay group, but the majority of demand leaks to competitors in real time. Speed of restock beats any storefront trick. That's why the estimation method above matters — it tells you which dark products justified a rush order and which didn't.
How to see out-of-stock days in the Shopify admin
Shopify tracks inventory states per variant and location: Available (sellable), Committed (reserved for orders), Unavailable, Incoming, and On hand (the total). A product is out of stock when tracked Available inventory sits at zero — the states are documented in the Shopify Help Center.
What you can do natively today:
- See what's dark right now. On the Products → Inventory page, filter Available = 0 (or a range), sort by Available, and save the filter as a view you can revisit daily. The Inventory page supports saved views and column customization per the Help Center.
- Snapshot your inventory. The inventory CSV export gives you per-location quantities with all inventory states. Export it on a schedule — say every Monday — and the files become a do-it-yourself history of when products sat at zero.
- Automate dark-day alerts. Shopify Flow can trigger on "Product variant out of stock" and email you; the template library includes a daily out-of-stock summary email.
What you can't do natively: Shopify keeps no per-SKU ledger of how long each variant was out of stock over past months, and no native report converts dark days into lost sales. You can approximate with the snapshot habit above or by eyeballing order history, but the moment a product went dark and the moment it returned won't be in any standard report. For a fuller list of what the native reports do and don't cover, see the Shopify inventory reports breakdown.
This gap is the reason the estimation method in this article exists as a repeatable process rather than a button. Which is a decent segue:
Keeping the ledger without the spreadsheet work
This is the problem InventoryX was built around, so take the mention for what it is. The app maintains a stockout-days ledger per SKU — a running record of how many days each variant was unavailable — and pairs it with in-stock-only velocity to produce an estimated lost-revenue figure per SKU, ranked so the expensive dark stretches surface first. The estimates are labeled as estimates, because that's what they are. If you'd rather keep the ledger by hand, the snapshot-export routine above works; it's just slower.
Two articles extend this one. Why your sales velocity numbers lie during stockouts covers the measurement side — how dark days quietly corrupt every average you compute. And on the prevention side, the inventory forecasting guide shows how corrected velocity feeds reorders that keep you from going dark again, while the dead stock guide covers the opposite failure: capital frozen in stock that won't move. Stockouts and dead stock are the same buying discipline failing in two directions.
Your next step
Pick your three best-selling SKUs and run the three-step estimate on their most recent dark stretch — velocity from available days only, days dark, price. Two of the three numbers you already have, and the third is a filter in the Inventory page. When you're done, look at where those SKUs sit today: if any of them is closer to zero than you thought, the low stock alert setup guide shows how to set thresholds that fire early enough to matter.