We Scanned 58 Shopify Stores and Found 18% of Inventory Hasn't Sold in a Year
Across the 58 Shopify stores in our free scanner's corpus, 18% of live, in-stock products haven't recorded a single unit sold in the past twelve months — still active, still linked from a collection page, still counted in inventory value. Shopify has no report called "dead stock," but the pieces to build one are already sitting in Analytics, and almost every guide pointing merchants toward a paid app skips past them.
Across the 58 Shopify stores in our free scanner's corpus, 18% of live, in-stock products haven't recorded a single unit sold in the past twelve months. They're not hidden, discontinued, or archived — they're still active, still linked from at least one collection page, and still counted in your inventory value. Shopify has no report that names this for you. It has three reports that get you most of the way there, and almost every guide we found sends merchants to a paid app before mentioning any of them.
What we counted, and what we didn't
Our scanner flags a product as dead stock when two public signals hold together across two scans of the same store taken at least twelve months apart: the product's storefront-visible inventory quantity hasn't dropped, and the product is still live — in stock, or set to continue selling without stock — and still reachable from the store's own navigation, collections, or sitemap. Neither signal alone proves anything; a store that restocks to the exact same round number every cycle would look identical to one that never sold a unit at all. Held together across a full year, they're a reasonable, deliberately narrow proxy for "nobody bought this." Products with inventory tracking turned off, made-to-order items with no real stock count, and anything a merchant paused or unpublished rather than left live don't show up in our 18% even if they've genuinely never sold. Like the alt-text and duplicate-description figures from this same corpus, this number is much more likely to be a floor than a ceiling.
Why "check your sell-through rate" isn't quite the answer
The instinct once you know this is common is to open a report and go looking, and Shopify does have one built for exactly this: Products by sell-through rate, under Analytics > Reports > Inventory, which shows what percentage of a product's starting inventory sold during a chosen date range. The catch is the date range. Left on whatever window the report opens with, a product that sold its last unit eleven months ago and nothing since can still show a nonzero sell-through rate if that one sale falls inside the window — and a genuinely seasonal product can show 0% if you happen to check it outside its season, which isn't the same thing as dead. The report is accurate for what it measures. It only answers your actual question — has this sold in the past year — if you deliberately set the range to a full year before you look, which nothing in the report prompts you to do.
The second report worth pulling alongside it is Inventory remaining per product, in the same Inventory category, which estimates days until stock depletion from recent sales velocity. A product with genuinely zero velocity typically can't produce a meaningful depletion estimate at all — that gap, not a specific number, is the tell. Cross-checking a near-zero sell-through result against an unreadable or absurdly high depletion estimate on the same SKU is a stronger signal than either report alone.
ABC analysis by product, the third report merchants reach for, is not actually built for this and gets misread more than any of them. It grades products into A, B, and C tiers by share of revenue — roughly the top 80% of revenue, the next 15%, and the bottom 5% — using retail price and excluding discounts. That's a grade on revenue contribution, not on recency of sale. A $12 accessory that sells forty units a month will sit in the C tier next to a product that hasn't moved in two years, because both contribute a small slice of total revenue; the report has no way to tell you which of its C-grade products is quietly profitable in volume and which is dead. Treating a low ABC grade as a dead-stock signal is the single most common mistake we see in how merchants use this report, and it's also worth knowing that ABC analysis isn't available natively on the Basic or Lite plan — Shopify's own documentation points those stores to a reporting app from the App Store instead.
Why a dead SKU costs more than the capital tied up in it
The inventory-value hit is the obvious cost and usually not the biggest one. A product that's dead but still Active stays exactly as visible to Google as anything else in your catalog — still crawled, still indexed, still linked from whatever collection page it belongs to, and still splitting relevance signals with the products around it that are actually converting. We've covered how Shopify's "On Hand" and "Available" fields diverge for entirely legitimate reasons — committed stock, safety stock, quality holds — but dead stock is different from all of those: nothing about its listing is paused, held, or waiting on anything. It's simply live and getting zero return on the crawl budget, collection real estate, and inventory-value line it occupies. A collection page with a handful of genuinely dead products mixed in among live bestsellers is a weaker page than the same collection with those products removed, both for the customer scanning it and for Google deciding how much weight to give it.
What to actually do once a SKU is confirmed dead
Confirming dead stock and deciding what to do with it are separate questions, and the second one depends on why it's dead. A single clearance push at a real discount is worth trying once, on a defined timeline, before anything more drastic — but if a markdown doesn't move it, repeating the same markdown quarterly is just a slower way of admitting it isn't going to sell. For stock that's genuinely done, the options are archiving the listing outright, folding the remaining units into a bundle where the dead item rides alongside something that does sell, or writing it off and moving on. What doesn't help is quietly setting a product to draft while leaving old links to it pointing at a dead URL, or leaving it Active "just in case" for another year — that's the same decision deferred, not made, and it's exactly the pattern this data study is measuring. If you're weighing whether to rebuild your reorder and inventory workflow around this kind of check going forward, that's a natural moment to revisit tooling — Stocky's shutdown already forced that decision for a lot of merchants this year, and a dead-stock check is worth building into whatever replaces it rather than treating as a separate annual chore.
Who this doesn't apply to
If your store is younger than twelve months, you don't have enough history for this check to mean anything yet — give it a full year before drawing conclusions from either our method or Shopify's native reports. Genuinely seasonal categories (holiday decor, ski gear, garden furniture) will show long stretches of zero sell-through that are completely normal and not dead stock at all; check them against the same period last year, not against the trailing twelve months in isolation. And if you run make-to-order, dropship-on-demand, or anything else where "inventory" is a number you don't actually hold, none of this — our scan or Shopify's own reports — is measuring anything real for you, because the whole premise is stock sitting unsold, and you don't have stock sitting anywhere.
The rest of the corpus, for context
Dead inventory is one of four catalog-hygiene patterns we track across every store our free scanner audits, aggregated and never tied to a named store. In the same batch: 42% of stores had physical products with no weight set, which breaks weight-based shipping rates at checkout; 19% had product images missing alt text; and 38% had at least one product description duplicated word-for-word against another page, a pattern we went deeper on in our duplicate-description data study. Dead inventory and duplicate descriptions are both patterns that produce no visible error anywhere in Shopify's admin — the product page loads, the listing looks normal, and nothing tells you it's a problem unless you go looking with the right report and the right date range.
Checking whether your own catalog has this pattern takes longer by hand than it should, mostly because of the date-range trap above. Our free store scanner flags this alongside the weight, alt-text, and duplicate-description issues automatically, without needing admin access. If a check turns up dead stock across dozens of SKUs rather than a handful, that's usually worth treating as a catalog or purchasing-process problem rather than a product-by-product cleanup — that's the kind of Shopify catalog and inventory work we take on directly, and finding out which one you're looking at costs nothing.