Campaign ROI: incremental vs. cannibalization
Friday afternoon. Esther, the marketing manager at Hotel Peaqplus City, looks with satisfaction at the numbers from a wrapped-up campaign. A “Last Minute Deal” went out by email to her own database: 15% off the BAR (Best Available Rate — the public, standard rate) for the weak days of the next two weeks. The result is striking: 30 bookings came in on the code. Esther is already drafting the triumphant internal message: “The campaign brought 30 bookings!”
Then Daniel, the revenue manager, looks in, glances at the numbers, and asks the question that makes the triumph falter: “How many of these would have come anyway?”
Silence. Esther hadn’t thought about it. The 30 bookings did arrive on the code — but that isn’t the same as the campaign having brought them. Some of them might have booked regardless, only now they did it with the discount, instead of at full price. They don’t represent new revenue but revenue given away: the same guest, for less money.
This lesson is about the most important — and most often skipped — distinction in campaign evaluation: incremental (new) versus cannibalization. A campaign succeeds not because bookings came. It succeeds because new bookings came.
The two kinds of booking that look identical
When 30 bookings come in on a discount campaign, they’re made up of two kinds of people — and in the report they look completely identical.
Incremental (new) booking: a guest who WOULDN’T have come without the campaign. The discount tipped their decision — maybe they chose us over a competitor this time, maybe they decided to travel at all. Their revenue is pure upside: the campaign created it, it didn’t exist before.
Cannibalization: a guest who would have come anyway, at full price — but because they saw the discount, they used it. They brought no new revenue; on the contrary, the campaign took from us: the gap between the full rate and the discounted rate is something we ourselves handed to an already-certain guest.
The trap is that in the booking system both appear identically as “a booking on the code.” Anyone looking only at the number of bookings records both as a success — yet one is a gain, the other a loss. A campaign’s true result is the difference between the two: the net incremental revenue.
A worked example: the Last Minute Deal’s real balance
Let’s break down Esther’s campaign with Hotel Peaqplus City’s data.
The BAR is normally 120 EUR. The discount is −15%, so the campaign rate is 120 × 0.85 = 102 EUR. We break down the 30 bookings that came in (taken as one-night for simplicity), based on Daniel’s segmentation data: 12 incremental (new) and 18 cannibalization (would have come anyway).
The question is always the same as with displacement and the opportunity cost met in lesson 6: what would have happened without the campaign?
| With the campaign (reality) | Without the campaign (what would have been) | |
|---|---|---|
| 12 new (incremental) guests | 12 × 102 = 1,224 EUR | 0 EUR (wouldn't have come) |
| 18 would-come-anyway (cannibalized) guests | 18 × 102 = 1,836 EUR | 18 × 120 = 2,160 EUR |
| Total room revenue | 3,060 EUR | 2,160 EUR |
The net incremental revenue is the difference between the two:
3,060 − 2,160 = 900 EUR
The same comes out from the other direction, and it’s worth seeing it this way too: the 12 new guests brought 12 × 102 = 1,224 EUR from nothing; but to the 18 cannibalized guests we gave away 18 EUR of discount each (120 − 102), which is 18 × 18 = 324 EUR of revenue given up. The net: 1,224 − 324 = 900 EUR. The same number, by two routes.
Here’s the lesson’s shocker. The naive reading says the campaign “brought” 3,060 EUR (30 bookings × 102 EUR). In reality the campaign’s true added value is 900 EUR — barely a third of the naive number. The difference is the 18 guests who would have slept here one way or another.
Was it worth it? The campaign cost and break-even
The 900 EUR isn’t the last word — you still have to subtract the campaign’s cost. Suppose the email tool, the creative, and a bit of supporting advertising cost 400 EUR in total.
Net result = 900 − 400 = +500 EUR
So the campaign was worth it — but the room for manoeuvre is far narrower than the apparent 3,060 EUR would suggest. And that narrow margin depends entirely on the incremental share. Let’s see what would have happened with a worse mix — say only 6 new and 24 cannibalized:
- With the campaign: 30 × 102 = 3,060 EUR. Without the campaign: 24 × 120 = 2,880 EUR.
- Net incremental: 3,060 − 2,880 = 180 EUR, minus the 400 EUR cost = −220 EUR loss.
The same 30 bookings, the same triumphant “30 bookings!” — and in one case +500 EUR, in the other −220 EUR. The difference lies solely in how many would have been our guests anyway.
You can also compute the break-even: how many new bookings are needed for the campaign to cover the 400 EUR cost. The net incremental formula (where x is the number of new bookings): 30 × 102 − (30 − x) × 120 = 120x − 540. Setting that to 400: 120x = 940, so x ≈ 7.8 — meaning at least 8 genuinely new bookings are needed for the campaign not to run a loss. With 12 we’re well above it; with 6, below. That’s the threshold worth keeping in mind before launching a campaign.
How to measure how much is incremental
The fair question: how do we know it was 12 new and 18 cannibalized, not the other way around? Never exactly — but it’s well estimable, and the estimate is far better than nothing:
- Pace-based: if the campaigned dates stood at a weak pace (booking pace), and after the campaign the pickup (bookings taken) jumped sharply versus the usual, that surplus is very likely incremental — we filled empty days.
- If the discount went to a sold-out or strong day, it’s almost certain to be mostly cannibalization: those rooms would have sold anyway, just more cheaply now. (That’s exactly why, in the previous lesson, we tied the campaign to the weak-pace dates.)
- Control comparison: we compare the campaigned period’s pickup with that of a similar, non-campaigned period — the difference approximates the incremental.
The Peaqplus Insight Engine and the Dashboard measure the campaign period’s pickup against the usual rate, so Esther sees how much bookings accelerated as a result of the campaign — this “how much more than otherwise” is the best approximation of the net incremental. The goal isn’t decimal-point precision, but to draw the distinction at all between a booking and a new booking. Measuring campaigns’ incremental and following up on promotions’ revenue impact is covered from Daniel’s perspective in the RM Academy lessons Marketing and RM in concert and A/B testing and revenue experiments — measuring campaign ROI and incremental lift in the system.
Back to Esther
Esther rewrites the internal message. Instead of “we brought 30 bookings,” this goes out: “The campaign brought net ~900 EUR of incremental revenue, against 400 EUR of cost — net +500 EUR, because of the 30 bookings 12 were genuinely new and 18 would have come anyway. Next time we’ll narrow the targeting to the weakest-pace days, to raise the incremental share.”
That sentence isn’t more modest — it’s more precise. And that’s exactly what makes Esther the credible voice at the next revenue meeting: she boasts not about the number of bookings, but about what the campaign truly added to the hotel. Good marketing doesn’t produce traffic, it produces new traffic — and can prove how much.
Key takeaways
- A campaign succeeds not because bookings came, but because NEW (incremental) bookings came. Cannibalization looks the same in the report, but it’s a loss: a discount given to a guest who was coming anyway.
- The true result is the net incremental: revenue achieved with the campaign minus what would have come in without it. In the example, 3,060 − 2,160 = 900 EUR — barely a third of the naive “3,060 EUR.”
- Always subtract the campaign cost, and know the break-even: here at least 8 new bookings were needed to cover the 400 EUR. The same 30 bookings can be +500 or −220 EUR — it depends only on the incremental share.
- Incremental is estimable from pace and pickup data: a campaign sent to weak pace → mostly new; a discount sent to a sold-out day → mostly cannibalization.
- Target the campaign at the weakest-pace dates — there the incremental share is highest, and the cannibalization risk lowest.
Click an answer — you see immediately whether it is right.
Answer all of them and the lesson counts as complete — and toward your progress.
See the full definitions in the glossary.
Did you evaluate your last discount campaign by the number of bookings that came in, or by net incremental revenue? If you estimated how many bookings would have come anyway — would the balance stay positive? And do you have a recurring, "always works" promo (a loyalty discount or early booking, say) whose true incremental you've never measured? What would happen if you switched it off for a period and saw whether the bookings really drop?