In the world of eCommerce, data is king. But not all data is created equal. If you want to know which customers to target, how to reach them, and what to offer, the RFM model might just be your new best friend. In this guide, we’ll explore what RFM stands for, how it works, and most importantly, how eCommerce brands can use it to supercharge their email marketing efforts.
Understanding RFM: A Quick Overview
What Does RFM Stand For?
RFM stands for Recency, Frequency, and Monetary. 3 crucial metrics that help you evaluate customer behavior:
- Recency: How recently did the customer make a purchase?
- Frequency: How often do they purchase from you?
- Monetary: How much money do they spend on your store?
These three dimensions allow you to rank customers and tailor your communication based on their engagement level and spending habits.
Why RFM matters in eCommerce
RFM is simple yet incredibly effective. Unlike complex customer analytics systems, RFM focuses on tangible, action-oriented data that reflects real customer behavior. For eCommerce businesses, this means:
- Better customer segmentation
- Smarter targeted email campaigns
- Higher conversion rates
- Improved customer retention
Breaking down the RFM model
Recency: How recently did the customer buy?
Customers who’ve bought recently are more likely to buy again. RFM scoring ranks users based on how many days have passed since their last purchase. A lower number of days = a higher recency score.
Frequency: How often do they buy?
This measures repeat behavior. Frequent buyers tend to be more loyal and are great candidates for upselling and loyalty programs. High-frequency customers often drive a large portion of your revenue.
Monetary: How much do they spend?
Monetary value evaluates how much a customer spends over a specific period. Big spenders often represent a small but highly valuable segment. You don’t want to treat them the same way you’d treat occasional buyers.
How RFM works: The scoring system explained
Scoring methods and segment creation
Each customer receives a score from 1 to 5 for each metric. A 5 is the best score and a 1 is the lowest. By combining scores (e.g., R=5, F=5, M=5), you can categorize your customers into meaningful segments:
Segment | RFM Score Pattern | Description |
---|---|---|
Champions | 5-5-5 | Recent, frequent, big spenders |
At Risk | 2-4-3 | Once loyal, now inactive |
New Customers | 5-1-2 | Recently acquired |
Big Spenders | 3-3-5 | Spend a lot, not often |
Hibernating | 1-1-1 | Long inactive, low value |
Examples of RFM segments in action
1️⃣ VIP Champions
Who they are:
Your best customers. They’ve bought recently, buy often, and spend the most.
Segment Definition (Klaviyo):
[KL] RFM-R
= 5[KL] RFM-F
= 5[KL] RFM-M
= 5
Automation Flow Blueprint:
- Trigger: When someone joins “VIP Champions” segment
- Flow Emails:
- Welcome to VIP Club – Subject: “You’re officially a VIP 🎉” – Thank them, outline perks, tease exclusives.
- Early Access Product Launch – Send 24–48h before public launch.
- Birthday/Anniversary Gift – Dynamic coupon code or freebie.
- Extras: Add SMS for launch alerts.
2️⃣ Loyal High Spenders
Who they are:
Spend a lot and buy often, but not always super recent. Risk of churn if not engaged.
Segment Definition:
[KL] RFM-R
(3, 4)[KL] RFM-F
(4, 5)[KL] RFM-M
= 5
Automation Flow Blueprint:
- Trigger: Joins “Loyal High Spenders” segment
- Flow Emails:
- “We Value You” Perk – Surprise reward points or coupon.
- Exclusive Collection Drop – Personalized for their category preferences.
- Replenishment Reminder – Based on predicted repurchase date.
- Conditional Split: If no engagement after Email 2 → send stronger incentive.
3️⃣ Potential Loyalists
Who they are:
Recent buyers who spend and buy at an above-average rate, but haven’t reached VIP yet.
Segment Definition:
[KL] RFM-R
(4, 5)[KL] RFM-F
= 3[KL] RFM-M
(3, 4)
Automation Flow Blueprint:
- Trigger: Joins “Potential Loyalists” segment
- Flow Emails:
- Tailored Product Recommendations – Use Viewed Product + Ordered Product data.
- Bundle/Cross-Sell Offer – Encourage bigger baskets.
- Loyalty Program Invitation – Highlight benefits of frequent buying.
- Split: If purchase in Flow → tag as “VIP Nurture Conversion” and exit.
4️⃣ At-Risk Big Spenders
Who they are:
They used to spend a lot, but purchases are less frequent or less recent now.
Segment Definition:
[KL] RFM-R
(2, 3)[KL] RFM-F
(2, 3)[KL] RFM-M
= 5
Automation Flow Blueprint:
- Trigger: Joins “At-Risk Big Spenders” segment
- Flow Emails:
- “We Miss You” Email – High personalization (use their name + past product).
- VIP Comeback Challenge – E.g., Spend $X in Y days → get bonus reward.
- Personalized Discount – Specific to last purchased category.
- Conditional Split: If no engagement → move to “Churned High Value” suppression segment.
5️⃣ Lost Low Spenders
Who they are:
Made a small purchase long ago, unlikely to return without strong incentive.
Segment Definition:
[KL] RFM-R
= 1[KL] RFM-F
(1, 2)[KL] RFM-M
(1, 2)
Automation Flow Blueprint:
- Trigger: Joins “Lost Low Spenders” segment
- Flow Emails:
- Deep Discount Offer – Limited-time, easy-entry products.
- What’s New Since You Left – Showcase new arrivals and improvements.
- Last Chance to Stay Connected – Re-permission email.
- Extras: If no open/click after full flow → suppress from campaigns.
Segment Name | Klaviyo Filters | Flow Trigger | Flow Goal | Subject Line Ideas |
---|---|---|---|---|
VIP Champions | [KL] RFM-R] = 5 AND [KL] RFM-F] = 5 AND [KL] RFM-M] = 5 | Joins “VIP Champions” segment | Reward loyalty, keep spending high | • “You’re on our VIP list 🎉”• “Exclusive early access — just for you”• “Your VIP perks are waiting” |
Loyal High Spenders | [KL] RFM-R] IN (3, 4) AND [KL] RFM-F] IN (4, 5) AND [KL] RFM-M] = 5 | Joins “Loyal High Spenders” segment | Re-engage high-value buyers before churn | • “We’ve got something special for you”• “Because you deserve the best”• “Your loyalty never goes unnoticed” |
Potential Loyalists | [KL] RFM-R] IN (4, 5) AND [KL] RFM-F] = 3 AND [KL] RFM-M] IN (3, 4) | Joins “Potential Loyalists” segment | Encourage more frequent purchases | • “You’re closer to VIP than you think”• “Your next order could unlock this…”• “We picked these just for you” |
At-Risk Big Spenders | [KL] RFM-R] IN (2, 3) AND [KL] RFM-F] IN (2, 3) AND [KL] RFM-M] = 5 | Joins “At-Risk Big Spenders” segment | Win back high spenders showing signs of churn | • “We miss you — here’s 20% off”• “Your VIP status is slipping…”• “Don’t miss your next reward” |
Lost Low Spenders | [KL] RFM-R] = 1 AND [KL] RFM-F] IN (1, 2) AND [KL] RFM-M] IN (1, 2) | Joins “Lost Low Spenders” segment | Make one last attempt to re-engage | • “Last chance to save 30%”• “It’s been a while — here’s what’s new”• “Still interested? Let us know” |
[Technical] How to Build RFM Profile Properties in Klaviyo for Free
You don’t need Klaviyo’s paid Klaviyo Data Platform (KDP) plan to store and update RFM scores. You can create custom profile properties and update them automatically using webhooks in flows.
Step 1 — Create flows
Step 2 — Update Scores Automatically with a Webhook
Use Destination URL
- https://a.klaviyo.com/client/profiles/?company_id=PUBLIC_API_KEY
Headers
- Header 1 = accept: application/vnd.api+json
- Header 2 = content-type: application/vnd.api+json
- Header 3 = revision: 2025-01-15
Follow our step by step guide regarding the workflow for each one of the RFM values.
UPDATE RECENCY VALUE
Flow trigger is “When someone fulfilled order”. Create one webhook and the following information in the JSON body. What it will do is update the “RFM-R” profile property to the value of “5”.
{
"data": {
"type": "profile",
"attributes": {
"email": "{{ person.email }}",
"properties": {
"RFM-R": "5"
}
}
}
}
Add a time delay of 90 days and then update “RFM-R” to the value of 4. Make sure to add a conditional split before every webhook (except the first one) to check if someone fulfilled order since starting the flow. In that case you should take them out since they will re-enter the flow and update their RFM-R property.

