Dead stock rarely stops selling overnight. It fades — a slow decline in velocity that's easy to miss SKU-by-SKU across a real catalog, until a line item shows zero sales and someone finally notices the capital sitting on a shelf.
There's no single industry-wide threshold. A common working definition is a SKU with no sales in 60-90 days and no seasonal reason to expect a rebound, but the right number depends on your category's normal turn rate — a merchant's own historical velocity per SKU is a better baseline than any fixed number pulled from an article.
Dead stock is distinct from slow-moving stock, which still sells, just more slowly than the volume that justified stocking it. Slow-movers often respond to a price or placement change; dead stock usually needs liquidation, bundling, or a write-off.
A simple "zero sales in N days" report only fires after the fact. The more useful signal is a SKU's velocity trend — is it declining relative to its own recent baseline — which can surface a fading product weeks before it hits zero, while there's still time to act (discount, bundle, reroute inventory to a better-performing location).
The tradeoff: a trend-based signal is noisier than a hard zero-sales cutoff, so it needs a reasonable smoothing window to avoid flagging normal week-to-week variance as a false alarm.
Foreshelf's forecasting layer (see inventory forecasting) computes sales velocity per SKU as part of its reorder math, which puts a declining-velocity signal within reach without a separate system. For catalogs with expiry or batch data, a SKU that's both slowing down and approaching its expiry date compounds into a more urgent case — see expiry-aware inventory for that specific interaction.
What Foreshelf doesn't do: recommend a specific liquidation channel or discount depth. Flagging the risk early is the part we've built; deciding how to clear it is a merchant judgment call that depends on margin, brand, and channel constraints we don't have visibility into.