Skip to content
Back to Academia

Loyalty programmes: points rules and the economics of rewards

09.08Email, CRM and retention
On this page

This lesson uses a different business: a cosmetics shop in Almaty with a store and a delivery service. The shop's numbers are made up. Indira has 10,000 ₸ of goods in her basket and opens her points balance on her phone at the till: 500 points. The cashier says points do not apply to part of the basket. Nobody mentioned that when she signed up, so Indira argues while the queue behind her grows. That evening the owner, Saltanat, asks you to come up with a new promotion. Start with the rules of the programme she already has: otherwise a new promotion will break at the same till.

A loyalty programme gives people a reason to come back: a discount paid for with points, a service, or access to something an ordinary purchase does not include. As the marketer, you are responsible for two things. The customer has to be able to use the benefit, and the shop has to know what money pays for it.

A benefit that gives people a reason to return

Before you choose software, decide what the programme should change in how customers behave. Coming back a second time, adding a consumable to every order, buying skincare only from you: each of these needs its own mechanic. A gift on the sixth purchase goes to people who already got that far. If customers drop off between the first and second purchase, find that point on the retention map: a reward on the sixth purchase will never reach them.

Points work when customers can earn and spend them at their normal pace. A status tier might offer early booking, help choosing products or service without a queue. But that takes free consultants and time: if you promise "priority support", you have to deliver it on a sale day too, when the store is packed. Cash back appeals to people who want to spend the money anywhere. Discount points are spent only with you, under the programme's rules.

The customer at the till does not need the names of three tiers. She needs to know what she gets on her next purchase. For Saltanat's shop that fits in one sentence: "500 points take 500 ₸ off an eligible order; points are not paid out as cash." If you just say "cashback", people will guess where and on what they can spend it, and they will find out at the till, with a queue behind them.

Proposed rules: purchase and full return

A basket without delivery or goods with another discount

  • Purchase

    Goods: 10,000 ₸

    Redeem 500 points; pay 9,500 ₸

    Award 475 points after the order is received

  • Full return

    Restore the 500 redeemed points

    Cancel the 475 awarded points

    Handle the monetary refund separately

One point takes 1 ₸ off the payment. Earn 5% of the amount paid in money.

If the new points have already been spent, resolve the case under an agreed rule.

A 10,000 ₸ order costs 9,500 ₸ after 500 points are redeemed and earns 475 points after receipt; a full return reverses redemption and earning separately.

Rules that fit beside the balance

Saltanat decided to keep points but to write down the whole mechanic before the next launch. Here is the draft. It still has to be set up at the till and in the customer account, so write every line so that the developer and the cashier read it the same way.

RuleThe programme's proposed terms
Earning5% of the amount paid in money for goods, excluding delivery; fractional points are rounded down
AvailabilityOnce the customer has received the order
RedemptionOne point takes 1 ₸ off the payment; points can cover up to 5% of eligible goods
ExclusionsDelivery and goods with another discount are excluded from redemption; the customer sees this before paying
ExpiryPoints do not expire under this proposal
Full order returnPoints earned on the order are cancelled and redeemed points restored; the money goes back through the normal refund process
ErrorsSupport finds the transaction by order number and shows the correction in the customer's history

Run the same 10,000 ₸ receipt through these rules. It has no goods with another discount and no delivery. The redemption limit is 5%, or 500 ₸, and Indira has exactly 500 points, so she pays 9,500 ₸. Once the order reaches her, she earns 9,500 × 5% = 475 new points. Awarding points on the full 10,000 ₸ would be wrong: the rule counts the amount paid in money.

In the points history that is three entries: 500 redeemed, 475 pending, then confirmation of the award. If Indira returns the whole order, the shop restores the 500 redeemed points and cancels the 475 awarded. If she has already spent the new points, staff follow a procedure written down in advance rather than improvising, and the system does not quietly edit someone else's order. Test partial returns and orders with a promo code before launch as well: the table above does not cover them.

The programme's software may track points movements and coupon status separately. Smile, for example, has instructions for cancelling a points redemption. Read them and place a test order: that is how you find out what can be done with an issued coupon and with one already used. A "points restored" message is not enough for staff. They need to see the final payment and both transactions in the history.

What remains from an order

