RFM Analysis
RFM Analysis segments your customers based on their purchase behavior, helping you identify your best customers and those who need re-engagement.
What is RFM?
RFM stands for:
- Recency (R): How recently a customer made a purchase
- Frequency (F): How often they purchase
- Monetary (M): How much they spend
Each dimension is scored 1-5, with 5 being the best. The combination creates customer segments.
Dashboard Features
Scoring provenance
Under the page title, one line says when the scores were computed and how - "Scored 2 Sep over 1,240 customers - quintile tiers within this store", or the fixed-thresholds wording for a store with fewer than 25 buyers. These are the stored scores every filter and campaign reads, so you can tell a fresh figure from a stale one. Before the first scoring run there is no line to show.
At-risk callout
When anyone sits in an Act now segment (Needs Attention, About to Sleep, At Risk, Can't Lose Them), a banner leads the page: what share of your customers are slipping away, how much they have spent with you, what share of total revenue that is, and a Build win-back button that opens campaign creation. With no such customers the banner doesn't appear.
Summary Statistics
Four metrics:
| Metric | Description |
|---|---|
| Customers | Customers with an RFM score, and how many of the eleven segments they're spread across |
| Total value | Lifetime revenue of those customers |
| Value per customer | Total value divided by customers |
| Empty segments | Segments no customer has scored into yet |
Segment distribution
Horizontal bars, largest first, with a Customers / Revenue toggle - the same segments ranked by headcount, or by the value they hold. Comparing the two views is how you spot a segment that is large but low-value.
Value per customer
Horizontal bars of each segment's average value, highest first, with a vertical marker at the overall average and an above avg / below avg flag per segment. A closing line compares your most and least valuable segment. Segments reaching past the average line are worth protecting first, whatever their size.
Segments table
Sortable by Customers, Total value or Avg value:
| Column | Description |
|---|---|
| Segment | Name, colour dot, a priority pill (Act now / Grow / Hold), and a short explanation of what the segment means (Champions, At Risk, Hibernating, etc.) - a built-in legend so you don't have to memorize the RFM definitions |
| Customers | Count, share of all scored customers, and a bar |
| Total value | Revenue from the segment, its share of total revenue, and a bar |
| Avg value | Revenue per customer in that segment |
| Recommended action | What to do about this segment next |
Every row ends with a Send button that opens campaign creation with that segment pre-selected. Segments with no customers are kept out of both charts and the sorted rows - nothing is ranked by a zero - and collapse into a single "N segments have no customers" row at the foot of the table, which expands to list them.
RFM Segments Explained
High-Value Segments
| Segment | Color | Description | Action |
|---|---|---|---|
| Champions | Green | Best customers - highest frequency and spend | Reward loyalty, early access |
| Loyal | Blue | Consistent customers with good engagement | Upsell, referral programs |
| Potential Loyalists | Purple | Recent customers, average frequency | Increase frequency, loyalty programs |
Growing Segments
| Segment | Color | Description | Action |
|---|---|---|---|
| New Customers | Cyan | Recently made first purchase | Welcome series, onboarding |
| Promising | Teal | Recent but low frequency so far | Encourage second purchase |
At-Risk Segments
| Segment | Color | Description | Action |
|---|---|---|---|
| Needs Attention | Yellow | Declining engagement | Win-back campaigns |
| About to Sleep | Orange | At risk of becoming inactive | Urgency offers, re-engagement |
| At Risk | Red | Were loyal, now inactive | Special offers, feedback |
| Can't Lose | Dark Red | Were best customers, now inactive | Personal outreach, VIP offers |
Inactive Segments
| Segment | Color | Description | Action |
|---|---|---|---|
| Hibernating | Gray | Long-term inactive | Deep discount, final attempt |
| Lost | Dark Gray | Likely churned | Survey, remove from lists |
Using RFM for Marketing
Create Targeted Campaigns
- Go to Campaigns or Canvas
- Create a new campaign/flow
- Use segment filters to target specific RFM segments
- Tailor messaging based on segment characteristics
Example Campaign Strategies
For Champions:
Subject: VIP Early Access - New Collection
Content: Exclusive preview, loyalty rewards, referral bonuses
For At Risk:
Subject: We Miss You - Here's 20% Off
Content: Win-back offer, "What did we do wrong?", easy return
For New Customers:
Subject: Welcome! Here's What to Explore
Content: Product recommendations, how to get started, support info
Best Practices
- Monitor segment changes: Track how customers move between segments
- Set up automated flows: Create Canvas journeys for each segment
- Personalize by segment: Different segments need different approaches
- Calculate segment LTV: Understand the lifetime value of each segment
- Test and iterate: A/B test messaging for different segments
Technical Details
RFM Scoring Algorithm
There is one scorer. The RFM page, the segment filters, the journey gates and the stored ecommerce.rfm* fields on each contact all read the same numbers, computed from your orders in Joryio.
Each dimension (R, F, M) is scored 1-5 by quintile within your own store, so the tiers describe your customers rather than an industry benchmark:
- 5: Top 20% of your buyers
- 4: 60-80th percentile
- 3: 40-60th percentile
- 2: 20-40th percentile
- 1: Bottom 20%
A store with fewer than 25 buyers has too few customers for quintiles to mean anything, so it falls back to fixed thresholds until it grows past that.
When scores are computed
Every customer is re-tiled nightly, and a single buyer is re-scored immediately whenever they place an order or one of their orders changes status or is refunded. The page header states which it is showing - "Scored 2 Sep over 1,240 customers - quintile tiers within this store", or the fixed-threshold note for a store under 25 customers - so you can tell a stale figure from a fresh one.
Segment Assignment
Every customer gets three scores from 1 (weakest) to 5 (strongest): Recency (how recently they bought), Frequency (how often), and Monetary (how much). The score combination maps to one of eleven named segments - checked top to bottom, first match wins, so a customer who fits several lands in the strongest one:
| Segment | R | F | M | In plain terms |
|---|---|---|---|---|
| Champions | 4–5 | 4–5 | 4–5 | Bought recently, buy often, spend the most |
| Loyal | 3–4 | 3–5 | 3–5 | Solid regulars - the reliable core |
| Potential Loyalists | 3–4 | 2–3 | 2–4 | Recent buyers building a habit |
| New Customers | 4–5 | 1–2 | 1–2 | Just arrived - first purchase(s) |
| Promising | 3–4 | 1–2 | 1–4 | Recent, few orders, worth nurturing |
| Needs Attention | 2–3 | 1–3 | 1–3 | Mid-value and cooling off |
| About to Sleep | 1–2 | 1–3 | 1–2 | Fading - act before they're gone |
| At Risk | 1–2 | 3–4 | 1–4 | Used to buy often, gone quiet |
| Can't Lose Them | 1–2 | 4–5 | 2–5 | Your best customers, gone quiet - highest-stakes win-back |
| Hibernating | 1–2 | 1–3 | 1–3 | Long inactive, low value |
| Lost | 1 | 1 | 1 | Fully churned |
The ranges are a readable summary - under the hood each segment matches a specific set of R-F-M score combinations, and every combination resolves to exactly one segment.
Additional Customer Attributes
Beyond RFM, every customer is automatically enriched with derived purchase attributes you can use as segment filters (under the E-commerce filter type) in Campaigns and Canvas.
Historical CLV tier
A named band over a customer's total spend (their historical customer lifetime value - money already spent, not a prediction):
| Tier | Total spent |
|---|---|
| Bronze | under 50 |
| Silver | 50–199 |
| Gold | 200–499 |
| Platinum | 500–999 |
| VIP | 1000+ |
Filter operators: Historical CLV tier equals and Historical CLV tier is one of.
Predicted CLV (machine learning)
Where historical CLV looks backward, Predicted CLV looks forward: a machine- learning model forecasts each customer's expected spend over the next 365 days (in your base currency) from their purchase and engagement history. It's exposed as two segment attributes:
- Predicted CLV (next 365d) - the forecast amount (numeric; use ≥/≤ to target, e.g. "predicted to spend 500+ next year").
- Predicted CLV tier - a named band (bronze/silver/gold/platinum/vip) on the same scale as the historical tier.
The model retrains daily on your own data. Customers with no purchase history don't receive a prediction (there's no signal to forecast from). Use it to invest ahead of value - for example, enrol high-predicted-CLV customers into a VIP journey before they've spent enough to reach a historical tier.
Average purchase frequency
The average number of days between a customer's orders (computed from the spread between their first and last order, so it needs at least three orders - two orders are one gap, not a rhythm). Use Avg days between purchases ≥/≤ to target, for example, customers who typically buy every 30 days for a timely replenishment reminder.
Related replenishment signals, refreshed daily, are also available as filters:
- Predicted Next Order (days) - days until the customer's forecast next order, from their own purchase cycle (0 = due now). Target Predicted Next Order ≤ 7 to send a reorder reminder just before they'd normally buy.
- Purchase Overdue - true once a customer is well past their usual cycle (a win-back / lapsed-buyer signal).
Category & brand affinity
The product categories and brands a customer actually spends on, ranked by spend across all their orders. We surface the single strongest (top category / top brand) and the top five of each.
Filter operators:
- Buys category (any of) / Buys brand (any of) - matches customers whose top affinities include any of the categories/brands you list (comma-separated).
- Top category equals / Top brand equals - matches on the single strongest.
These make it easy to build audiences like "shops Shoes or Bags" or "top brand is Nike" for cross-sell and new-arrival campaigns.
Multi-Currency Reporting
Each workspace has one reporting currency. Revenue from every store in the workspace is converted into it at the exchange rate of each order's date - the European Central Bank daily reference rate for that day, or the latest one before it on weekends and holidays. Revenue, average order value, CLV, RFM monetary tiers, recovered-cart revenue and campaign and journey revenue are all summed and shown in that one currency, so totals across currencies are correct rather than mixed currencies added at face value.
The original order currency and amount are always kept: the Orders list shows each order in the currency it was paid in. Only the reported totals are converted.
Where to set it
Open Settings -> General -> Reporting currency (needs the settings:write
permission). It is set per workspace, because a workspace can be its own
store, or the same store selling in another country. A workspace that never
chose one reports in USD. Only currencies with European Central Bank rates can
be chosen; the card also tells you which currency most of your orders are in.
What happens when you change it
- You confirm the change - it recalculates every past order of the workspace.
- In the background, each past order is converted into the new currency at its own date's rate. The card shows the progress.
- Reports stay entirely in the old currency until every order is converted, then switch to the new one at once. You never see a total that mixes the two.
- A minute or two after the switch, campaign and journey revenue for past orders and the RFM tiers are updated too.
A large store can take a few minutes. Only one change can run at a time; you can change it back later the same way.
Orders without a rate
The European Central Bank publishes rates for about 30 currencies. An order in a currency it does not cover (for example AED or SAR) cannot be converted: it is counted at its original amount rather than dropped, and the settings card lists how many such orders there are.