How to Run an RFM Analysis

How to Run an RFM Analysis

How to run an RFM analysis: score recency, frequency, and monetary value on one customer record and build live segments in your CRM.

No credit card required

Free 100k syncs every month

The math behind an RFM analysis is a 1-to-5 scale across three numbers. You could teach it to an intern in ten minutes. So why does every guide tell you to pipe your data into a warehouse and let a CDP compute it "behind the scenes" first? Because the hard part was never the scoring. It's that the three numbers live in three different tools, and none of them sit on the same customer record.

Recency is the last order or login date, sitting in your ecommerce platform or product database. Frequency is how many times someone has bought, buried in your order history. Monetary value is total spend, which only your billing tool knows. Three fields, three systems, zero overlap. That gap is what stalls the analysis, not the formula.

This guide is the decision-stage companion to our customer segmentation pillar. If you want the broader picture of how segmentation works when your tools share data, start there. Here, we go straight at RFM: what each letter measures, where its data already lives, and how to score and segment without a warehouse, a CDP, or a line of SQL.

What an RFM analysis measures: recency, frequency, and monetary value

RFM came out of direct-mail marketing decades ago, and it has outlasted most of what replaced it for a simple reason. Three behavioral signals predict future purchases better than almost anything else you can measure cheaply.

  • Recency: how long since the customer's last purchase or active session. A buyer from last week is far more likely to buy again than one from last spring.

  • Frequency: how many times they've purchased over a window you choose. Repeat buyers are your steadiest revenue.

  • Monetary value: total spend across the relationship. Big spenders deserve different treatment than one-time discount hunters.

Score each on a 1-to-5 scale and you get a three-digit RFM score. A 555 is your best customer. A 111 has effectively left. Everyone else lands somewhere in between, and the spread is where your segments come from.

One honest caveat before you build anything: RFM is a backward-looking model. It tells you what someone has done, not why, and it won't capture intent the way a richer behavioral model can. For most teams under 200 people, that tradeoff is fine. You get 80% of the insight without hiring a data scientist. If your business genuinely needs propensity scoring across anonymous traffic, RFM is a starting point, not the finish line.

Where your RFM data already lives across billing, ecommerce, and product tools

Here's the map most RFM guides skip. Before you score anything, you need to know which system holds each input, because that determines what you have to move.

RFM dimension

What it measures

Where the field already lives

Recency

Last purchase or login date

Shopify, your ecommerce platform, or product database

Frequency

Total order or purchase count

Order history in Shopify, Stripe, or your database

Monetary

Lifetime spend or total revenue

Stripe, Chargebee, or your billing tool

Read down the right column and the problem is obvious. The three numbers you need for a single RFM score are spread across two or three tools that don't talk to each other. And the place you actually want to act on the score, your CRM or email tool, has none of them.

The standard advice is to centralize everything in Snowflake or BigQuery, model it, and push the scores back out. If you already run a warehouse, that's a reasonable path and I won't argue against it. For a RevOps lead or an ecommerce marketer without a data engineer, it's a multi-week project to support a model you could otherwise stand up this afternoon.

How to run an RFM analysis without a warehouse or CDP

The lighter path is to bring the three RFM inputs onto one customer record in the tool where you'll build segments, then score them there. That's what Oneprofile does. Connect your billing tool, ecommerce platform or product database, and your CRM, then map the three fields each contributes.

  1. Connect your sources and destination. Add Stripe (or your billing tool), Shopify or your product database, and your CRM. Authenticate each with API keys or OAuth. Oneprofile reads the available fields from each tool at connect time.

  2. Map the three RFM fields. Send last purchase date, order count, and lifetime spend to contact properties on your CRM, matching customers on email. If a property doesn't exist yet, Oneprofile creates it with the right type.

  3. Pick a sync mode and schedule. Use "Update or Create" so existing contacts get enriched and new buyers get added. A 15-minute schedule keeps the inputs current without straining any tool's rate limits.

After the first sync, every contact carries its own recency, frequency, and monetary value. The scattered analysis just became a single-record one.

A note on what gets synced. Frequency and monetary value are usually aggregates, not raw fields. Most billing tools don't expose "lifetime spend" as a single attribute, so you compute it from the charge history. Decide upfront whether monetary means all-time revenue or trailing-twelve-months, because that choice changes who lands in your big-spender bucket.

How to calculate an RFM score from 1 to 5 and build RFM segments

With the three values on one record, scoring is a ranking exercise. Don't overthink the thresholds.

The cleanest method is quintiles. Sort all customers by recency, then split into five equal groups. The freshest 20% score a 5, the next 20% a 4, on down to a 1. Repeat the split for frequency and again for monetary value. Quintiles adapt to your actual customer base, so you avoid hard-coding a dollar figure that's wrong for your market.

Most CRMs handle this with a calculated property or a filtered list. In HubSpot you can build score properties; in Salesforce a formula field; in a spreadsheet a percentile function does it in one column. The point is that the scoring lives next to the data now, so you're not exporting anything.

Then combine the three digits into one RFM score and cut your segments. You don't need a label for all 125 combinations. Start with the handful that change what your team does.

Segment

RFM pattern

What it tells you

Champions

High R, high F, high M (5-5-5, 5-5-4)

Your best customers. Reward them, ask for referrals.

Loyal

High F, mid M

Steady repeat buyers worth nurturing into bigger spend.

Big spenders

High M, lower F

High value but infrequent. Upsell and re-engage.

At-risk

Low R, high F or M

Good history, gone quiet. The window to win them back is closing.

Lost

Low R, low F, low M

Mostly gone. Worth one reactivation attempt, not your budget.

The at-risk segment is the one I'd build first. A customer who used to buy every month and hasn't shown up in 60 days is a measurable, recoverable revenue signal, and most teams catch it far too late.

Activating your RFM segments across email, ads, and your CRM

A segment that sits in a list and triggers nothing is busywork. The payoff comes from wiring each RFM segment to an action, and your messaging should change with the score.

  • Champions get early access, loyalty perks, and referral asks. They don't need a discount to buy again, so don't waste margin on them.

  • At-risk gets a timely win-back: a reminder, a small incentive, a check-in before they're gone for good.

  • Big spenders get upsell and cross-sell offers tied to what they've already bought.

  • Lost gets one reactivation campaign. If it doesn't land, suppress them and stop paying to reach them.

Because the same syncs that populated the scores keep running, the segments stay alive. When a new order lands in Stripe, monetary value and frequency update on the contact, and property-level change tracking pushes only those changed fields. A customer who lapses slides from loyal into at-risk on her own. A repeat buyer climbs into champions. Nobody re-runs an export.

That self-maintaining loop is the real difference between an RFM analysis you run once and forget, and one that drives campaigns every week. The model was always the easy part. Getting recency, frequency, and monetary value onto one record, and keeping them fresh, is the work, and it's the part you can finish today.

Ready to get started?

No credit card required

Free 100k syncs every month

Ready to get started?

No credit card required

Free 100k syncs every month

Ready to get started?

No credit card required

Free 100k syncs every month

What is an RFM analysis?

Do I need a CDP or warehouse to run an RFM analysis?

How do you calculate an RFM score?

What are the standard RFM segments?

How often should an RFM analysis update?

Is RFM analysis outdated compared to machine learning?