Somewhere in your order history sit a few hundred people who used to order twice a month and then stopped. No complaint, no bad review; they just drifted to a competitor or a marketplace app and never came back. Winning one of them back costs a push notification. Replacing one with a stranger costs $5–15 in ads. RFM segmentation is how you find those people, and you can build it in a spreadsheet before lunch.
RFM is really just three questions
For every customer you need three numbers. Recency is the days since their last order. Frequency is how many orders they've placed in the last 12 months. Monetary is how much they've spent all in. That's the whole model, and there's no machine learning or consultant involved. If your ordering system keeps customer order history, and any decent branded app or ordering site does, the raw data is already there. Export it, or pull it straight from your analytics dashboard.
Score each customer 1–3 on each one, and keep the scale coarse on purpose. A 5-point version gives you 125 segments you'll never act on; a 3-point version gives you a handful you actually will.
Concrete thresholds for a delivery restaurant
Thresholds depend on your cuisine (pizza gets reordered faster than sushi), but this starting grid fits most delivery menus:
- Recency: 3 = ordered within 30 days, 2 = 31–60 days, 1 = 60+ days.
- Frequency: 3 = six or more orders per year, 2 = three to five, 1 = one or two.
- Monetary: 3 = top 20% of spenders, 2 = middle 50%, 1 = bottom 30%.
Now combine them into five named groups. The names matter. "R1-F3-M3" tells you nothing at 11 p.m. while you're planning a campaign; "sleeping regulars" tells you exactly who to write to.
Look at the second bar. In a mature database, about one customer in five ordered from you more than once and then went quiet. That's the best-return audience you have. They already know the food and trust the delivery; whatever pushed them away is usually the kind of thing one good nudge fixes.
Dots tracks recency and frequency per customer and sends the campaigns for you. See it on your data.
The sleeping-regulars campaign, step by step
One sequence keeps earning its keep. Run it like this:
- Filter: customers with 3+ lifetime orders and nothing in the last 45–90 days. Don't wait for the 6-month mark; by then the habit belongs to someone else.
- Message 1 (day 0), push or SMS: "We miss you, [name]. Your usual pepperoni is 20 minutes away, and there's 15% cashback waiting on your next order." Make it cashback rather than a flat discount: it only costs you when they actually return, and it pre-books the order after this one.
- Message 2 (day 4), only to non-openers: a different angle, like a new menu item, instead of a bigger offer. Escalating discounts just teach people to wait them out.
- Stop. Two touches is the whole campaign. Anyone who doesn't bite rolls back into the normal monthly cycle rather than getting carpet-bombed.
Realistic expectations: 3–8% of a sleeping segment places an order within a week of a campaign like this. On a 1,000-person database that's 6–16 recovered orders from one push that cost you nothing to send, and recovered regulars keep ordering afterward. Restaurants that run this every month through our marketing tools treat it like cleaning the fryer: a scheduled chore that pays for itself.
What to send everyone else
Champions don't need discounts; paying people who already pay you just loses margin. Give them early access to new dishes, a birthday gift, a plain thank-you. Loyal customers respond to a small cashback multiplier that nudges them to order a little more often. New customers have exactly one job attached to them: get the second order in within 14 days, because that's the window where a first-timer either becomes a regular or vanishes. And one-and-done buyers get a single reactivation attempt each quarter, then some peace, because chasing that group hard is a reliable way to burn a marketing budget.
Three mistakes that break RFM in practice
The first is treating segmentation as a one-time job. Customers shift buckets every week (today's champion is next quarter's sleeper), so a spreadsheet you built by hand is stale within a month. That's the real case for letting the ordering platform recalculate segments on its own instead of waiting for someone to re-export.
The second is ignoring the M. Recency and frequency soak up all the attention, but the monetary score tells you where the offer budget should go. A lapsed customer with a $45 average check earns a richer win-back than one who spends $14 on average: same message, more generous terms. A single campaign template with two offer tiers captures most of that value.
The last is building segments you can't actually message. Run RFM on marketplace orders and you get a spreadsheet full of strangers, because the platform keeps the phone numbers, not you. The whole method assumes direct-channel data, which is one more argument for owning the ordering relationship yourself.
Do this next
Export 12 months of orders with customer phone numbers today. Sort by last order date, filter to 3+ orders and 45+ days silent, and count the rows. That number is your sleeping regulars: the revenue sitting in your database right now. Send them one message this week and measure who comes back.
Dots builds the customer database from every order and runs retention campaigns on autopilot.