Skip to main content

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:

MetricDescription
CustomersCustomers with an RFM score, and how many of the eleven segments they're spread across
Total valueLifetime revenue of those customers
Value per customerTotal value divided by customers
Empty segmentsSegments 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:

ColumnDescription
SegmentName, 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
CustomersCount, share of all scored customers, and a bar
Total valueRevenue from the segment, its share of total revenue, and a bar
Avg valueRevenue per customer in that segment
Recommended actionWhat 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​

SegmentColorDescriptionAction
ChampionsGreenBest customers - highest frequency and spendReward loyalty, early access
LoyalBlueConsistent customers with good engagementUpsell, referral programs
Potential LoyalistsPurpleRecent customers, average frequencyIncrease frequency, loyalty programs

Growing Segments​

SegmentColorDescriptionAction
New CustomersCyanRecently made first purchaseWelcome series, onboarding
PromisingTealRecent but low frequency so farEncourage second purchase

At-Risk Segments​

SegmentColorDescriptionAction
Needs AttentionYellowDeclining engagementWin-back campaigns
About to SleepOrangeAt risk of becoming inactiveUrgency offers, re-engagement
At RiskRedWere loyal, now inactiveSpecial offers, feedback
Can't LoseDark RedWere best customers, now inactivePersonal outreach, VIP offers

Inactive Segments​

SegmentColorDescriptionAction
HibernatingGrayLong-term inactiveDeep discount, final attempt
LostDark GrayLikely churnedSurvey, remove from lists

Using RFM for Marketing​

Create Targeted Campaigns​

  1. Go to Campaigns or Canvas
  2. Create a new campaign/flow
  3. Use segment filters to target specific RFM segments
  4. 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​

  1. Monitor segment changes: Track how customers move between segments
  2. Set up automated flows: Create Canvas journeys for each segment
  3. Personalize by segment: Different segments need different approaches
  4. Calculate segment LTV: Understand the lifetime value of each segment
  5. 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:

SegmentRFMIn plain terms
Champions4–54–54–5Bought recently, buy often, spend the most
Loyal3–43–53–5Solid regulars - the reliable core
Potential Loyalists3–42–32–4Recent buyers building a habit
New Customers4–51–21–2Just arrived - first purchase(s)
Promising3–41–21–4Recent, few orders, worth nurturing
Needs Attention2–31–31–3Mid-value and cooling off
About to Sleep1–21–31–2Fading - act before they're gone
At Risk1–23–41–4Used to buy often, gone quiet
Can't Lose Them1–24–52–5Your best customers, gone quiet - highest-stakes win-back
Hibernating1–21–31–3Long inactive, low value
Lost111Fully 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):

TierTotal spent
Bronzeunder 50
Silver50–199
Gold200–499
Platinum500–999
VIP1000+

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​

  1. You confirm the change - it recalculates every past order of the workspace.
  2. In the background, each past order is converted into the new currency at its own date's rate. The card shows the progress.
  3. 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.
  4. 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.

Next Steps​