The Loyalty Tier Threshold Problem: Why Stretching Never Pays for the Perk
Threshold stretching is real and measurable. Modelled across 200,000 customers it also loses money at every threshold tested, because the perk goes to everyone above the line while the stretching happens just below it. Here is the retention lift your tier actually has to clear.
Table of contents
A loyalty tier is a step function bolted onto a continuous spend distribution. Customers just below the step have a reason to climb it. Customers well above the step get the reward for free.
The first group is the one every tier programme is designed around. The second group is where the money goes.
The short answer
Modelled across 200,000 customers with a realistic spend distribution, threshold stretching generates real incremental margin at every threshold tested and never once covers the cost of the perk. At a $300 threshold, stretching is worth $157,924 and the perk costs $1,164,870. For the tier to break even, it must also lift annual retention among qualifiers by at least 6.79%. That hurdle rate is computable before launch and almost nobody computes it.
The setup
Two hundred thousand customers with annual spend drawn from a lognormal distribution: median $180.77, mean $239.63. The long right tail is what makes a lognormal the right choice here, and it is what makes the tier economics behave the way they do.
The perk costs $18 per qualifying customer per year. Gross margin is 45%. Customers within $45 below the threshold will stretch their spend up to it, which is a generous assumption in favour of the programme.
Part A: what stretching alone earns
| Threshold | Qualifiers | Stretchers | Incremental margin | Perk cost | Net |
|---|---|---|---|---|---|
| $150 | 153,050 | 33,548 | $347,293 | $2,754,900 | -$2,407,607 |
| $200 | 116,237 | 26,939 | $284,192 | $2,092,266 | -$1,808,074 |
| $250 | 86,667 | 19,952 | $212,282 | $1,560,006 | -$1,347,724 |
| $300 | 64,715 | 14,809 | $157,924 | $1,164,870 | -$1,006,946 |
| $350 | 48,525 | 10,666 | $114,025 | $873,450 | -$759,425 |
| $400 | 36,861 | 7,744 | $82,141 | $663,498 | -$581,357 |
| $450 | 28,357 | 5,779 | $60,723 | $510,426 | -$449,703 |
| $500 | 21,996 | 4,373 | $45,936 | $395,928 | -$349,992 |
| $550 | 17,206 | 3,375 | $35,483 | $309,708 | -$274,225 |
| $600 | 13,500 | 2,567 | $26,790 | $243,000 | -$216,210 |
Every threshold loses money. The loss shrinks as the threshold rises, which looks like an optimisation direction until you notice why: fewer people qualify, so you pay for fewer perks. The limit of that logic is a threshold nobody reaches, which loses exactly $0 and achieves exactly nothing.
This is the part worth being blunt about. If the only benefit you count is threshold stretching, there is no optimal threshold. The objective function is monotonic and the model is telling you the mechanic does not work on its own terms.
The reason is structural rather than parametric. At a $300 threshold, 14,809 customers stretch and 64,715 receive the perk. The stretchers are 23% of the recipients, and each one contributes an average of about $10.66 in incremental margin against an $18 perk. The other 77% contribute nothing and cost $18 each.
Part B: the hurdle rate
Tiers do not survive on stretching. They survive on retention: qualifiers who feel recognised stay longer and spend more over their lifetime. That effect is real, and it is the only thing that can pay for the perk.
So invert the question. Instead of asking what the tier earns, ask what retention lift it needs.
| Threshold | Qualifiers | Perk cost | Avg margin per qualifier | Required retention lift |
|---|---|---|---|---|
| $150 | 153,050 | $2,754,900 | $151.75 | 10.37% |
| $200 | 116,237 | $2,092,266 | $176.60 | 8.81% |
| $250 | 86,667 | $1,560,006 | $202.32 | 7.69% |
| $300 | 64,715 | $1,164,870 | $229.02 | 6.79% |
| $350 | 48,525 | $873,450 | $255.57 | 6.12% |
| $400 | 36,861 | $663,498 | $281.81 | 5.60% |
| $450 | 28,357 | $510,426 | $308.19 | 5.15% |
| $500 | 21,996 | $395,928 | $334.89 | 4.75% |
| $550 | 17,206 | $309,708 | $362.06 | 4.40% |
| $600 | 13,500 | $243,000 | $389.57 | 4.11% |
Read the last column as the bar. A $300 threshold needs a 6.79% annual retention lift among qualifiers to break even. A $600 threshold needs 4.11%, which is a materially easier bar, because the qualifiers are higher-margin customers and there are fewer perks to fund.
That is the real design insight, and it is the opposite of what most programmes do. Tiers get set low to maximise enrolment. Low thresholds have the highest hurdle rates and the worst economics.
The model
import math
import numpy as np
def tier_model(n=200_000, median_spend=180.0, sigma=0.75, perk_cost=18.0,
pull=45.0, margin=0.45, seed=42):
rng = np.random.default_rng(seed)
spend = rng.lognormal(math.log(median_spend), sigma, n)
rows = []
for T in range(150, 601, 50):
stretch = (spend >= T - pull) & (spend < T)
n_stretch = int(stretch.sum())
incr_margin = (T - spend[stretch]).sum() * margin
qualifiers = int((spend >= T).sum()) + n_stretch
perk = qualifiers * perk_cost
avg_margin = spend[spend >= T].mean() * margin
required_lift = (perk - incr_margin) / (qualifiers * avg_margin)
rows.append((T, qualifiers, n_stretch, incr_margin, perk,
incr_margin - perk, required_lift))
return rows
print(f"{'T':>6} {'qual':>9} {'stretch':>9} {'margin':>11} "
f"{'perk':>12} {'net':>13} {'lift req':>9}")
for T, q, s, m, p, net, lift in tier_model():
print(f"{T:>6} {q:>9,} {s:>9,} {m:>11,.0f} {p:>12,.0f} {net:>13,.0f} {lift:>9.2%}")
Output:
T qual stretch margin perk net lift req
150 153,050 33,548 347,293 2,754,900 -2,407,607 10.37%
200 116,237 26,939 284,192 2,092,266 -1,808,074 8.81%
250 86,667 19,952 212,282 1,560,006 -1,347,724 7.69%
300 64,715 14,809 157,924 1,164,870 -1,006,946 6.79%
350 48,525 10,666 114,025 873,450 -759,425 6.12%
400 36,861 7,744 82,141 663,498 -581,357 5.60%
450 28,357 5,779 60,723 510,426 -449,703 5.15%
500 21,996 4,373 45,936 395,928 -349,992 4.75%
550 17,206 3,375 35,483 309,708 -274,225 4.40%
600 13,500 2,567 26,790 243,000 -216,210 4.11%
Fit median_spend and sigma to your own distribution, set perk_cost to what the benefit actually costs you rather than its retail value, and the hurdle rate column is your answer.
Three design changes the model argues for
Set the threshold high enough that qualifiers are genuinely valuable. The hurdle rate falls monotonically with the threshold. A tier that 8% of customers reach is a far better instrument than one 60% reach.
Make the perk cost scale with spend rather than being flat. A flat $18 perk is regressive: it is worth proportionally more to the customer who barely qualified and costs you the same as for your best customer. A percentage-based benefit aligns cost with value and removes most of the subsidy.
Measure the retention lift with a holdout rather than assuming it. Compare qualifiers who received the perk against qualifiers randomly excluded from it. Without that comparison you cannot distinguish a tier that causes retention from a tier that merely labels customers who were already loyal, and the second is by far the more common outcome.
The underlying error is the same one that makes blanket discounts fail. A benefit given to everyone above a line is priced by the whole population above the line, while the behaviour change happens only in a narrow band near it.
Get the Promo & Bonus Economics Workbook
Every formula for pricing a promo before you launch it: expected value, wagering cost, breakage, breakeven conversion. Worked examples with real executed numbers.
Browse all free guides →Want to implement this with guidance?
Santosh helps founders turn insights like this into real systems.
External Resources
Further Reading & Tools
Investopedia — Financial Engineering
Reference on the field, its three pillars, and its primary applications
CFA Institute — Refresher Readings
Curriculum material on derivatives valuation, probability, and risk measurement
QuantLib
Open-source quantitative finance library, reference for how pricing models are structured
arXiv q-fin
Preprints in quantitative finance covering pricing, risk management, and market microstructure