Loyalty campaigns: how to tell if yours did anything
In short
A loyalty campaign is a promotion with a defined audience and time window, such as bonus points or a win-back offer. To measure its effect, set the metric and comparison before launch. Where feasible, use a randomised control group sized for the effect you need to detect, and include reward costs.
A programme defines the ongoing earning and redemption rules. A campaign changes an offer for one segment and window, such as a 21-day win-back for customers with no order in 90 days. This guide covers that campaign's cost, its comparison group and the decision after the test.
Loyalty campaigns are not loyalty programmes
A programme is standing infrastructure. A campaign is a time-boxed activation inside it, aimed at a segment, with a start date and an end date.
| Programme | Campaign | |
|---|---|---|
| Duration | Ongoing or fixed-term | Defined campaign window |
| Audience | Everyone who joins | One segment you choose |
| Where the cost lands | Ongoing accrual | Concentrated in the window |
| What you measure | Repeat rate, margin | Incremental orders in the window |
| Characteristic failure | Members accrue and never redeem | You pay for purchases that were coming anyway |
A campaign can pay for purchases that would have happened anyway. The comparison needs to estimate that baseline before crediting the offer with the revenue.
Loyalty campaign ideas, and what each one costs
Eight that are actually runnable, with the cost mechanism rather than a promise:
| Campaign | Audience filter | Window | Cost mechanism |
|---|---|---|---|
| Double points weekend | All active members | 2–3 days | Points liability at 2× base earn |
| Points-expiry reactivation | Balance > threshold, dormant 90 days | 14 days | Redemption of otherwise-broken points |
| Tier sprint | Within 20% of next tier | 30 days | Benefit costs during the new tier period |
| Second-order nudge | Exactly one order, 21–60 days ago | 14 days | Fixed voucher cost per conversion |
| 90-day win-back | No order in 90 days | 21 days | Discount depth × responders |
| Birthday reward | Rolling | 7 days | Voucher cost × redemption rate |
| Referral push | Members with ≥2 orders | 30 days | Two-sided reward per completed referral |
| Early access to a drop | Top tier | 48 hours | Capacity, service and opportunity cost |
Early access does not require a price discount, but it can carry fulfilment, support or opportunity costs. Check inventory, eligibility and whether another promotion can be combined with it. Do not assume the reward is costless.
Why member spending alone does not measure impact
Comparing member and non-member spending describes the groups. It does not by itself measure a campaign effect, because the customers who enrol may already buy more frequently.
Here is a store where the campaign effect is exactly zero, by construction.
Hypothetical example, not client data: 1,000 customers in ten equal groups. Group n places n orders a year. AOV is 200 for everyone. Assume customers with at least three prior orders enrol, and the campaign changes no purchasing. These assumptions deliberately isolate selection into membership.
Now run a campaign that changes nobody's behaviour. Nothing. Then measure it the normal way:
Orders per customer per year, in a store where the campaign did nothing
Members average 6.5 orders a year against 1.5 for non-members — 4.3 times more often. Member revenue is 1,040,000 of 1,100,000 total, so 94.5% of revenue comes from members.
The spending gap is real within this model, but the campaign effect is zero by construction. The example shows why a membership comparison cannot establish incrementality on its own.
If your evidence would look identical when the campaign did nothing, it is not
evidence. It is a description of who signed up.
Selection also matters in advertising. Gordon and colleagues compared observational methods with randomised Facebook experiments and found that the estimates often differed. The study supports caution about observational comparisons; it does not establish that every non-randomised method fails in every loyalty programme.
How to run a loyalty campaign you can measure
- Define eligibility, the offer, the primary outcome and the observation window before assignment.
- Randomly assign eligible customers, with a sample size and allocation chosen for the planned analysis. Store the assignment; a stable, tested hash with a campaign-specific seed is one possible implementation.
- Start both groups' observation at assignment. Keep all assigned customers in the analysis, whether or not they open the message, enrol or buy.
- Observe long enough to include returns and possible purchase acceleration. A fixed number of purchase cycles does not prove that orders are incremental.
- Compare contribution per assigned customer and report uncertainty, delivery failures and any concurrent changes.
If calculating from revenue, use consistent definitions:
incremental contribution = incremental net product revenue × pre-reward contribution margin rate − incremental reward and campaign costs
Multiply revenue by the applicable margin before subtracting costs. If discounts or rewards already reduce the net revenue or margin input, do not subtract them again. Directly comparing contribution between groups is preferable when product mix or costs differ.
A matched before-and-after comparison can provide context when randomisation is infeasible. Report its selection and time-trend assumptions; it is not equivalent to a randomised experiment.
How big does the list have to be?
Large enough that the difference you care about is bigger than the noise. This is a formula, not a benchmark:
n per arm = (z(α/2) + z(β))² × [p₁(1−p₁) + p₂(1−p₂)] / (p₁ − p₂)²
The table uses a normal approximation for two independent proportions, equal groups, 80% power and two-sided α = 0.05. The multiplier is 7.849. Values are rounded up and refer to customers per group; effects are absolute percentage points, not relative percent changes.
| Your 90-day repeat rate | Detect +2pp | Detect +5pp | Detect +10pp |
|---|---|---|---|
| 15% | 5,271 | 903 | 248 |
| 25% | 7,547 | 1,248 | 326 |
| 35% | 9,038 | 1,468 | 373 |
These are planning estimates, not guarantees of a conclusive test. A 90:10 split needs a calculation for unequal groups; it cannot be assessed by treating the smaller group as half of an equal-allocation test. Revenue or margin outcomes also need their own variance estimate rather than this repeat-rate table.
What a double-points weekend actually costs
A points multiplier changes the expected reward cost. Calculate the incremental cost relative to the reward customers would receive without the campaign.
A 2× multiplier on a 5% base earn issues 10% of basket value as points. What that costs depends on how many are redeemed:
| Redemption rate | Effective discount |
|---|---|
| 40% | 4.0% |
| 60% | 6.0% |
| 80% | 8.0% |
In this illustrative model, at 60% redemption on a basket of 200, the total expected cash-equivalent reward is 12. The baseline 5% earn would cost 6 at the same redemption rate, so the campaign adds 6. The table below subtracts the total 12 from product gross profit; it does not include payment, fulfilment or other variable costs.
| Gross margin | Product gross profit | After total reward | Share of gross profit |
|---|---|---|---|
| 30% | 60 | 48 | 20% |
| 40% | 80 | 68 | 15% |
| 50% | 100 | 88 | 12% |
At 30% gross margin, the total expected reward of 12 uses 20% of the product gross profit of 60. Other variable costs still have to be deducted. The incremental campaign cost is half of that total in this model because baseline points already existed.
For a simple points rule, reward threshold ÷ (AOV × earn rate) estimates the orders needed to reach a reward. A reward of 50 at a 5% earn rate on a basket of 200 takes five orders. At two orders a year, that is two and a half years, assuming no expiry, exclusions or other earning routes. Check whether that delay fits the buying cycle. Account for outstanding points according to the programme terms and applicable standards.
When to stop
Kill criteria, written before launch. Every signal here is a comparison you run, not a threshold anyone can hand you:
| Signal to investigate | Comparison |
|---|---|
| No measurable incremental benefit | Contribution per assigned customer and its uncertainty across treatment and control |
| Possible purchase acceleration | Cumulative treatment–control difference through the campaign and complete follow-up |
| Reward threshold too distant | Time to reward, point balances, redemption and expiry by cohort |
| Margin erosion | Contribution per assigned customer after rewards, alongside conversion and order value |
| Offer stacking | Combined discount cost and contribution on overlapping promotions |
Compare the expected contribution from another unit of retention spending with the alternatives, using the same horizon and an incremental cost measure. Cost per extra order and CAC per new customer describe different outcomes; comparing them directly does not establish where the budget belongs. See Loyalz retention measurement for the product workflow.
Choose the outcome using these customer retention metrics. For the wider picture of what these mechanics do to repeat purchasing, see retention measured rather than assumed. For the other side of the margin question, how to increase average order value works through what a threshold does to profit.
Common questions
What is a loyalty campaign?
A promotion with a defined start and end date, offered within a loyalty programme to eligible customers. Examples include a double-points weekend or a reactivation offer. The programme supplies the ongoing rules; the campaign temporarily changes an offer.
How do I measure a loyalty campaign?
Define eligibility and randomly assign offer and control groups before launch, with a sample sized for the planned effect. Compare contribution per assigned customer after reward costs. If starting from revenue, apply margin first and then subtract costs that were not already included.
Why can't I just compare members to non-members?
Customers who already buy more may be more likely to join. Their higher spending can therefore predate the programme. A membership comparison alone does not separate this selection effect from a change caused by the offer.
Does a double-points weekend cost anything?
Yes. In the example, a 5% base earn doubled to 10%, with 60% redemption, has a total expected cash-equivalent cost of 6% of eligible spend. The baseline cost is 3%, so the campaign adds 3 percentage points. Include delivery and administration costs separately.
My store is small. Can I still measure a campaign?
Possibly, but a small sample gives less precision. In the table above, a 15% 90-day repeat rate needs 248 customers per group to detect +10 percentage points and 5,271 to detect +2. Plan around your own baseline, target effect, allocation and power. If the sample cannot detect the effect that matters, report operational costs and redemption without claiming proven incremental growth.
See it on your data
On a twenty-minute call we connect one ad account and one month of your orders, and work out the gap between what the platform claims and what your shop took. Profit and POAS stay blank until you enter your margin and costs per order.
Book a demo