RFM analysis: Customer segmentation for lifecycle marketing
How to do RFM analysis: analysis window, scoring, monetary value, a worked example, RFM segments, and how to map each segment to a lifecycle journey.
10 min read

RFM analysis is a customer segmentation method. It scores customers on how recently they last bought (recency), how often they buy (frequency) and how much they spend (monetary value). It then groups them into segments.
Each customer gets a score on all three dimensions, and the combination of scores shows which segment they belong to. Customer relationship management (CRM) teams use this RFM segmentation to decide which message goes to which customer.
This guide covers how to do RFM analysis and the three decisions you need to make up front. It also covers a small worked example and how to map the segments to lifecycle journeys. It closes with the method's limits and how it is adapted for mobile apps.
What is RFM analysis and what does it measure?
RFM analysis reduces a customer's past buying behavior to three numbers and makes customers comparable on them. Each dimension answers a different question.
Recency shows when the customer last bought. It is measured in days between the analysis date and the last purchase, so the shorter the gap, the higher the score. Frequency measures how many times they bought in a given period, in number of orders. Monetary value measures how much they spent, as total spend or average spend per order.
The method comes from direct mail and catalog marketing, where practitioners ranked past purchase data on these three dimensions to decide whom to mail. A 2005 paper by Peter Fader, Bruce Hardie and Ka Lok Lee appeared in the Journal of Marketing Research. Citing Arthur Hughes, it notes that recency is usually the most powerful discriminator. That is why the framework is called "RFM" rather than "FRM".
The same paper describes RFM variables as only imperfect indicators of underlying behavioral traits. That idea is the starting point for the limits covered at the end of this guide.
How to do RFM analysis
RFM analysis works by calculating three values per customer from order data and turning them into scores. You can do it in Excel, SQL or Python, and your CRM tool may have a built-in RFM feature. The steps are:
- Prepare the data: Pull an order table with customer ID, order date and order amount. Decide up front how to handle cancelled and returned orders.
- Choose the analysis date and window: Decide which day counts as "today" and how many days of history you look back on.
- Calculate the three values: For each customer, compute days since the last order, the number of orders in the window, and total or average spend.
- Score: Convert each value to a score on the same scale, for example 1 to 5 or 1 to 3.
- Segment: Group score combinations into meaningful segments.
- Connect segments to messaging: Decide which journey or campaign runs for each segment, and recalculate the segments on a regular schedule.
The decisions in steps two and four are the ones most often skipped. The same data produces different segments with a different window or a different scale.
Choosing the analysis window
Choose the analysis window from your business's natural purchase cycle. A grocery app where people buy weekly and a furniture store where people buy once a year cannot be judged on the same window. Too short a window makes regular but infrequent buyers look lost, and too long a window keeps customers who left years ago looking active.
Klaviyo's RFM documentation uses recency thresholds of 180 and 365 days by default. That is a tool default, not a rule that fits every business.
Scoring on 1 to 5 or 1 to 3
There is no single standard for RFM scoring. IBM SPSS documentation splits each dimension into 5 bins by default, which creates 125 possible combined scores from 111 to 555. Klaviyo scores all three dimensions from 1 to 3, and Braze's RFM segments use a scale from 0 to 3.
A five-point scale separates customers more finely but means more segments and smaller groups. A three-point scale is easier to read on a small customer base.
Scores are set in one of two ways: by splitting customers into equal-sized groups or by setting fixed thresholds. Equal-sized groups have a trap. IBM's documentation shows with an example that bins come out uneven when many customers share the same value. If most of your customers have placed a single order, frequency cannot tell them apart and they all land in the same group.
Defining monetary value
Decide whether monetary value means total spend or average spend per order. IBM, Klaviyo and Braze use total spend, while the Fader, Hardie and Lee paper uses average spend per transaction. Total spend tends to move with frequency, since a customer who orders often naturally spends more.
Also decide up front whether to subtract returns and whether to include shipping and tax. Otherwise, customers with high return rates will look more valuable than they are.
Example: an RFM table for 10 customers
The table shows RFM scoring for 10 entirely hypothetical customers. The analysis date is November 1, 2026 and the window is the last 365 days.
Scores use fixed thresholds: for recency, 30 days or less scores 3, 31 to 90 days scores 2, and more than 90 days scores 1. For frequency, 4 or more orders score 3, 2 to 3 orders score 2, and one order scores 1. For monetary value, total spend above $300 scores 3, $100 to $300 scores 2, and below $100 scores 1.
Customer: A
- Days since last order
- 5
- Orders
- 6
- Total spend
- $480
- R
- 3
- F
- 3
- M
- 3
- RFM score
- 333
Customer: B
- Days since last order
- 12
- Orders
- 3
- Total spend
- $210
- R
- 3
- F
- 2
- M
- 2
- RFM score
- 322
Customer: C
- Days since last order
- 20
- Orders
- 1
- Total spend
- $45
- R
- 3
- F
- 1
- M
- 1
- RFM score
- 311
Customer: D
- Days since last order
- 45
- Orders
- 4
- Total spend
- $360
- R
- 2
- F
- 3
- M
- 3
- RFM score
- 233
Customer: E
- Days since last order
- 60
- Orders
- 2
- Total spend
- $90
- R
- 2
- F
- 2
- M
- 1
- RFM score
- 221
Customer: F
- Days since last order
- 75
- Orders
- 1
- Total spend
- $260
- R
- 2
- F
- 1
- M
- 2
- RFM score
- 212
Customer: G
- Days since last order
- 120
- Orders
- 5
- Total spend
- $520
- R
- 1
- F
- 3
- M
- 3
- RFM score
- 133
Customer: H
- Days since last order
- 150
- Orders
- 2
- Total spend
- $70
- R
- 1
- F
- 2
- M
- 1
- RFM score
- 121
Customer: I
- Days since last order
- 210
- Orders
- 1
- Total spend
- $30
- R
- 1
- F
- 1
- M
- 1
- RFM score
- 111
Customer: J
- Days since last order
- 300
- Orders
- 3
- Total spend
- $150
- R
- 1
- F
- 2
- M
- 2
- RFM score
- 122
| Customer | Days since last order | Orders | Total spend | R | F | M | RFM score |
|---|---|---|---|---|---|---|---|
| A | 5 | 6 | $480 | 3 | 3 | 3 | 333 |
| B | 12 | 3 | $210 | 3 | 2 | 2 | 322 |
| C | 20 | 1 | $45 | 3 | 1 | 1 | 311 |
| D | 45 | 4 | $360 | 2 | 3 | 3 | 233 |
| E | 60 | 2 | $90 | 2 | 2 | 1 | 221 |
| F | 75 | 1 | $260 | 2 | 1 | 2 | 212 |
| G | 120 | 5 | $520 | 1 | 3 | 3 | 133 |
| H | 150 | 2 | $70 | 1 | 2 | 1 | 121 |
| I | 210 | 1 | $30 | 1 | 1 | 1 | 111 |
| J | 300 | 3 | $150 | 1 | 2 | 2 | 122 |
The most instructive row is G. G has the highest spend and frequency but hasn't bought in 120 days.
Suppose you summed the scores into one number. G (7 points) would then look "better" than C (5 points), who placed a first order 20 days ago.
Yet the two need completely different messages. That is why you read the combination rather than adding the scores up.
RFM segments
RFM segments are groups of customers with similar score combinations. Tools often give segments similar names, such as Champions, Loyal, At Risk, Can't Lose Them and Hibernating. But the number of segments and each segment's score rule differ from tool to tool.
Braze defines 10 segments on its 0 to 3 scale and assigns a customer to the first segment whose rule they meet. Klaviyo uses 6 groups on a 1 to 3 scale. Bloomreach's RFM documentation lists 11 segments on a 1 to 5 scale and suggests treating its own table as a starting point. In other words, ready-made segment names are a template to adapt to your own data.
A scheme that splits the example customers into seven segments by recency and frequency could look like this. In this scheme monetary value doesn't set the segment, it sets priority within the segment:
Segment: Champions
- Rule (R and F)
- R 3, F 3
- Example customers
- A
Segment: Loyal
- Rule (R and F)
- R 2 or 3, F 2 or 3 (excluding champions)
- Example customers
- B, D, E
Segment: New
- Rule (R and F)
- R 3, F 1
- Example customers
- C
Segment: Awaiting a second order
- Rule (R and F)
- R 2, F 1
- Example customers
- F
Segment: Can't lose them
- Rule (R and F)
- R 1, F 3
- Example customers
- G
Segment: At risk
- Rule (R and F)
- R 1, F 2
- Example customers
- H, J
Segment: Lost
- Rule (R and F)
- R 1, F 1
- Example customers
- I
| Segment | Rule (R and F) | Example customers |
|---|---|---|
| Champions | R 3, F 3 | A |
| Loyal | R 2 or 3, F 2 or 3 (excluding champions) | B, D, E |
| New | R 3, F 1 | C |
| Awaiting a second order | R 2, F 1 | F |
| Can't lose them | R 1, F 3 | G |
| At risk | R 1, F 2 | H, J |
| Lost | R 1, F 1 | I |
This scheme is an example. Check segment sizes on your own data: if one segment collects most customers or stays nearly empty, adjust the thresholds.
Mapping RFM segments to lifecycle journeys
An RFM segment earns its value when each segment gets different messaging. The list shows each example segment, its goal and the flows that have a counterpart in the site's journey library. Each journey's trigger, waits and exit conditions are described on its own page.
- Champions: Reward and spread the relationship. Loyalty program activation, Referral reward.
- Loyal: Grow the basket and protect repeat buying. Complementary offer, Predicted replenishment.
- New: Close the first experience well. Post-purchase follow-up.
- Awaiting a second order: Bring in the second order. First-to-second purchase.
- Can't lose them: Stop the loss early. Tiered churn intervention.
- At risk: Give a reason to come back. Tiered churn intervention, Unused loyalty reward.
- Lost: Win back or reduce messaging. Lapsed customer win-back, Unengaged subscriber sunset.
The key distinction in the list is between "can't lose them" and "lost". Both have low recency, but the first bought often and spent a lot in the past.
That segment calls for an earlier and more personal intervention. The lost segment fits a limited win-back attempt and less messaging if there is no response.
You can also use segment changes as triggers. A customer moving from loyal to at risk is a more urgent signal than one who has sat in at risk for months. To build journeys from your own data, see the Journey Builder.
The limits of RFM
RFM looks backward. The Fader, Hardie and Lee paper stresses that measures of customer value should look to the future, while RFM summarizes past behavior. RFM describes well where a customer stands today, but it doesn't directly predict how much value they will create. It is not a substitute for forward-looking models such as customer lifetime value (CLV) or churn prediction, though it gives them a starting point.
Relative scores are another limit. When you score with equal-sized groups, a customer's score depends not only on their own behavior but on everyone else's.
MoEngage's RFM documentation notes that scores are relative. A user near the boundary between two score groups can land in a different group when the analysis runs again. Account for that movement each time you recalculate, and don't make a big messaging decision based on a small change in one run.
RFM for mobile apps and subscriptions
In products without purchases, RFM can be adapted to another meaningful behavior. MoEngage uses app or site open as the default recency event and counts app or site visits for frequency. It gives total time spent watching content as an example of monetary value.
CleverTap's RFM documentation segments users by how recently and frequently they performed a specific event. It notes that monetary value can be any kind of user spend, such as money or time.
In subscription businesses the monthly payment is usually fixed, so monetary value separates customers poorly. In that case, usage frequency and last use date are more informative. Whichever event you pick, make sure it reflects behavior that creates value. Opening and closing an app is not as strong a signal as a purchase.

Related tools
What to read next
November 14, 2026Email segmentation ideas: 10 examples with data and measurementTen email segmentation ideas, each with the data it needs, a concrete example and a way to measure its effect with a control group from the same segment.
November 14, 2026How to increase customer lifetime value: choose a lever and measure itWhich of five levers raises customer lifetime value most depends on your starting numbers. Pick the lever from your data and measure it with a control group.
November 14, 2026What is a customer journey? Stages, map and examplesA customer journey is what a customer goes through to reach a goal. How to choose its stages, map it and check the map against data, with an example.