What is RFM and how to build it for free in Klaviyo using webhooks.

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:

SegmentRFM Score PatternDescription
Champions5-5-5Recent, frequent, big spenders
At Risk2-4-3Once loyal, now inactive
New Customers5-1-2Recently acquired
Big Spenders3-3-5Spend a lot, not often
Hibernating1-1-1Long 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:
    1. Welcome to VIP Club – Subject: “You’re officially a VIP 🎉” – Thank them, outline perks, tease exclusives.
    2. Early Access Product Launch – Send 24–48h before public launch.
    3. 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:
    1. “We Value You” Perk – Surprise reward points or coupon.
    2. Exclusive Collection Drop – Personalized for their category preferences.
    3. 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:
    1. Tailored Product Recommendations – Use Viewed Product + Ordered Product data.
    2. Bundle/Cross-Sell Offer – Encourage bigger baskets.
    3. 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:
    1. “We Miss You” Email – High personalization (use their name + past product).
    2. VIP Comeback Challenge – E.g., Spend $X in Y days → get bonus reward.
    3. 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:
    1. Deep Discount Offer – Limited-time, easy-entry products.
    2. What’s New Since You Left – Showcase new arrivals and improvements.
    3. Last Chance to Stay Connected – Re-permission email.
  • Extras: If no open/click after full flow → suppress from campaigns.
Segment NameKlaviyo FiltersFlow TriggerFlow GoalSubject Line Ideas
VIP Champions[KL] RFM-R] = 5 AND [KL] RFM-F] = 5 AND [KL] RFM-M] = 5Joins “VIP Champions” segmentReward 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] = 5Joins “Loyal High Spenders” segmentRe-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” segmentEncourage 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] = 5Joins “At-Risk Big Spenders” segmentWin 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” segmentMake 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

  1. Go to Flows in Klaviyo
  2. Create your own flow
  3. Add your webhooks

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

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.

A workflow in Klaviyo showing a conditional split based on order fulfillment. The split checks if a person has fulfilled zero orders since starting the flow. If "Yes," the flow continues with a webhook trigger and a 90-day wait before checking the condition again. If "No," the profile is updated with a recency scoring date and the flow ends.

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.

A filter builder interface showing criteria for tracking user actions. The selected filter reads "What someone has done (or not done)" with conditions set to "Person has Fulfilled Order equals 1 over all time". There are buttons for adding more filters or deleting the current one.

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.

Scroll to Top