Home/Playbook/Lapsed customer detection for restaurants

Audience & data

Catching the drift before it becomes a loss

How to set a lapse threshold per customer rather than per shop, and why a fixed 60-day rule sends win-backs to people who ordered last week.

Audience & data5 sections3 questions answered
Audience & data illustration

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.

The problem with a fixed threshold

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.

Use the customer's own clock

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.

  1. Median interval (M): the median number of days between that customer’s consecutive orders over the trailing twelve months. Median, not mean; one holiday catering order should not move the number.
  2. Drifting at 1.5 × M: early, quiet, no discount. A menu update, a new item, a reason rather than a bribe.
  3. At risk at 2.5 × M: this is where an offer is justified and where the response curve is still steep.
  4. Lapsed at 4 × M: full win-back ladder, escalating value.
  5. Dormant at 8 × M or 365 days, whichever is sooner: cheap channels only, and start thinking about suppression.

Handling thin history

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.

Seasonality will lie to you

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.

What to do the moment you detect it

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.

Questions

What if a customer moved away?

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.

Does this need machine learning?

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.

How do I know the threshold is right?

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

Related chapters

All 46 chapters

This is one chapter of the job.

marketing.pizza runs all of it, every night, across every store you have.