RFM segmentation 2026: how to get repeat sales from your customer base
How to break down the database by RFM (recency, frequency, amount) and increase repeat sales in 2026: matrix of segments, what to send to champions and sleepers, how to calculate in Google Sheets and CRM. With real increases in repeat purchases.

The most expensive line in the marketing budget is the new client you attract while those who have already bought and forgotten about you are sleeping in the database. RFM segmentation does just that. It doesn’t “improve communication” or “increase engagement” - it specifically pulls repeat sales from people who have already paid you once. Below I will discuss not the theory from the textbook, but how to assign points, assemble a matrix of 8-11 segments, what to send to everyone, and how to calculate all this in Google Sheets in an evening.
I have been working with client databases for 9 years in digital. RFM was calculated by hand in tables, then in Mindbox and RetailCRM, then automated via n8n. The growth figures in the article are the median for my projects, and not a benchmark from someone else’s report. Let me warn you right away: RFM is not a magic button. This is a way to stop sending the same letter to the entire database.
RFM is not “base analytics.” RFM is the answer to one question: who to write to today and who to leave alone. If after calculation you send one newsletter to everyone, you have not done RFM. You have built a beautiful table.
1. What are R, F and M really?
Three letters - three numbers about each client. Recency: how many days have passed since the last purchase. Frequency: how many times a person bought during the selected period. Monetary: how much did you buy in total?
It sounds corny. But these three numbers contain almost everything you need to know about the client for mailing. The length of time tells whether he is still alive as a buyer. Frequency - how loyal he is. Amount - how much it costs you. The champion and the one who is about to leave forever differ in these three numbers, and almost nothing else is needed.
Of the three metrics, the most important is Recency. A person who bought yesterday is many times more likely to buy again than someone who bought a year ago, even if the second person has left more money in his entire life. Therefore, recency always pulls segmentation more strongly than others.
2. How to assign scores: quintiles vs. thresholds
It’s inconvenient to compare bare numbers: one has 4 orders, the other has 11, what this means is unclear. Therefore, each metric is converted into a score from 1 to 5. Two ways.
Quintiles: sort the database by metric and cut it into five pieces equal in number of clients. The top 20% get 5, the next 4, and so on up to 1. Plus, the base is always divided evenly, even if the data is skewed. The downside is that the boundaries float with each recalculation.
Fixed thresholds: you set boundaries manually based on common business sense. For food delivery, “bought in the last 7 days” = R5. Plus - it’s clear and stable. The downside is that you have to guess the thresholds, and they are radically different for different niches.
Here's what the scoring formula looks like. For Recency, the scale is inverted: fewer days - higher score.
Recency (days since last purchase), thresholds for e-com:
0-30 days -> R = 5
31-90 -> R = 4
91-180 -> R = 3
181-365 -> R = 2
366+ -> R = 1
Frequency (number of orders per period):
10+ -> F=5 5-9 -> F=4 3-4 -> F=3 2 -> F=2 1 -> F=1
Monetary (total revenue):
top 20% of the base -> M=5 ... bottom 20% -> M=1
RFM code = three points combined: R*100 + F*10 + M
Example: R5 F4 M5 -> code 545 -> segment “Champions”Advice from practice: for the first calculation, take quintiles by Frequency and Monetary, and cut Recency by thresholds for the purchase cycle. This way the base is divided fairly, but the “hotness” remains tied to real days, and not to the percentile.
3. Segment matrix: from 125 combinations into 9 working groups
There are formally 125 combinations of points. It is impossible to maintain 125 scenarios, so they are collapsed into enlarged segments. I usually keep 9 - this is enough for each to have a separate meaning, and not so many that it gets lost.
| Segment | Who is this (R-F-M) | What to send | Channel |
|---|---|---|---|
| Champions | R5 F5 M5 | Early access, new items, status. No discounts - they don't need it | Email + push |
| Loyal | R4-5 F4-5 M3-4 | Upsell, cross-sale, bonuses for the next order | |
| Potentially loyal | R4-5 F2-3 M2-3 | Loyalty program, a reason for a second or third order | Email + SMS |
| Beginners | R5 F1 M1-2 | Onboarding, instructions, gentle warm-up before the second purchase | Email chain |
| Under threat of outflow | R2-3 F3-5 M3-5 | Reactivation with benefit, personal offer. Before they leave | Email + push |
| Can't lose | R1-2 F4-5 M5 | The strongest offer, sometimes a call from the manager. Dear people | Call + email |
| Sleeping | R2 F2-3 M2-3 | Win-back: brand reminder, then offer | Email + SMS |
| On the verge of sleep | R1-2 F1-2 M1-2 | Last reactivation, then to the cold archive | |
| Lost | R1 F1 M1 | One win-back salvo, then excluded from regular mailings | Email (one-time) |
I discussed more about win-back for the sleeping and lost in separate article about database reactivation — there are mechanics of chains and real conversion of reactivations.
4. What to send to each segment (and what not to send)
The main idea: different segments need opposite things. For a champion, a discount is rather harmful - you teach a loyal person to wait for promotions and cut the margin on someone who would have bought anyway. On the contrary, a discount can bring a sleeping person back into action.
For champions and loyalists - status, early access, new items. For beginners - onboarding and a reason to return for a second order, this fits well loyalty program with a clear first threshold. The segments “at risk” and “cannot be lost” are reactivated while they are still warm, and the more expensive the client, the more personal the touch, right up to the call. For those who are asleep and lost - win-back, where first comes the value and reminder of the brand, and only then the offer.
The channel also depends on the segment, and not on the fact that you have “set up mailing”. There’s no point in waking up dear departing clients with another letter that they haven’t opened for six months - a call or SMS is sent there. How this fits into the general system of letters, I discussed in the material about email newsletters in Russia.
5. How to calculate RFM in Google Sheets
For a database of up to 50-100 thousand clients, a table is the fastest start, no CRM is needed. The logic is short.
Take the unloading of orders: client, date, amount, by line per order. Use a pivot table to reduce it to one row per customer with three numbers: date of last purchase, number of orders, total revenue. Recency is considered as a difference from today. Next are the thresholds and points.
// Recency in days
R_days = TODAY() - [last purchase date]
// Frequency percentile thresholds (quintiles)
=PERCENTILE(F_range, 0.2) // score boundary 1|2
=PERCENTILE(F_range, 0.4) // 2|3
=PERCENTILE(F_range, 0.6) // 3|4
=PERCENTILE(F_range, 0.8) // 4|5
// Assign a Frequency score using IFS
=IFS(F>=p80,5, F>=p60,4, F>=p40,3, F>=p20,2, TRUE,1)
// RFM code and segment lookup
RFM = R&F&M // for example "545"
segment = VLOOKUP(RFM, segment_reference, 2, FALSE)The entire calculation is completed in a couple of hours. Next is a reference sheet where the R-F-M ranges are compared with the names of the segments from the table above, and the VLOOKUP pulls up the label. Done: you have a live RFM matrix in one tab.
6. RFM in CRM: amoCRM, Bitrix24 and automation
The table is good for the first calculation, but recalculating each month by hand is still a pleasure, and people usually forget about recalculation. CRM automates this.
There is no ready-made RFM module in the box in either amoCRM or Bitrix24. There are two working ways. The first is to count RFM in mailing services (Mindbox, RetailCRM, Sendsay), which can do this natively, and put the segment tag back into the card. The second is to run the upload through n8n or Make, count the points using the script and put in a custom “RFM segment” field, which is used to trigger chains. In amoCRM, it is convenient to tag a segment and launch a digital-pipeline, in Bitrix24 - through business processes.
The point of automation is not beauty, but that the segment recalculates itself and immediately sends the desired newsletter. The client left from “loyal” to “at risk” - the reactivation letter was sent on the same day, and not a month later, when you remembered to update the table. I discussed how RFM is integrated into the overall retention system in an article about CRM marketing.
7. Recalculation frequency and typical errors
The frequency of recalculation is tied to the purchase cycle. For e-com with frequent orders - once a month. For services and B2B with a long cycle - once a quarter. The rule is simple: the recalculation period is shorter than the average interval between purchases. Otherwise, the “fresh” client actually manages to go to sleep, and in the table he is still the champion.
Now the errors that I encounter most often.
- They counted it once and forgot. RFM goes bad faster than it seems. Without regular recalculation after two months, segments lie and letters go to the wrong place.
- They took someone else's thresholds. R5 for food delivery is “bought this week”, for furniture it is “in the last year”. You cannot copy borders from someone else’s article; they are calculated according to their own database.
- They did the math and sent out a general newsletter. The most annoying mistake. There are segments, but communication is the same for everyone. All the work is for nothing.
- They count on too small a base. With a couple of hundred clients, quintiles are meaningless and segments degenerate. RFM starts working with about a thousand clients with a history.
- Ignore Monetary skew. 10% of customers often account for half of the revenue. If you don’t take this into account, “you can’t lose” dissolves in the general flow, and you lose your dearest ones quietly.
An example of thresholds for two different business models - to show how incomparable they are.
| Parameter | Online store (frequent purchases) | Services / B2B (long cycle) |
|---|---|---|
| R5 (recency) | 0-30 days | 0-90 days |
| R1 (recency) | 366+ days | 730+ days |
| F5 (frequency) | 10+ orders | 4+ orders |
| F1 (frequency) | 1 order | 1 order |
| Calculation period | 12 months | 24 months |
| Recalculation frequency | once a month | once a quarter |
8. RFM and unit economics: where to look after segmentation
RFM shows who to write to. But it’s not the number of segments that decides, but the money they bring. Therefore, the next step after segmentation is to look at each segment through unit economics: how much does it cost to reactivate a sleeper and whether it pays off with its average check.
Something unpleasant is often revealed here. The “lost” segment can be huge, but reactivating one client costs more than it will bring. Then the honest answer is not to pour the budget into it, but to come to terms with it. But “at risk” with a high Monetary pays off almost any touch, including a manager’s call. How to calculate the economy by segments, I discussed in the material about unit economy.
Conclusion
RFM is not about a beautiful table with colored squares. This is about one question: who to write to today and who to leave alone. Three numbers - recency, frequency, amount. Scores by quintiles or thresholds. 8-11 segments. A different scenario for everyone. And regular recounting, without which everything goes bad within a month.
On projects where I implemented RFM instead of general mailing, repeat sales grew in the range of 15-30% per quarter, the median was about 20%, and almost always without discount dumping. The effect comes not from the shares, but from getting into the moment. But this will only work if, after the calculation, you really separate the communication into segments, and do not send everyone one letter “we have new products.”
If you have a database with purchase history, but you are still sending everyone the same thing, this is the first thing that needs to be fixed. Write to me at Telegram or leave a request via form: at the initial consultation I will analyze your database, show you how to cut segments for your niche and which 2-3 scenarios to launch first. Starting consultation - 0 ₽.