Most markdown decisions in small operations go one of two ways: too late, or all at once. Someone finally notices a shelf that hasn't moved in three months, panics, and slaps 40% off everything in the category. The stuff that would've sold at 15% off gets discounted to death. The stuff that needed 60% still doesn't move because 40% wasn't enough. Margin bleeds on both ends.
The fix isn't "discount smarter" as some vague principle. It's building a set of rules that read your inventory the way you'd read a patient's vitals — Days of Inventory (DOI), aging buckets, sell-through velocity — and trigger specific actions at specific thresholds, in a specific order. That's what markdown governance actually is: not a promo calendar, but a decision system tied to signals you already have sitting in your reports.
Why markdown decisions go wrong across almost every business
Markdowns get treated as an event instead of a process. A season ends, a category looks bloated, and suddenly it's clearance time. Nobody defined what triggered it. Nobody decided why 30% and not 20%. And nobody sequenced the cuts, so everything gets marked at the same time and the fast-moving items subsidize nothing.
-
No shared definition of "aged." One person thinks 60 days is old, another says 120. Without agreed aging buckets, you're arguing feelings.
-
Margin blindness. Discounts get set on gut ("let's do 25%") without checking what that does to actual margin dollars left on each unit.
-
Category-wide sledgehammers. Instead of isolating slow SKUs, whole categories get discounted, dragging healthy items down with the dead weight.
-
Late triggers. By the time something gets flagged, it's so aged that only a deep cut clears it — the most expensive outcome possible.
This usually happens because the person watching sales isn't the same person watching inventory age, and neither of them owns margin. The signals exist in the system. They just don't connect to a decision anyone's authorized to make on a schedule.
The signals that should drive the decision
Days of Inventory (DOI). How many days of supply you're holding at current sell-through. A SKU with 240 days of inventory is telling you something loud. This is your early-warning signal — it moves before the item is technically "old."
Never run out of stock or overorder again.
Listoly streamlines inventory workflows to keep your business stocked and profitable.
- Real-time stock tracking
- Automated reorder alerts
- Supplier and purchase management
No credit card required
Aging buckets. Group on-hand inventory by how long it's been sitting: 0–30, 31–60, 61–90, 91–120, 120+. The exact cutoffs matter less than having everyone read the same buckets, where each one maps to a different action.
Sell-through rate. Units sold ÷ units received over a given window. Low sell-through in the first 30 days on a seasonal item is a screaming signal that your first markdown should come early, not at end of season.
Margin floor per unit. The lowest price you'll accept before it's better to hold, donate, or liquidate in bulk. Without this number, discounts have no bottom.
The part most people miss: DOI and aging tell you when, sell-through tells you how urgent, and your margin floor tells you how deep you can go. Using only one of these is exactly why markdowns feel random.
Thresholds: turning signals into automatic decisions
A threshold is just an agreed rule — when this signal crosses this line, this action happens. The value is that it removes the debate and the delay. Here's a working example of how thresholds map to action for a general-merchandise SMB:
| Aging bucket | DOI signal | Sell-through | Default action | Markdown depth |
|---|---|---|---|---|
| 0–30 days | DOI > 180 | < 20% | Watch, adjust reorder | 0% (no cut yet) |
| 31–60 days | DOI > 120 | < 30% | First markdown | 10–15% |
| 61–90 days | DOI > 90 | < 40% | Second markdown + reslot | 20–30% |
| 91–120 days | any | < 50% | Deep markdown, feature placement | 30–45% |
| 120+ days | any | any | Clear: bundle, liquidate, or donate | 50%+ or exit |
These aren't universal numbers — a fashion retailer runs tighter buckets than a hardware store selling fasteners. The structure is what transfers. Each bucket has a default action so nobody has to reinvent the decision every week. You override when there's a real reason (a known seasonal spike coming, a supplier credit in play), but the default runs automatically.
Worth flagging: your thresholds should be tighter for items with high carrying cost or short shelf life. A bulky item eating storage or a dated product should trigger a first markdown sooner than a small, shelf-stable one. This ties directly into how you rank SKUs by carrying cost when deciding what to cut — the same scoring logic that flags rationalization candidates should sharpen your markdown triggers.
Sequencing: the part almost everyone skips
This is where margin actually gets protected. Sequencing means you don't cut everything at once — you go in waves, smallest cut first, and let each wave run long enough to read the response before deepening.
A visual of the wave ladder helps teams follow the escalate-and-measure rhythm rather than leap to the deepest cut.
-
Wave 1 — light nudge (10–15%). Runs 10–14 days. A surprising number of aging-but-not-dead items move here. If sell-through jumps, you're done and you kept most of your margin.
-
Wave 2 — meaningful cut (20–30%). Only for items that didn't respond to Wave 1. Pair this with a visibility change — better shelf placement, a homepage tile, an email mention. Depth alone doesn't sell; visibility plus depth does.
-
Wave 3 — clearance (30–45%). For the stubborn remainder. At this point you're prioritizing cash recovery and space over margin.
-
Wave 4 — exit (50%+ / bundle / liquidate / donate). The tail that won't move at retail. Bundle it with a fast-seller, sell it in a lot, or write it off cleanly. Holding it costs more than the shelf space it's occupying.
The reason sequencing beats a single big cut: you only pay the deep discount on units that genuinely need it. If 60% of a slow SKU clears at 15% off, you never spent that extra margin on those units. A blanket 40%-off gives it away to buyers who would've paid nearly full price.
Two operational notes. First, don't launch a new markdown wave into an active promotion — overlapping cuts confuse customers and cannibalize each other. If you run frequent promos, sync your markdown waves around them using the same discipline behind short-term reorder rules when promotions and returns overlap. Second, give each wave a hard end date. Markdowns with no expiry quietly become the new normal price, and you've repriced your entire assortment down without meaning to.
A simple ROI check so you're not guessing on depth
Depth should be tested against math, not instinct. Before setting a markdown, run a rough calculation:
-
Hold cost per unit per month = (unit cost × monthly carrying rate) + storage/handling. For most SMBs, carrying rate lands somewhere around 1.5–3% of unit cost per month once you fold in capital, space, and risk.
-
Expected units cleared at depth X = your best estimate of sell-through lift at that discount.
-
Margin dollars recovered now = (sale price − unit cost) × units cleared.
-
Margin dollars saved by not holding = hold cost × months you'd otherwise carry it.
If margin recovered now plus hold cost saved beats what you'd realistically get by waiting, you cut. The point isn't precision to the penny — it's forcing the "what does holding this actually cost me" question that almost nobody asks before discounting.
Quick sanity-check: if an item's remaining margin at a 30% cut is smaller than three months of its carrying cost, holding it is usually the more expensive choice. That single comparison resolves a lot of "should we discount or wait" arguments.
What breaks when you scale past a few dozen SKUs
Governance on paper works fine for 40 SKUs. At a few hundred across multiple categories or locations, it collapses under manual effort. A few places where it typically falls apart:
-
Nobody has time to pull DOI and aging by SKU every week, so reviews slip to monthly, which pushes every trigger late.
-
Buckets get calculated inconsistently between people or spreadsheets.
-
A markdown gets set at one location and not the transfer-eligible sister location, so you're clearing stock in one place while it ages in another.
-
Wave end-dates get forgotten and discounts quietly become permanent.
The coordination cost is the real bottleneck. The logic is simple; keeping it running reliably across hundreds of items and multiple people is not.
This is where AI-assisted operational software earns its place — not by making decisions for you, but by continuously watching DOI and aging buckets, flagging SKUs that crossed a threshold, and drafting the next sequenced wave for a human to approve. The rules stay yours. The monitoring and the tedious "who crossed the line this week" work gets handled automatically, so late triggers stop being your default failure mode. You're not automating judgment, you're automating attention. The signals get watched every day instead of whenever someone remembers to run the report.
When this system makes sense — and when it doesn't
It makes sense when you're carrying seasonal, dated, or fashion-adjacent inventory; when you've got enough SKUs that manual review is slipping; or when your margins are thin enough that giving away discount depth actually hurts.
It's a bad fit when you're mostly holding staple, non-perishable, steady-turn stock where aging isn't a real risk — you'll create process overhead for a problem you don't have. It also doesn't work if your inventory data is unreliable. Garbage DOI numbers produce garbage triggers. Fix data accuracy before you build thresholds on top of it.
Very small operations with a handful of SKUs they know by heart should probably skip formal governance altogether. If you can eyeball your entire assortment in one walk, this is overkill.
A real scenario
A regional home-goods retailer with two locations and roughly 600 active SKUs was running clearance twice a year — big blanket cuts of 40% at the end of spring and fall. Aged stock (120+ days) was sitting around 18% of on-hand value, and end-of-season clearance was recovering pennies while trashing category margin.
They switched to bucket-based thresholds with three-wave sequencing. First markdowns started triggering at 45–60 days instead of end of season. The light 10–15% wave alone cleared a meaningful chunk of what used to sit until the big blowout.
Over about two seasons, aged 120+ stock dropped from roughly 18% to somewhere around 9–10% of on-hand value, and blended clearance margin improved noticeably because far fewer units ever reached the deepest discount tier. Nothing dramatic overnight — just consistently catching slow movers early and cutting only as deep as each item actually required.
The bigger picture
Markdown governance isn't really about discounts. It's about connecting three things that usually live in separate heads: how old your stock is, how fast it's moving, and how much margin you can afford to give up. When those signals feed a set of pre-agreed thresholds and a sequenced ladder of cuts, markdowns stop being a panic response and start being a routine part of keeping inventory healthy.
Start small. Pick your aging buckets, set default actions for each, define one margin floor, and run a two-wave sequence on your slowest category. Watch what clears at the light cut before you ever reach for the deep one. That single habit — going shallow first, deep only when needed — is where most of the protected margin actually comes from.
Start small. Pick your aging buckets, set default actions for each, define one margin floor, and run a two-wave sequence on your slowest category. Watch what clears at the light cut before you ever reach for the deep one. That single habit — going shallow first, deep only when needed — is where most of the protected margin actually comes from.
Ready to optimize your inventory operations?
Join 2,000+ businesses using Listoly to reduce stockouts, save time, and improve order accuracy.