
Almost every pizza shop that runs a win-back programme uses a fixed threshold: 60 days, 90 days, whatever the platform defaulted to. It is the wrong shape of rule, and it produces two expensive errors at the same time: chasing people who have not gone anywhere, and ignoring people who left a month ago.
Consider two customers. One ordered 26 times last year, roughly every fortnight. The other ordered 4 times, roughly quarterly. A 60-day rule declares neither of them lapsed until day 61. But the fortnightly customer was in trouble at day 30, and the quarterly customer is behaving completely normally at day 75.
A fixed rule is late for your best customers and premature for your occasional ones. Since your best customers are where the money is, the fixed rule is wrong precisely where it is most expensive to be wrong.
The correct threshold is personal: a multiple of that customer’s own median inter-order interval. Compute the median gap between their last several orders, then flag drift and lapse as multiples of it.
A customer with one order has no interval. A customer with two has one observation, which is not a median. Fall back to the store-level median for customers with fewer than three orders, and blend toward the personal number as history accumulates. Roughly: use the store median at 1–2 orders, a 50/50 blend at 3–4, and the personal median from 5 orders up.
This matters more than it sounds. Around half of most restaurant files are one- and two-order customers, and treating them with the store clock is both statistically defensible and operationally simple.
Every pizza shop has a summer dip, a back-to-school spike, and a first-week-of-January cliff. If you run drift detection against raw day counts, January will hand you a fake list of thousands of "at risk" customers who are simply doing what everyone does in January.
De-seasonalise: compare a customer’s gap against the store’s own trailing pattern for that week of the year. If the whole trade area is quiet, an individual being quiet is not a signal.
A signal is only a signal if it deviates from what everyone else is doing at the same time.
Speed beats generosity. A drift message at 1.5 × M with no discount routinely outperforms a 20%-off message at 4 × M, because the habit is still warm and you have not yet taught the customer that leaving is rewarded.
That last point is worth sitting with. A programme that only ever contacts people once they have gone quiet is a programme that trains its best customers to go quiet.
You cannot tell the difference between a mover and a churner from order data alone, and it does not matter much for the first two touches. They are cheap. It matters by the third, which is why the ladder should escalate value while <em>de-escalating</em> cost per contact: email, then SMS, then mail only for high-value lapses.
No. A personal median interval with a store-level fallback captures most of the available signal. Survival models add a few points of precision and a great deal of explanation overhead. Start with the median rule, hold out a control, and only reach for something heavier when the median rule has been running long enough to beat.
Look at the response curve by days-since-order. Plot win-back response rate against the multiple of M at which the message was sent. There is almost always a visible knee where response collapses: set the lapse threshold just before it, not after.
Keep reading
A three-rung win-back ladder with escalating value and descending cost per contact, plus the honest maths on when a lapsed customer stops being worth chasing.
Audience & dataRecency, frequency and monetary scoring adapted for pizza: the band cut-offs that actually work, and what to do with each score.
Audience & dataHow to cut a pizza customer file into segments that actually change behaviour: recency, frequency, ticket, channel, daypart and menu affinity.
MeasurementBuilding holdout groups into every campaign, reading the difference honestly, and accepting that most reported marketing revenue was going to happen anyway.
marketing.pizza runs all of it, every night, across every store you have.