← Back to blog
StrategyFounder · 3 min read

Discount Cannibalization: How Much of Your Discount Revenue Was Already Coming

Unico CommerceUnico Commerce, Founder

Discount Cannibalization: How Much of Your Discount Revenue Was Already Coming

"Cannibalization" sounds like a supply-chain problem. It isn't. It's the word for your discount eating your own sales — and it happens in three different ways that almost nobody separates.

That matters, because each type requires a different fix. If you lump them together, you'll "fix" the wrong thing.

Type 1: Margin cannibalization (the one everyone talks about)

This is the obvious one. A shopper was going to buy at full price. You showed them a discount. They bought at a lower price.

You didn't create a sale. You just paid to lower the price of one you already had.

How to spot it: compare the conversion rate of shoppers with strong buying signals (repeat visitors, cart-adders who return, returning customers) who got an offer vs. a control group that didn't. If it's the same, the discount did nothing for them.

Type 2: Pull-forward (the one nobody measures)

Pull-forward is subtler and often bigger. The shopper was going to buy — but later, at full price. Your discount didn't create demand; it moved demand forward in time and lowered its price.

This is rampant in consumables, replenishables, and anything people stock up on.

The math. A customer buys your $60 product every 3 months at full price. You run 25% off and she buys three units — a 3-month supply.

  • Without the sale: 3 orders × $60 = $180 over 9 months, all at full margin.
  • With the sale: 1 order × $135 (3 × $45) now, then nothing for 9 months.

You gave up $45 in margin and didn't create a single extra order. You just front-loaded purchases you were going to get anyway — at a discount. And you've now reset her purchase cycle so the next full-price order is even further away.

How to spot it: track inter-purchase time for discount vs. control cohorts. If discount buyers come back later than full-price buyers, you're pulling demand forward.

Type 3: Cross-product substitution

The shopper was going to buy from you regardless — but a different product, often a higher-margin one. The discount steered them to a lower-margin SKU or a discounted one.

You made the sale, but you cannibalized your own margin mix.

How to spot it: compare the margin mix of treated vs. control baskets, not just the total. If treated baskets skew to discounted and lower-margin items, the discount shifted the mix against you.

Why separating them matters

Each type has a different fix:

TypeWhat it looks likeThe fix
MarginFull-price buyers discountedAim offers at the hesitant, with the product most likely to convert
Pull-forwardStock-up at a lower priceLimit quantity, or avoid discounting replenishables
SubstitutionMargin mix shifts downDiscount the SKU you want to move, not everything

If you assume all cannibalization is Type 1, you'll just tighten targeting — and miss that your biggest leak is pull-forward on your bestsellers.

The measurement that catches all three

You need two things:

  1. A control group. Incremental orders = treated minus control. Cannibalization is the flip side of the non-incremental conversions.
  2. Cohort tracking after the promo. Don't stop at the sale window. Watch whether treated cohorts buy less afterward (pull-forward) and what they buy (substitution).

A promo that looks like a win during the sale can be a net loss once you see the post-promo dip.

The takeaway

"Cannibalization" is not one thing. It's three, and only one of them is visible in a normal dashboard.

Margin cannibalization costs you the discount. Pull-forward costs you the discount and a future full-price sale. Substitution costs you the margin mix. Most stores measure none of them, then wonder why a record-revenue quarter didn't show up in profit.