Slow moving inventory vs dead stock vs excess
Three classifications, one metric that separates them, and the different response each one needs. A decision table you can run on your own catalog.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
Slow-moving inventory is stock that still sells at a workable price, just well below your store's normal rate — and it is the only one of the three problem categories where patience is usually the right first answer. The mistake is treating slow, excess, and dead as one pile: they need opposite responses. A slow mover needs a nudge, excess needs a pause on buying, and dead stock needs an exit. Applying the wrong response is how merchants donate stock that would have sold, or wait nine months on stock that never will.
This article gives you a classification rule you can apply in about a minute per SKU, the metrics that feed it, and the specific response for each class. The cost side of the dead end is in dead stock on Shopify; the age data you need to classify is in the inventory aging report.
The classification rule
Two questions, asked in order, sort every SKU:
- Does demand still exist at this price? Test: has it sold at full price in the last 60–90 days, and does a comparable item still sell in your category?
- Is the quantity justified by that demand? Test: does on-hand exceed what the next 90 days of real velocity would consume?
| Class | Q1: demand at this price? | Q2: quantity justified? | Response |
|---|---|---|---|
| Healthy | Yes | Yes | Nothing |
| Slow-moving | Yes, but weak | Roughly yes | Non-price nudges, then one shallow markdown rung |
| Excess | Yes | No — you own too many | Stop buying; hold and let velocity work; bundle the surplus only if space is scarce |
| Dead | No | Irrelevant | Decision and date: markdown, liquidate, donate, write off |
The ordering matters. If demand has gone, the quantity question is a distraction — you are not overstocked, you are holding an obsolete position. If demand is intact but you own too much of it, discounting is usually the wrong tool: you are converting a timing problem into a margin problem. The one thing merchants get wrong most often is marking down excess as if it were dead, then watching the same item sell out at full price two months later.
The three numbers you need
You can't classify without these, and all three come from data you already have.
In-stock velocity. Units sold per week over a real window, counted only on days the SKU had stock. A SKU that was dark for two weeks reads slower than it is, and a SKU that never went dark hides its real ceiling. Skipping this correction is the single most common classification error.
Weeks of cover. On-hand ÷ weekly velocity. This is the quantity test in Q2. Eight to twelve weeks is healthy for most stores; twelve to sixteen is a watch list; past twenty, the quantity is a decision even if the item is still selling.
Age of the oldest units. Not days since last sale — the vintage of the stock you're holding. The two disagree precisely on the SKUs that matter: an item restocked last week with 300 units from a nine-month-old production run looks fresh on recency and is old in fact.
| Weeks of cover | Age of oldest units | Likely class |
|---|---|---|
| Under 8 | Any | Healthy (possibly under-buffered) |
| 8–16 | Under 90 days | Slow-moving if velocity is falling; otherwise healthy |
| 8–16 | 90–180 days | Slow-moving — act on placement before price |
| 16–30 | Any | Excess at best; slow-moving at worst |
| Over 30 | Over 180 days | Dead or effectively dead |
The two-axis read is what makes this work. High cover with young stock is a buying-timing issue. High cover with old stock is a demand issue. High cover with young stock in a seasonal category is neither — it's a calendar problem, and the calendar will solve or destroy it depending on the date.
Slow-moving: the response
Slow movers are recoverable, and the ladder is deliberately cheap-first because most of them don't need a discount at all:
- Check availability before anything else. A SKU that was out of stock for part of the measurement window will always look slow. Fix the data before you fix the price.
- Fix discoverability. Is it buried on page four of a collection, missing from the collection a customer would search, photographed badly, or titled with the supplier's internal name? These are free to fix and frequently account for the whole gap.
- Create a reason to buy now. A content placement, a bundle pairing, an email feature. Costs margin nothing.
- One shallow rung. If steps 1–3 don't move it inside a defined window — two to three weeks, measured — take a single 20% step and re-measure. Then ladder deeper or exit.
The discipline that makes this work is time-boxing. "We'll keep an eye on it" is not an intervention schedule. Each rung gets a start date, an end date, and a sell-through target, and the next rung is triggered by missing the target rather than by someone remembering.
Excess: the response
Excess is a quantity problem with intact demand, and the correct response is almost always restraint plus time. Concretely:
- Stop reordering immediately — the cover is already above the ceiling, so every additional unit extends the problem.
- Don't discount while demand is healthy. You'll sell the units at full price eventually; the only cost of waiting is carrying cost, which is usually less than the margin a blanket discount gives away.
- Break the monotony only if space is scarce. A bundle that attaches the surplus to a fast mover recovers full-ish price on both and buys shelf space back. That's a space decision, not a demand decision.
- Reclassify on a schedule. Excess that sits through a seasonal boundary becomes slow, and slow that sits through a second boundary becomes dead. Set a review date and honour it.
One nuance: excess in a fashion or trend category is functionally dead already, because the price you can get is falling while you wait. The distinction between excess and dead assumes the achievable price is stable. If it isn't, treat the position as dead and skip ahead.
Dead: the response
Dead stock doesn't get patience. It gets a decision and a date, and the decision is a choice among exits ranked by recovery:
- Bundle with a fast mover — best recovery, invisible as clearance, limited by the anchor's availability.
- Markdown ladder — a pre-committed sequence of depths, each with a window, stopping at your cost floor. Deep enough to change velocity, shallow enough to leave margin.
- Liquidate — a lot sale to a buyer who specialises in it. Fast, low recovery, one transaction.
- Donate or write off — for stock with no commercial path, and the honest end of the line.
The arithmetic that governs timing: a position tied up at cost C with carrying rate r burns C × r ÷ 12 per month, and every month of delay also lowers the price a buyer will pay. Both forces point the same direction — early exits recover more. The full ranking with recovery ranges and trade-offs is in how to get rid of dead stock.
Why the classification decays
A class isn't a property of the item; it's a snapshot of demand and position on a date. Three things move SKUs between classes, and all three are ordinary:
- A season turns. Seasonal excess becomes dead on a date, not gradually.
- A substitute launches. Your supplier's new model makes the old one obsolete while it still looks saleable.
- Your own promotion works. A successful bundle converts dead units into cash and, occasionally, reveals that the item was merely mispositioned all along — which is worth remembering before the next write-off.
Because of that decay, classification belongs on a calendar, not in a one-off cleanup. Once a quarter is enough for most stores: pull the aging report, compute cover for the bottom of your velocity distribution, apply the two questions, and write the class next to each SKU with a review date.
Where tooling fits, and where it doesn't
The classification itself is three columns in a spreadsheet and roughly a minute per SKU — worth doing manually at least once, because the exercise is what teaches you which of your assumptions were wrong. After that, the repetitive half is keeping the age and velocity columns current, which is exactly the job software should take: ClearStock tracks slow and dead stock candidates in Shopify and can run rule-based discounts with a cap you set, logged and reversible. It does not forecast, create purchase orders, or count stock — the classification judgment stays yours, and that's the part that matters.
Common questions
What is slow-moving inventory? Stock that still sells at a workable price but turns far below your store's normal rate. Finance calls the broader category SLOB — slow-moving and obsolete — but the operational distinction matters: slow-moving stock has intact demand and responds to placement, promotion, and time; obsolete stock has lost demand and needs an exit.
How do I tell slow-moving inventory from dead stock? Ask whether demand still exists at the current price, not whether the item is old. If it sold at full price in the last 60–90 days and comparable items still sell in your category, it's slow — nudge it. If full-price sales have stopped and no comparable demand remains, it's dead regardless of how recently it moved.
How many weeks of cover is too much? Twelve to sixteen weeks is a workable watch threshold for most general-merchandise stores; past twenty weeks the position needs a decision even if units are still selling. Seasonals and trend goods need tighter ceilings, staples with flat demand tolerate wider ones. Read cover alongside the age of the oldest units — high cover on young stock is a buying-timing issue, not a demand problem.
Should I discount slow-moving inventory or excess inventory? Different answers. Slow-moving stock gets one shallow rung after non-price fixes have been tried and measured. Excess with intact demand usually shouldn't be discounted at all — hold it, stop reordering, and let velocity work, discounting only if storage space is the binding constraint.
How often should I reclassify? Quarterly for most stores, plus immediately after any seasonal boundary. Class is a snapshot of demand and position on a date, not a permanent property: excess becomes slow, slow becomes dead, and a successful bundle can reveal that a "dead" item was only mispositioned.
Next step: take your twenty highest-value SKUs, compute in-stock velocity and weeks of cover for each, and write one of the four class labels next to every line. The labels you hesitate over are the ones worth taking to the aging report — the vintage usually settles the argument.