Skip to content

RFM Analysis

RFM analysis scores your contacts based on three dimensions of engagement: how recently they interacted, how frequently they interact, and how much monetary value they bring. It helps you identify your best customers, spot those at risk of churning, and target each group with the right messaging.


How RFM Scoring Works

Each contact receives three scores on a 1-5 scale:

DimensionWhat it measuresScore 5 (best)Score 1 (worst)
RecencyDays since last eventInteracted very recentlyInactive for a long time
FrequencyNumber of eventsMany interactionsVery few or none
MonetaryValue of engagementHigh value (purchases, clicks)Low or no value

Scores are assigned using quintiles -- your contacts are split into 5 equal groups for each dimension. A contact in the top 20% for frequency gets a score of 5; one in the bottom 20% gets a 1.

Note

If your workspace has fewer than 25 contacts, the engine uses terciles (3 groups) instead of quintiles to avoid overly sparse groupings.


Running an Analysis

To run an RFM analysis, go to Contacts and open the RFM Analysis tab. You need to configure:

Recency Event (optional)

Which event type measures recency. If left blank, all events are considered. For an e-commerce workspace, you might choose purchase so that recency reflects the last purchase date rather than the last page view.

Frequency Event (optional)

Which event type measures frequency. Can be different from the recency event. For example, you might measure recency by purchase but frequency by login to capture active usage.

Monetary Event and Attribute

How to measure monetary value. You have two options:

  1. Custom event attribute -- select an event name (e.g., purchase) and a numeric attribute (e.g., amount). The engine sums this attribute per contact.
  2. Default: email engagement -- if you leave these blank, the engine uses an engagement score based on email opens and clicks (opens + 2 x clicks).

Date Range

How far back to look. The default is 30 days, but you can set any range from 7 to 365 days. A shorter range highlights recent behavior; a longer range captures seasonal patterns.


Reading the Results

After the analysis runs, you see two visualizations:

Heatmap

A 5x5 grid where each cell represents a combination of Recency (rows) and Frequency (columns). The cell color indicates the segment, and the number shows how many contacts fall in that cell.

  • Top-right cells (high R, high F) -- your best contacts
  • Bottom-left cells (low R, low F) -- dormant or hibernating contacts
  • Top-left cells (high R, low F) -- new contacts who have not yet become frequent
  • Bottom-right cells (low R, high F) -- previously active contacts who have gone quiet

Segment Breakdown

A list of 10 named segments with:

  • Contact count and percentage of total
  • Average R, F, and M scores
  • A description of the segment's behavior
  • A suggested action (what kind of campaign to run)

See RFM Segments for a full description of all 10 segments.


Score Boundaries

The analysis response includes the quintile boundaries for each dimension. These show the exact cutoff values that separate each score level. For example, if the recency boundaries are [2.5, 7.0, 15.0, 30.0], then:

  • Score 5: 0-2.5 days since last event
  • Score 4: 2.5-7.0 days
  • Score 3: 7.0-15.0 days
  • Score 2: 15.0-30.0 days
  • Score 1: 30+ days

Caching

RFM analysis results are cached for 6 hours. Running the same analysis (same events, same date range) within that window returns the cached result instantly. The response includes a cached flag and an expires_at timestamp so you know when fresh data will be computed.

Tip

You need at least 5 contacts in your workspace to run an RFM analysis. If you have fewer, the analysis returns an error.


Next Steps