Discount Cannibalization: The Hidden Cost of Every Promo
RedHub AI Editorialupdated October 4, 20265 min read

Jump to a section7
Discount cannibalization is the share of a promo's sales that would have happened anyway, at full price, so the discount on them buys nothing. Those sales still count as promo revenue, which is why the problem hides so well. A receipt from a first-time buyer and a receipt from a regular who was coming in on Friday regardless look identical in your POS. The only way to separate them is to estimate what would have happened if the promo had never run.
TL;DR: Every promo unit is either incremental (a sale the discount created) or cannibalized (a sale you'd have made anyway). Pulled-forward purchases, where a buyer moves next week's order into the sale, belong in the cannibalized bucket and are the easiest ones to miss. Estimate your split from a matched comparison period, the dip after the promo and a holdout group if you can run one. When unsure, count a sale as cannibalized.
Two buckets, one receipt
Incremental units are sales the discount created: a first-time buyer who was on the fence, or a regular who adds a second unit they would have skipped at full price. Cannibalized units are sales you'd have made anyway: a regular buying on their usual schedule, or a buyer who moves a purchase they'd have made next week into the sale.
That last case causes the most trouble. A pulled-forward purchase shows up during the promo as extra volume, so it reads as new demand. It isn't. It is next week's sale at this week's discount, and next week will be short by exactly that much.
Reading the week after the promo
- A normal week sells 100 units. The promo week sells 150, so the raw lift is 50 units.
- The week after the promo sells 80, which is 20 below normal. Those 20 sales didn't vanish. They happened early, at the discount.
- That leaves 30 incremental units out of 150, an incremental share of 20%. The other 120 are cannibalized: 100 of normal demand plus 20 pulled forward.
- The discount on the 120 cannibalized units is 120 × $10, or $1,200 handed to buyers who needed no persuading. The 30 incremental units add 30 × $10, or $300.
- Net result: $300 − $1,200 = −$900 against no promo.
Had you stopped at the raw lift, you'd have counted 50 incremental units, not 30. That still loses money at this discount, but it understates the loss by $400. The pillar post lays the same two weeks out side by side, revenue and margin.
How to estimate your own split
- Use a matched comparison period. Same days of the week, same season, ideally the same product on a different date. Otherwise you can mistake a seasonal bump for promo lift.
- Read the weeks after the promo. Look two or three weeks out. A dip below normal is the clearest sign of pulled-forward demand. Stock-up products, the kind people keep in a cupboard, can dip for longer than a week.
- Split new buyers from existing ones. A promo sent only to your own customer list leans toward cannibalized sales, because everyone on that list already knows where to buy from you.
- Run a holdout when you can. Send the code to a random half of your email list and nothing to the other half. The gap in purchase rates between the halves is the closest thing to a measured incremental share.
- Default to cannibalized. A sale you can't classify goes in the cannibalized bucket. Being too cautious costs you a promo. Being too generous repeats the loss.
When the dip is too small to read
The 20-unit dip in the example is clean because the example is made up. Real weeks are noisy. If your ordinary weeks swing between 85 and 115 units, a week of 80 might be pull-forward, or it might be an ordinary slow week. One promo and one week after can't settle it.
The new-versus-existing split has its own blind spot. An existing customer's extra unit is incremental, and a new customer who found you through a search ad during the promo might have bought at full price. Treat each method as a partial read. If two of them roughly agree, use the lower figure. If none of them agree, the honest incremental estimate is a range, and the promo should be judged at the bottom of it.
Why it compounds when a promo repeats
A single cannibalized promo costs you one bad fortnight. A promo you repeat every month, because the revenue line always looks fine, becomes a standing cost nobody questions. The same leak shows up outside the promo calendar too: our post on reducing cart abandonment without discounting works through a recovery code where part of the discount goes to shoppers who would have come back anyway. The fix is the same in both places. Score each discount on margin against the no-discount baseline before you run it again.
See the discount you handed to full-price buyers
The Discount & Promo Profit Analyzer takes your incremental estimate for each promo and separates new demand from sales you'd have made anyway. Its dashboard totals the margin handed to full-price buyers across every promo, next to a keep, limit or kill verdict for each one.
Get the Discount & Promo Profit Analyzer — $39Pairs well with
The Returns & Refund Profit Analyzer ($39) measures the other quiet margin leak, true profit per SKU after refunded margin, processing cost and unrecovered stock, with a keep, fix or drop verdict. If your promo exists to win new customers, the CAC & Payback Calculator ($49) puts it beside your other acquisition channels, with CAC, payback, LTV:CAC and an invest, hold or cut verdict per channel. The Cart-Recovery Sequence Effectiveness Gate ($49) grades a recovery flow on seven levers, discount discipline among them, banded OPTIMIZED, UNDERPERFORMING or DORMANT.
More in this guide
What is discount cannibalization?
It's the part of a promo's sales that would have happened at full price anyway. The discount on those sales creates nothing, so it comes straight out of margin.
Is a pulled-forward purchase incremental or cannibalized?
Cannibalized. A buyer who moves next week's purchase into the sale was going to buy anyway. The promo week looks bigger and the following week comes in short by the same amount.
Can I measure cannibalization from my sales report alone?
No. A sale looks the same in your POS whichever bucket it falls into. You have to estimate the split from comparison periods, the dip after the promo, the new-versus-existing buyer mix or a holdout group.
What's a warning sign that a promo was mostly cannibalized?
A drop below normal sales in the weeks right after the promo ends. It usually means customers moved purchases they were already going to make. Check that the dip is bigger than your normal week-to-week swing before you read much into it.
Should I assume cannibalization is high or low when I'm unsure?
High. A cautious estimate that kills a weak promo costs little. An optimistic one that repeats a losing promo repeats the loss every time it runs.
How does the Discount & Promo Profit Analyzer handle cannibalization?
You supply your incremental-share estimate with each promo's units, discount, price and cost. It computes net margin against no promo, a keep, limit or kill verdict, and the total discount handed to full-price buyers.


The gate this post refers to, drawn from the tool’s own logic. See the tool.