Promotion ROI calculator

Did the bonus-points campaign pay for itself?

“Double points this month” looks like a success when lots of members book, but many would have booked anyway. This calculator compares the members who got the offer with a random holdout, counts only the extra trips, charges every bonus paid, and tests whether the difference is real. The statistics are in Impact Evaluation 101, chapters 04 and 13.

1Compare with a holdoutA random group that didn't get the offer shows what the target group would have done without it. The gap between the two trip rates is the uplift.
2Pay for every tripThe bonus goes to every qualifying trip, including the ones that would have happened anyway. That subsidy is usually most of the cost.
3Check the uplift is realWith a small holdout, a gap can appear by chance. The test and the confidence intervals say how much of the result you can trust.
Difference-in-differences · optional, for when the holdout isn't a clean random split

The uplift becomes (target during − target before) − (holdout during − holdout before), so a gap that already existed before the campaign isn't credited to it.

Loading…

Where the money goes

From the bonus paid to the net result

Campaign waterfall

Costs step down from zero, the margin on the extra trips climbs back. The last bar is what the campaign made or lost.

The target group's trips

Every qualifying trip earned the bonus. Only the incremental ones earned margin for the campaign.

    ROI against uplift

    Same members, same bonus, different uplifts

    Is the uplift real?

    Reading the test

    How big should the holdout be?

    Sample size and power, for the next test

    A holdout needs to be big enough to tell a real uplift from noise. Choose the smallest uplift worth detecting (the break-even uplift is a natural choice: below it, the campaign doesn't pay) and how sure you want to be of catching it. The target group stays as entered above.

    Uplift to detect Power

    Power by holdout size

    How it works

    The campaign economics

    Each member either books a qualifying trip during the campaign window or doesn't, so a trip rate is the share of members who book. N is the size of the target group, p₁ its trip rate, p₀ the holdout's, m the margin on an extra trip, B the bonus points per trip, c the cost of a point and F the fixed costs.

    Uplift u = p₁ − p₀ Incremental trips ΔT = u × N Bonus cost per trip b = B × c Campaign cost C = p₁ × N × b + F (every qualifying trip gets the bonus) of which subsidy p₀ × N × b (trips that would have happened anyway) Incremental margin M = ΔT × m ROI (M − C) / C Break-even uplift u* = (p₀ × N × b + F) / (N × (m − b))

    The break-even uplift holds the baseline p₀ fixed and asks how many extra trips the same offer would need to pay for its bonus and fixed costs. It only exists if an extra trip earns more than its own bonus (m > b); otherwise no uplift makes the campaign profitable. The ROI curve uses the same logic: moving along it, the target group's trip rate is p₀ + u and the bonus bill grows with it.

    The statistics

    Significance uses the two-proportion z-test with a pooled standard error, two-sided. Confidence intervals on the uplift use the unpooled (Wald) standard error.

    Pooled rate p̄ = (p₁N + p₀N₀) / (N + N₀) Test statistic z = u / √( p̄(1 − p̄)(1/N + 1/N₀) ), p-value = 2(1 − Φ(|z|)) Standard error of u SE = √( p₁(1 − p₁)/N + p₀(1 − p₀)/N₀ ) Interval on u u ± z₁₋α/₂ × SE Interval on ΔT N × (u ± z₁₋α/₂ × SE) Interval on ROI (N × m × u_low − C) / C to (N × m × u_high − C) / C

    For the ROI interval, the cost is held at what the campaign actually paid: the number of qualifying trips in the target group is observed, so only the split between incremental and would-have-happened-anyway trips is uncertain.

    Difference-in-differences. When the switch is on, the uplift is (p₁ − p₁,before) − (p₀ − p₀,before) and the counterfactual rate for the target group becomes p₁ − u. Its standard error adds the four variances, and the test is a Wald test z = u / SE. This treats the before and during windows as independent samples; with the same members in both, the true standard error is usually smaller, so the interval is on the cautious side.

    An ROI below −100% is possible: it means the target group booked less than the holdout, so the campaign lost margin on top of what it spent.

    Sample size and power. For an uplift δ on a baseline p₀ with p₁ = p₀ + δ, a significance level α and a target group of N members, the power of a holdout of N₀ members is

    Power(N₀) = Φ( ( δ − z₁₋α/₂ × √( p̄(1 − p̄)(1/N + 1/N₀) ) ) / √( p₁(1 − p₁)/N + p₀(1 − p₀)/N₀ ) )

    The calculator solves for the smallest N₀ that reaches the chosen power (bisection), and for the smallest uplift the current holdout can detect. Power rises with the holdout but levels off: if even an infinite holdout isn't enough, the target group itself is too small. The holdout's own cost is the net result its members would have produced if they had received the offer: N₀ × (u × m − (p₀ + u) × b), before fixed costs. When the campaign loses money on each member, that number is negative: the holdout saved money.

    Data and sources

    Limitations

    This is a personal project and isn't affiliated with any airline. For the business side of measuring promotions, read Loyalty 101: Measuring Incrementality.