CLV worked example

Customer lifetime value, calculated on one café's numbers

Three CLV formulas run on the same café: 1,296 SAR, 126 SAR, then 25 SAR per enrolled customer. Only one should set your loyalty reward budget.

Waya TeamUpdated 18 August 202610 min read

The café, and the four numbers a CLV needs

The same café, the same six months of receipts, three lifetime value formulas. One says a customer is worth 1,296 SAR. One says 126 SAR. One says 25 SAR. All three are arithmetically correct, and only the third is safe to set a reward budget against.

Here is the café. Roughly 600 paid transactions a month, average ticket 24 SAR, gross margin 70% on that ticket, so 16.80 SAR of gross profit per visit. In January, 200 customers enrolled on a stamp card set to buy 8, get the 9th free. These numbers are a composite of a small specialty coffee shop in Riyadh rather than one shop's dashboard, so replace every one of them with yours as you read.

Any lifetime value formula needs four inputs: average ticket, gross margin, visit count, and how long a customer keeps visiting. A loyalty card gives you the third one exactly, because every stamp is a scan with a timestamp. It does not give you the first two. Waya has no POS integration and no till connection, so nothing in the dashboard knows what a customer spent, only that they showed up and got a stamp. You type the average ticket and the gross margin in yourself, from your own P&L.

Use gross margin, not net margin. A 70% gross margin on a 24 SAR ticket means the milk, beans, cup, and lid cost 7.20 SAR. Rent, salaries, and electricity are deliberately excluded, because they are paid whether the customer walks in or not. For a reward decision you want contribution margin.

Formula 1: the napkin number, 1,296 SAR

This is the version most owners run in their head: average ticket, times visits per month, times 12, times an assumed number of years. At 1.5 visits a month that is 24 × 1.5 × 12 = 432 SAR a year. Assume the customer sticks around 3 years and you get 1,296 SAR.

Two things are wrong with it. First, 1,296 SAR is revenue, not money you keep. At 70% gross margin the café keeps 907.20 SAR of it, and that is before a single free drink is handed out. Second, the 3 years is invented. Nobody measured it.

The reason this matters is not academic. A customer "worth 1,296 SAR" makes a 50 SAR giveaway to win one QR-code signup look like an obvious trade. It is not an obvious trade, as the third formula shows.

Formula 2: margin and churn, 126 SAR

The standard subscription formula fixes the margin error and replaces the invented lifespan with a churn rate: monthly gross profit per active customer, divided by monthly churn. Monthly gross profit here is 24 × 1.5 × 0.70 = 25.20 SAR.

At 20% monthly churn the average customer stays 5 months, so lifetime value is 126 SAR. At 10% churn they stay 10 months and it is 252 SAR. One assumption, moved by 10 percentage points, doubles the answer. That is the real lesson of formula 2: the churn number deserves far more of your attention than the formula does.

Something is still hidden. This describes a customer who became a regular. It says nothing about the larger group who scanned the QR code once, added the pass to Apple Wallet or Google Wallet, and never came back. Those people still sit in your customer count, your monthly message quota, and your unredeemed reward liability.

Formula 3: the cohort you can audit, 25 SAR

Stop projecting and start counting. Take the 200 people who enrolled in January as a fixed cohort. Look at the next 6 months. Count return visits only, excluding the visit where they enrolled, because that sale happened before the card existed.

Of the 200, suppose 60 came back at least once. Between them they made 312 return visits, an average of 5.2 each rather than the 9 that "1.5 visits a month for six months" would predict, because most returners fade after the second or third visit. That is 312 × 16.80 = 5,241.60 SAR of gross profit.

Now subtract the rewards. At 8 stamps per free drink, 312 visits earn 39 rewards, and say 33 were actually redeemed at 7.20 SAR of ingredients each, which is 237.60 SAR. Net is 5,004 SAR, spread across all 200 enrolled names, so 25.02 SAR each. The 6 unredeemed rewards are not free money: a wallet pass sits in the phone until it is used, so carry them as a liability you will pay later.

Then test the assumption that moves the answer most. Swap 60 returners for 40, which is closer to what we see measured across shops on Waya, where the share of enrolled customers with at least two distinct visit-days sits nearer one in five than one in three. That gives 208 visits, 3,494.40 SAR of gross profit, 158.40 SAR of rewards, and 16.68 SAR per enrolled name.

