What is RFM segmentation? Customer scoring for marketing automation
A practical definition of RFM (Recency, Frequency, Monetary), common segments from Champions to Lost, and how to wire scores into email/SMS journeys.

Sara Moradi
Designs customer journeys and marketing automation campaigns for retention and lower churn.
September 7, 2026 · 11 min read
Also available in فارسی

What is the RFM model?
RFM scores and segments customers from three purchase-history numbers:
- R — Recency: How recently did they buy?
- F — Frequency: How often did they buy?
- M — Monetary: How much did they spend in total?
Each customer usually gets a 1–5 score on every axis (5 = best for that axis). Combining the three scores produces segments such as Champions, Loyal, At Risk, Hibernating, and Lost — with no machine-learning model required. A clean orders table is enough.
Direct answer for retention: RFM scores customers with Recency / Frequency / Monetary so retention and win-back campaigns stay targeted — not one blanket discount for everyone.
If your current play is “all buyers get the same SMS,” RFM is how you stop paying to discount people who would buy anyway and start talking to people who are actually slipping away.
Why RFM matters in marketing automation
Marketing automation gets leverage from events + live segments + journeys with exit rules. RFM feeds that stack: once scores exist, you store them as audience attributes (or a periodic event), put people into segments, and trigger email/SMS journeys.
Without RFM, two expensive habits show up:
- You blast a 20% discount to everyone — including Champions who did not need it — and margin disappears.
- You notice At Risk customers only after they are Lost, when win-back costs more and converts less.
RFM separates those groups: Champions get value and referral paths; At Risk gets a short rescue sequence; Lost gets a limited, measurable win-back — or quieter cadence.
What do R, F, and M mean in practice?
| Axis | Practical meaning | Business question | Example of score 5 |
|---|---|---|---|
| R Recency | Time since last order | Still warm, or cooling off? | Purchased within the last 7 days |
| F Frequency | Order count in the window | Habit buyer or one-off? | 5+ orders in 12 months |
| M Monetary | Sum of order value in the same window | How much revenue sits here? | Top spending quintile |
Keep the time window consistent (for example, last 12 months). If Recency uses 30 days while Frequency/Monetary use 3 years, the scores are not comparable and the segments turn into noise.
How do you build 1–5 scores?
A practical method for non-data-science teams:
- List active customers in the window.
- Build percentiles or quintiles separately for R, F, and M.
- Top 20% on an axis = 5, next = 4, …, bottom = 1.
Illustrative thresholds for an online apparel shop with 10,000 buyers in 12 months:
- R=5: last purchase ≤ 14 days
- R=1: last purchase > 180 days
- F=5: ≥ 6 orders
- F=1: 1 order
- M=5: spend in the top 20%
- M=1: spend in the bottom 20%
You do not need a complex algorithm. Spreadsheet or simple SQL is enough for v1 — then push the same columns into your automation tool.
What are the common RFM segments?
English naming varies slightly across blogs; this set is enough for marketing-automation teams:
| Segment | Score pattern (approx.) | Behavior | Campaign job |
|---|---|---|---|
| Champions | High R, F, M | Bought recently, often, and spent well | Retention, VIP, referral — not deep discounts |
| Loyal | Mid–high R, high F | Steady repeat buyers | Loyalty program, cross-sell |
| Potential Loyalists | High R, mid F | Starting to repeat | Nudge 2nd/3rd purchase |
| New / Recent | High R, low F | Fresh first purchase | Onboarding / activation |
| At Risk | Low R, high F (was healthy) | Used to be loyal, now drifting | Fast rescue, short reminders |
| Hibernating | Low R, low F, mid–low M | Quiet for a long stretch | Light win-back test |
| Lost | Very low R, weak/old F–M | Effectively gone | Limited campaign or archive |
These thresholds are not physics. Fit them to your order distribution. What matters is that each segment has a one-sentence job and maps to a real journey — not ten labels with zero actions.
How is RFM different from a simple behavioral segment?
Behavioral segments like “abandoned cart and no purchase” ride on a near-term event. RFM rides on a purchase-history summary. You want both:
- Event segments → fast reaction (hours/days)
- RFM segments → retention and win-back priority (weeks/months)
In practice, teams often recompute RFM weekly or monthly, refresh attributes, then attach journeys to those segments — while keeping event journeys (abandoned cart, welcome) separate.
Do you need machine learning for RFM?
No. Classic RFM is rule-based: from an orders table (customer_id, order_date, order_value) you build three metrics, rank them, and label segments. ML enters later if you want churn probability or predicted LTV — that is a different project and not a prerequisite.
If you already have a few thousand orders, RFM is runnable without a data scientist. Pain usually comes from dirty data (test orders, unrecorded returns, duplicate customer IDs), not from the model itself.
How do you implement RFM step by step?
- Lock the window and customer definition. Example: 12 months; successful orders only (no cancels/tests).
- Build three columns per
customer_id: days since last order, order count, total spend. - Score R, F, and M from 1–5 (quintiles or fixed business thresholds).
- Assign segment labels with explicit rules (e.g.
R>=4 AND F>=4 AND M>=4→ Champions). - Store scores and labels as audience attributes (or emit a periodic
rfm_scoredevent with properties). - Create live segments in your marketing automation tool on those attributes.
- Ship email/SMS journeys for 2–3 money segments, each with an exit rule (e.g. leave At Risk after a new purchase).
- Schedule refreshes (weekly or monthly) so scores do not go stale.
Skip steps 5–6 and RFM stays an Excel report — not an automation input.
Worked scenario: home-goods ecommerce shop
Imagine “New Home Store” has about 8,200 buyers in 12 months. Until last month the team sent one Friday SMS discount to everyone. Unsubscribe rates climbed, and Champions learned to wait for a code.
Scoring snapshot
After quintile scoring:
| Segment | Approx. size | Observation |
|---|---|---|
| Champions | ~950 | ~28% of 12-month revenue |
| Loyal | ~1,400 | Steady repeat, mid basket |
| At Risk | ~1,100 | Previously high F, now weak R |
| Hibernating + Lost | ~2,600 | Were burning SMS budget |
Actions in marketing automation
- Champions: journey without deep discounts — early access to new stock + referral invite. Email primary; SMS only for rare events.
- At Risk: 3-touch journey over 14 days — day 0 short SMS (“we miss you” + link to their previous top category), day 3 email with 2–3 relevant picks, day 10 limited offer if still no purchase. Immediate exit on
order_completed. - Lost: monthly test on a 10% sample with a specific offer; if no response, lower cadence — do not keep weekly blasting.
- Friday blast: stopped for Champions and At Risk; kept only where the segment still justified it.
The outcome to chase (not a magic promise): fewer irrelevant sends, better margin on Champions, and a measurable win-back rate on At Risk. Compare before/after inside the same segment — not only whole-site revenue.
Mapping RFM to Leadara (real product language only)
Once R/F/M scores and a segment label exist:
- Keep them on the profile as attributes (or send a periodic
rfm_updatedevent). - Build a segment in Leadara — e.g. “At Risk: R≤2 and F≥4”.
- Trigger an email and/or SMS journey on segment entry (or on the update event).
- Add a conversion exit after purchase so reminders stop.
Leadara’s building blocks here are events, segments, journeys, email/SMS. Treat RFM as the scoring layer beside or upstream of the platform; when attributes/events are ready, wire them into segments and journeys — no invented features required.
Common mistakes that break RFM programs
- Copying foreign thresholds without looking at your own order distribution (apparel cycles in Iran differ from grocery).
- Not refreshing scores — someone who bought last week still sits in At Risk and gets a win-back note.
- Deep discounts for Champions — you teach them to wait for a code.
- Merging Hibernating with At Risk — tone, offer, and budget should differ.
- RFM labels without journey exit rules — scheduled spam with prettier names.
- Ignoring SMS consent and frequency caps — right segment, wrong send = complaints and blocks.
- Starting with 12 segments — begin with Champions, At Risk, and one New/Potential bucket; branch later.
RFM versus typical Persian explainers in the market
Persian search for «مدل RFM چیست» often lands on conceptual explainers (for example on portal.ir or sepidargroup): definitions of R/F/M, a segment table, sometimes a spreadsheet walkthrough. That layer is useful — and still incomplete for an execution team.
The practical angle this article adds — where marketing automation enters — is:
- Do not leave scores in a report; store them as attributes/events.
- Build a live segment and attach an email/SMS journey.
- Give every segment an exit rule and a metric.
If you only need a definition slide, conceptual articles are enough. If retention and win-back must land in the send queue, you have to move from score → segment → journey.
Checklist for this month
- Export 12 months of orders (customer id, date, amount, successful status)
- Compute R/F/M and 1–5 scores
- Label at least three segments: Champions, At Risk, Lost/Hibernating
- Write attributes onto audience profiles
- Launch one At Risk journey with a purchase exit
- Set a Champions message policy without deep discounts
- Review segment sizes and journey conversion weekly
FAQ
What is RFM and what does the acronym mean?
RFM stands for Recency, Frequency, and Monetary: how recently someone purchased, how often, and how much they spent. It segments customers on those three scores so retention and win-back messages stay targeted.
What score range does RFM usually use?
The most common scale is 1 to 5 per axis (5 is best). Some teams use 1–10 or 0–1 normalization; for a first version, 1–5 is readable and enough.
How much data do you need to start?
A few hundred customers with order dates and amounts is enough for v1. Below that you can still use manual thresholds, but statistical quintiles get noisy. Clean customer IDs and removing test orders matter more than chasing huge volume on day one.
How often should you recompute RFM?
Weekly for high-frequency commerce; monthly is common for longer purchase cycles. If an At Risk journey sits on stale scores, messages arrive late or wrong. Refresh attributes in the automation tool on the same cadence.
What is the difference between Champions and Loyal?
Champions are strong on all three axes and still recent. Loyal customers repeat well but may score a bit lower on Recency or Monetary. In campaigns: do not hammer Champions with deep discounts; move Loyal with loyalty benefits and cross-sell.
Does RFM work for subscription / SaaS businesses?
Yes, if you redefine the metrics: Recency = last payment or last meaningful activity, Frequency = renewals or active sessions, Monetary = period revenue. Segment logic and the journey wiring stay the same.
Must you always use all three letters?
For standard RFM, yes. If spend data is incomplete, some teams temporarily run RF and add M later. Still better to approximate Monetary so high-spend Champions are not mixed with high-frequency low-spend buyers.
How do you connect RFM to email and SMS campaigns?
Store scores/labels as attributes → build segments → attach journeys with fitting copy and a post-purchase exit. In Leadara that path uses events, segments, and journeys for email/SMS; RFM math usually lives in a warehouse or scheduled script upstream.
Bottom line
RFM means three numbers from orders → scores → segments → relevant messages. It does not need ML; it needs clean order data, clear thresholds, and a wire into segments and journeys in marketing automation. Start from the definition, make three revenue segments live, give At Risk and Champions different paths, and push fresh attributes into automation every refresh — a pretty report with no send queue is still not automation.