JSON body for updating Recency value.
{
"data": {
"type": "profile",
"attributes": {
"email": "{{ person.email }}",
"properties": {
"RFM-R": "4"
}
}
}
}
So while time goes by and the user does not places a new order, RFM-R will decay to 1, which is the lowest Recency score in RFM property.
UPDATE FREQUENCY VALUE
Flow trigger is “When someone fulfilled order”. Create one conditional split in the first step of the flow: “When someone fulfilled order equals 1 time over all time.”
Depending on your brand, you can adjust the values in all flows to make this a good fit for you.

Add the following information in the JSON body. What it will do is update the “RFM-F” profile property to the value of “1”.
{
"data": {
"type": "profile",
"attributes": {
"email": "{{ person.email }}",
"properties": {
"RFM-F": "1"
}
}
}
}
Add a second conditional split about those that fulfilled their second order. “When someone fulfilled order equals 2 time over all time.” and then use the following JSON.
{
"data": {
"type": "profile",
"attributes": {
"email": "{{ person.email }}",
"properties": {
"RFM-F": "2"
}
}
}
}
What it will do is update the “RFM-F” profile property to the value of “2”. Do this until you reach the value of 5. So the biggest the number the more orders this profile placed over time and that impacts the Frequency Value in our RFM property.
UPDATE MONETARY VALUE
Flow trigger is “When someone fulfilled order”. Now here things get a little more tricky. First of all you have to divide your customers in 5 groups depending on your CLV. So the first 20% will have a score of 0-1, the next 20% will have a score of 1-2 etc.
The difference also here is that you do not update the monetary property but every time the client fulfills an order, you add value. So you can create conditional splits based on those values and then add monetary value. For example, we add 0.2 points for each 40 eur of fulfilled order value since the CLV of this brand is 1.000 eur. (1.000€/5 segments is 200€ each segment so for every 200€ the client should get a value of 1. To make it more precise you can add smaller steps like we do here. 1 point for each 200€ so 0.2 points for 40€.)
Depending on your brand, you can adjust the values in all flows to make this a good fit for you.
Add the following information in the JSON body. What it will do is add the non integer value of 0.2 for the “RFM-Μ” profile property.
{
"data": {
"type": "profile",
"attributes": {
"email": "{{ person.email }}",
"properties": {
"RFM-M": "{{ person|lookup:'RFM-M'|default:0|floatadd:'0.2'}}"
}
}
}
}
💡 Pro Tip: You can combine webhooks with Klaviyo’s metric filters so the scoring logic only runs under certain conditions (e.g., high-value orders, specific categories).
Why eCommerce brands should use RFM
Customer segmentation based on behavior
Unlike generic demographic segmentation, RFM is based on what your customers actually do. This behavior-driven model lets you zero in on what works—and cut out the noise.
Personalized Email Marketing with precision
Sending the same message to your entire list doesn’t work. With RFM, you can tailor messages, discounts, and recommendations based on where each customer stands in their lifecycle.
Top use cases of RFM in Email Marketing
Re-engaging dormant customers
For customers who haven’t purchased in a while (low Recency), send personalized win-back emails with enticing offers like:
- “We miss you—come back and get 20% off!”
- “Still interested? Your favorites are waiting.”
Rewarding your best customers
Your Champions deserve VIP treatment. Create campaigns that offer:
- Exclusive first looks at new products
- Early-bird discounts
- Referral rewards
Creating Win-Back campaigns
Using a mix of email automation and RFM insights, you can craft timely campaigns to nudge lapsed customers, using copy that reignites interest.
Upsell and Cross-Sell Campaigns
For high-Monetary and high-Frequency customers, upselling is easier. Recommend complementary products or value bundles based on past purchases.
How to get started with RFM for your Brand
Tools and software options
You don’t need a PhD in data science to implement RFM. Tools like:
- Klaviyo
- Omnisend
- Shopify + RFM Add-ons
- Google Sheets + Exported Customer Data
…can help automate the entire process.
Data collection and preparation
Start by exporting order history and segmenting based on:
- Last purchase date
- Number of orders
- Total spent
Assign scores and start creating your first RFM-driven campaigns.
Common mistakes to avoid with RFM
Over-Segmentation
Too many micro-segments can overwhelm your email strategy. Focus on the key segments that matter most to your goals.
Ignoring customer lifecycle stages
RFM is powerful, but combine it with lifecycle marketing (awareness, consideration, decision) for better results.
FAQs About RFM for eCommerce Email Marketing
What’s the difference between RFM and basic email segmentation?
RFM focuses on customer behavior, not just static traits like age or location.
Can I use RFM with a small email list?
Absolutely. Even small brands benefit from understanding their best vs. worst customers.
How often should I update my RFM segments?
Every 30–60 days is ideal, depending on your sales cycle.
Which tools automate RFM for email marketing?
Klaviyo, Omnisend, and even Shopify analytics integrations can automate this process.
Is RFM better than AI-based segmentation?
Not necessarily better, but it’s simpler, faster, and easier to understand. Great for lean teams.
Does RFM work for subscription-based businesses?
Yes! It’s especially helpful to identify churn risks and loyal subscribers.
Turn your data into revenue with RFM
For eCommerce brands, RFM isn’t just another marketing acronym—it’s a revenue-generating system. By understanding your customers’ behavior and segmenting them accordingly, you can send smarter emails that convert, retain, and delight. Whether you’re reactivating lapsed customers or pampering your biggest spenders, RFM lets you turn data into real dollars.