Which number should set the reward budget

Use formula 3 for anything you price per signup: table tents by the register, a free drink for enrolling, paid ads pointing at your enrollment page. At 16.68 to 25.02 SAR of gross profit per enrolled name over 6 months, a 50 SAR bribe to get someone to scan is a loss you will not notice for a year. A 5 SAR one is fine.

Use formula 2 in exactly one place: deciding what to spend on someone who is already a proven regular. If a returning regular is worth 126 to 252 SAR of gross profit, then 7.20 SAR of ingredients to pull back a regular who has gone quiet is an easy bet. That is the only decision the bigger number belongs in.

For reward richness, divide the reward's ingredient cost by the gross profit needed to earn it. Buy 8 get 1 free is 7.20 / 134.40, or 5.4%. Buy 4 get 1 free is 10.7%. Cost the free cup at full lost margin instead of ingredients and those become 12.5% and 25%. Under about 10% the card is cheap enough that even a small lift pays for it. A 60 SAR gift every 4 visits is about 89% of the profit that earned it, and no realistic repeat rate covers that.

Last, check the tool against the same number. Growth is 85 SAR a month, so 510 SAR over the same 6 months. At 25.02 SAR per enrolled name you need 21 names to cover it; at 16.68 SAR you need 31. The Free plan is 0 SAR forever up to 100 customers and 100 wallet messages a month, so the payback question only arrives once you cross 100 customers.

What none of the three can tell you

None of them measures incrementality. Every figure above counts visits that happened after enrollment, not visits that happened because of enrollment. A regular who came three times a week before the card still comes three times a week; her stamps cost you real milk and buy you nothing.

You can close some of that gap without running a controlled experiment. Compare the cohort's visit count in the 6 months before enrollment with the 6 months after. Watch whether the new-versus-returning split moves. Check whether redemptions cluster on days that customer would not normally come in. The dashboard shows visits, redemptions, new versus returning customers, and which regulars have gone quiet, but it does not run the experiment for you and it never sees basket size.

Recompute every quarter on a fresh cohort, and use whole calendar months. Saudi salaries mostly land in the last few days of the month, so café traffic is lumpy around payday and a 30-day rolling window will mislead you. Do not use Ramadan as your baseline month either: trade shifts to after sunset and the volumes look nothing like a normal month.

Frequently asked questions

How do I calculate customer lifetime value for a café?

Multiply your average ticket by your gross margin to get gross profit per visit, count the return visits that one enrollment cohort actually made over a fixed window, subtract the ingredient cost of the rewards you handed out, then divide by everyone who enrolled, including the people who never came back. On the café above, that produced 25.02 SAR of gross profit per enrolled customer over 6 months. Skip the version that multiplies revenue by an invented 3-year lifespan: it overstated the same café by about 50 times.

Should CLV use revenue or profit?

Gross profit, always. Revenue-based lifetime value overstates a customer by whatever your cost of goods is, so on a 24 SAR coffee at 70% gross margin the café keeps 16.80 SAR, not 24 SAR. Use contribution margin and leave rent, salaries, and electricity out of it, because those are paid whether the customer shows up or not.

Can I calculate lifetime value without POS data?

Yes, with two numbers from your own P&L and one from the loyalty card. Waya has no POS or till integration, so it counts visits and redemptions but never sees what anyone spent; you supply the average ticket and the gross margin. That is enough to run every formula in this article.

How much can I afford to spend on a loyalty reward?

Keep the reward's ingredient cost under roughly 10% of the gross profit needed to earn it. A free 24 SAR drink that costs 7.20 SAR to make, earned after 8 paid visits worth 134.40 SAR of gross profit, is 5.4%, which is cheap. The same free drink after only 4 visits is 10.7%, and a 60 SAR gift after 4 visits is about 89%, which no realistic repeat rate will pay for.

Does Waya calculate lifetime value automatically?

No. The dashboard shows visits, redemptions, new versus returning customers, and which regulars have gone quiet, but there is no lifetime value figure anywhere in the product. You do the multiplication yourself, which is partly the point: the assumptions stay visible instead of being buried in someone else's model.

Put Waya on your counter — free forever up to 100 customersStart free
Start free