When to Drop a Product Line: The Numbers That Make the Call
Adding a SKU is a decision someone makes. Keeping it is not — it's what happens when nobody makes a decision. That asymmetry is why catalogs grow a tail of lines that sell a few units a year, tie up cash, absorb a share of every price-file review, and never quite look bad enough to cut. The useful question is almost never "is this SKU losing money?" It usually isn't. The question is what the capital and attention it consumes would earn somewhere else.
The number that ranks a catalog: GMROI
Gross margin alone can't rank products, because it says nothing about how long the money sits still. Turns alone can't either, because a fast-moving item at a terrible margin is just an efficient way to lose. GMROI — gross margin return on inventory investment — combines them into one figure: how much gross profit each dollar of inventory produces per year.
GMROI = annual gross profit ÷ average inventory at cost
equivalently: GMROI = margin × turns ÷ (1 − margin)
A GMROI of 2.15 means every $1.00 parked in that item throws off $2.15 of gross profit a year. Below 1.00, the line generates less gross profit in a year than the cash it holds — before you've paid for a single hour of handling it.
The high-margin line is the worst performer on the shelf and the one most likely to be defended in a meeting, because 45% sounds like a good business. It isn't earning its keep: 0.45 × 1.2 ÷ 0.55 = 0.98. The thin commodity line at 22% is the best use of a dollar in this catalog.
| Margin | 1 turn | 2 turns | 4 turns | 6 turns | 8 turns | 12 turns |
|---|---|---|---|---|---|---|
| 20% | 0.25 | 0.50 | 1.00 | 1.50 | 2.00 | 3.00 |
| 25% | 0.33 | 0.67 | 1.33 | 2.00 | 2.67 | 4.00 |
| 30% | 0.43 | 0.86 | 1.71 | 2.57 | 3.43 | 5.14 |
| 35% | 0.54 | 1.08 | 2.15 | 3.23 | 4.31 | 6.46 |
| 40% | 0.67 | 1.33 | 2.67 | 4.00 | 5.33 | 8.00 |
| 50% | 1.00 | 2.00 | 4.00 | 6.00 | 8.00 | 12.00 |
GMROI by margin and annual turns. Anything under 1.00 is a line whose yearly gross profit is smaller than the cash it holds.
A slow SKU, costed properly
Abstractions don't get cut; specific SKUs do. Take one from the tail: it sells 18 units a year at $46.00 with a supplier cost of $31.00. Margin is (46 − 31) ÷ 46 = 32.6%, which looks perfectly respectable. Annual gross profit is 18 × $15.00 = $270. You carry 12 units on average, so average inventory at cost is $372, turns are (18 × 31) ÷ 372 = 1.5, and GMROI is 270 ÷ 372 = 0.73.
Now subtract what it costs to keep. Carrying cost — capital, space, insurance, obsolescence risk — is a policy number; 20% of average inventory value per year is a common working assumption, so $74.40. Per-SKU administration is the part everyone forgets: cycle counts, catalog data upkeep, one line to review in every supplier price file, the occasional photo or spec correction. Call it 45 minutes a year at $25/hour — $18.75.
It's profitable. This is the moment most reviews stop, and it's the wrong place to stop. If your catalog's median GMROI is 2.5, the $372 sitting in this SKU would generate about $930 of gross profit somewhere else in the same year. Keeping it costs you roughly $660 a year in foregone profit — a number that never appears in any report, because opportunity cost never does.
A cost increase is the fastest route onto the list
Margin sits in the numerator of GMROI, so supplier cost moves the ranking harder than sales volume does. Same SKU, supplier goes from $31.00 to $35.00 — a 12.9% increase, unremarkable by current standards. Hold the price at $46.00 and margin falls to 11 ÷ 46 = 23.9%. Annual gross profit drops to 18 × $11.00 = $198. Average inventory at cost rises to 12 × $35.00 = $420, because the same twelve units now cost more to hold.
GMROI = 198 ÷ 420 = 0.47 (was 0.73)
A 12.9% cost increase cut this line's return on inventory by 35%. Nothing else changed — same demand, same shelf, same everything. The line quietly moved from "underperforming" to "actively wasting capital," and unless someone was watching the cost field, no report said so. Shopify holds one cost per variant with no history, so there is nothing in the admin to compare the new number against.
Repricing to hold the margin gives 35.00 ÷ (1 − 0.326) = $51.93, and if volume holds, GMROI returns to 0.73 exactly — margin and turns are both unchanged. But a 12.9% price rise on a line that already sells 18 units a year is precisely where volume doesn't hold. Drop to 14 units and you get $16.93 of profit per unit, $237 a year, GMROI 237 ÷ 420 = 0.56. Both responses land below where you started, which is the honest signal: this line has been telling you something for a while, and the price file just made it audible. The mechanics of choosing between hold and reprice are in recalculating margin after a cost increase, and the negotiation levers worth pulling first are in the five-step response.
Four questions before you cut
1. Does it carry other orders?
The single most expensive mistake in catalog pruning is deleting an item that brings baskets with it. Check the attach rate before anything else: of the 18 units sold, how many arrived in orders containing other products?
Suppose 11 of them did, in orders averaging $130 with $42 of gross profit each. If dropping the SKU sends half of those customers elsewhere, you lose 5.5 × $42 = $231 a year on top of the $270 the SKU earns directly. Risk-adjusted gross profit becomes $501, and GMROI on the same $372 of inventory is 1.35 — nearly double the standalone figure, and a different conversation entirely.
This is where "range credibility" arguments get either confirmed or destroyed. A line customers genuinely expect you to stock will show it in the attach data. A line someone is fond of won't.
2. Is the weakness structural or circumstantial?
Before ranking a line poor, rule out the boring explanations: it was out of stock for four months; the supplier's own supply collapsed; the fitment or compatibility it served has aged out; a seasonal window was missed; it lost its ad placement. Twelve months of poor numbers caused by six months of empty shelves is not evidence about the product.
3. Is there a cheaper fix than exit?
Dropping is the most expensive option on a list of five, and it's usually reached first.
- Raise the price and let demand answer. On slow, hard-to-source or low-substitutability items this often costs less volume than expected, and the test is nearly free.
- Stop stocking, keep selling. Move to special-order or drop-ship. GMROI is undefined when average inventory is zero, which is the point: the line keeps its contribution and stops consuming capital.
- Cut the depth, not the line. Going from 12 average units to 4 triples turns and triples GMROI without removing anything from the catalog.
- Second-source it. A different supplier, a different pack size, or a different multiplier tier can restore the margin — sometimes for the same physical part under a different number.
- Cut the marketing spend, keep the listing. If it can't carry ad cost, stop advertising it before deleting it.
4. What does the exit actually cost?
Exit is not free, and the cheapest route varies. For our 12 remaining units at $31.00 cost — $372 tied up:
| Exit route | Recovered | Net vs cost |
|---|---|---|
| Markdown to clear, 35% off $46.00 retail | $358.80 | −$13.20 |
| Return to vendor, 20% restocking + $25 freight | $272.60 | −$99.40 |
| Write off / dispose | $0.00 | −$372.00 |
Markdown row: 12 × $46.00 × 0.65 = $358.80. RTV row: $372.00 × 0.80 − $25.00 = $272.60.
Markdown wins here by a wide margin, which is typical when the item still has a retail price above cost and any demand at all. Even the worst realistic route pays back quickly: freeing $372 at the catalog's median GMROI of 2.5 generates about $930 of gross profit a year, roughly $17.88 a week, so a $99.40 exit cost is recovered in about five and a half weeks. Compare that with the $660 a year the line costs you by staying.
Making it a routine instead of a purge
Catalog pruning done as an occasional crusade is destructive: it happens under time pressure, it uses whatever data is at hand, and it cuts things nobody checked the attach rate on. Done quarterly on a short list, it's unremarkable maintenance.
- Rank every SKU by GMROI using trailing twelve months of gross profit over average inventory at cost. You need cost history for this to mean anything — if your cost field has been overwritten silently over the year, your trailing gross profit is fiction. That problem, and what it does to reporting, is covered in what COGS includes and silently misses.
- Flag two lists. Anything below 1.00, and anything that fell more than 25% since last quarter. The second list is the early-warning one and it's usually shorter and more actionable.
- Adjust for returns and shrink before judging. A line with a high return rate earns less than its margin suggests; the allowance arithmetic is in returns, restocking and shrink. A line that's cheap to serve deserves a lower hurdle, the same logic that drives a tiered margin floor.
- Run the four questions on the survivors of the flag lists — attach rate, structural vs circumstantial, cheaper fixes, exit cost.
- Decide something for each. Including "keep, reviewed, revisit in two quarters." A documented keep is a decision; silence is not.
The output of a good review is rarely a long delete list. It's usually a handful of price rises, two or three lines moved to special-order, one genuine cut, and a written note on why the rest stayed. That note is what makes the next review take twenty minutes instead of a day.
Ranking a catalog starts with honest costs
GMROI, contribution and every hurdle on this page are only as good as the cost behind them. Load your latest supplier price list and your Shopify product export into the free Supplier Price Margin Checker to see which lines have drifted — matched by SKU, entirely in your browser.
Open the free checker ↗