The goods, packaging and other variable costs of this order cost the shop 6,500 ₸. Without points, the order's contribution is 10,000 - 6,500 = 3,500 ₸. With redemption, it is 9,500 - 6,500 = 3,000 ₸.

Out of that 3,000 ₸ the shop still pays its fixed costs and makes its profit. Do not subtract the same 500 ₸ a second time: the discount already brought the payment down from 10,000 to 9,500 ₸. The calculation 9,500 - 6,500 - 500 counts the discount twice and understates contribution at 2,500 ₸.

The programme's software, its setup and support work go into the calculation as their own line. If the reward is a product, the calculation includes the product and handing it over; a discount is already in the payment. This calculation is for running the programme. How to record points issued, redeemed and outstanding in the books is something the shop settles with its accountant.

More orders can still leave the shop worse off

For a monthly plan, take 200 repeat orders without the programme. At 3,500 ₸ contribution each, that is 700,000 ₸. Saltanat expects points to lift orders to 240 and budgets 30,000 ₸ a month for the system and its operation. That is her budget, not a vendor's tariff.

To see the load, take the most expensive case for the shop: 500 points are redeemed on each of the 240 orders, everyone has enough points, and basket value and contents match Indira's. The result:

PlanOrdersContribution per orderTotal contributionProgramme costsRemainder
Without the programme2003,500 ₸700,000 ₸0 ₸700,000 ₸
With the programme2403,000 ₸720,000 ₸30,000 ₸690,000 ₸

The plan has 20% more orders, yet the shop keeps 10,000 ₸ less. Just getting back to the original 700,000 ₸ takes (700,000 + 30,000) / 3,000 = 243.3, so at least 244 orders. That is 44 extra orders, a 22% increase. The shop's fixed costs are the same in both plans, so they are left out of the table.

At 244 orders, the remainder is 732,000 - 30,000 = 702,000 ₸, just 2,000 ₸ above the original 700,000 ₸. A small drop in basket value or a few extra support requests will eat that margin. The calculation tells you how many orders the programme has to add. Whether it adds them, only a measurement will show. Customer value helps you decide how much is sensible to spend on retention; the actual increase still has to be measured.

In a real month, redemptions will vary. So for each order you take the payment after the discount and the variable costs, add up contribution and subtract programme costs. Keep the outstanding points balance next to it: that is a discount the shop has already promised, and customers may spend it later. A month before widespread redemption can look very profitable, but it is not enough to judge the whole launch.

Separate the programme from existing buying habits

Regular customers may be the first to join, and they already come more often than newcomers even without points. If you compare members' average order value with everyone else's, you will see that old difference and credit it to the programme.

For a new launch there is a cleaner method. Randomly pick some eligible customers in advance, invite only them, and compare the full groups, including people who ignored the invitation. That measures the programme offer in the form you actually made it. People who already joined keep their rewards: they were promised them. Write the period, group sizes and the date of the final reading into an experiment plan before the first invitations go out.

Saltanat's main result is incremental contribution after programme costs. Alongside it, track repeat orders, returns, complaints and how people use their rewards. The number of cards issued shows scale, but only money tells you about payback. With a small customer base, a pilot helps debug earning and redemption, while a modest sales increase can get lost in random noise.

Measure redemption across comparable awards. For example, the share of points that became available in September and were spent within the following 30 days. If you mix old balances with freshly issued points in the denominator, the share will drop simply because the new points are only a few days old. And if few people use their rewards, walk the whole path to the till with customers and reread their support requests.

Exercise: a programme brief for a client

Take your client's existing programme or an idea the owner is proposing. The output is one page of rules with a calculation next to it that you can put in front of the owner.

0 of 6 done

In Saltanat's shop the calculation starts at 3,000 ₸ contribution after redemption. If you got 2,500 ₸, the discount was subtracted twice. If the plan shows payback already at 240 orders, it has lost either the 30,000 ₸ operating cost or the cost of discounts on orders that would have happened anyway.

The second output matters just as much: a list of cases the rules do not cover. Who settles a dispute about points expiry, what the cashier sees on a return, what to do with two accounts belonging to one person. Each case needs a named owner and an outcome the customer can understand. Saltanat should launch the next promotion once the till can keep the promise already made.

Need help applying this to your analytics?