Three methods, what each one can tell you, and where each one stops.
Dead stock is inventory you still own that has stopped selling. That makes it two facts joined together: the quantity a variant has on hand right now, and the last date that variant sold. Neither one alone identifies it. A variant that has not sold in a year but has nothing in stock costs you nothing; a variant with 400 units that sold yesterday is working fine. You need both, per variant rather than per product, because one size or colour can stall while the others keep moving.
The reason this is awkward in Shopify is that those two facts live in different places. Quantity on hand sits with the product and is always current. Last sale date is not stored anywhere as a field — it has to be derived from order history.
Shopify has an ABC analysis report that grades products A, B, C or D by how much revenue they contribute over a period. It is the closest native answer, and for deciding where your attention belongs it is genuinely useful.
Two limits are worth knowing before you rely on it. It is graded by revenue contribution, so it ranks your weakest sellers but never names the variants that have stopped selling outright — a D grade covers both “sells a little” and “has not sold since March,” and it does not tell you which. And it is plan-gated: Shopify's own documentation tells merchants on the Basic or Lite plan to “download a reporting app with ABC analysis from the Shopify App Store.”
This works on every plan and costs nothing but your time. It is the method most merchants end up using once, and the reason most of them do not repeat it monthly.
Export your products from the Products page in the admin. The product CSV gives you one row per variant with its SKU, the inventory quantity, and the cost per item if you have set one. That is the first half — what you own, and what it is worth at cost.
Then export your orders from the Orders page, choosing a date range that is longer than the window you care about: if you want to find variants with no sale in 90 days, you need at least 90 days of orders, and comfortably more to be sure. The order CSV gives you one row per line item, each carrying a SKU and the order date.
In a spreadsheet, group the order rows by SKU and take the maximum date in each group — that is the last sale date per variant. Bring it alongside the product export by matching on SKU, and multiply quantity by cost to get the cash tied up. Anything with stock on hand, a last sale date older than your window, or no matching order row at all, is dead stock.
Three things to watch. Variants with no SKU cannot be matched this way at all. “No matching order row” is ambiguous — it means either never sold, or not sold inside the range you exported, and only widening the range separates the two. And the answer is correct on the day you build it and stale a week later, which is the real cost of this method: it is a snapshot, and dead stock is a process.
This is what Dead Stock Radar does, and it is the same two facts joined the same way — it just does the joining every day instead of the day you felt like opening a spreadsheet. It reads your catalog and your recent order history, works out the last sale date for every variant, and lists everything still in stock that has not sold inside a window you set, sorted by quantity times cost so the most expensive problems are at the top. A second, shorter window flags what is slowing down before it is fully dead, and a minimum value keeps small lines out of the way.
From there you can export the list, tag the dead products so a clearance collection picks them up, hide them from the storefront, or step prices down on a markdown ladder. The free plan shows your top 10 by cash tied up; Standard is $9.99 a month with a 14-day free trial, billed through Shopify.
If you only need the answer once, method 2 is free and it works — the instructions above are complete on purpose. The app is worth it when you want the number to be right every morning without rebuilding it.
Dead Stock Radar · Shopify App Store listing · How-to guide and FAQ