RFM Analysis

Control your users' engagement and automate retention


RFM (Recency, Frequency, Monetary) analysis helps visually represent your contact base quality and engagement.
eSputnik provides two 2 RFM graphs: based on data on email engagement and data on sales.

Actions that you can perform with RFM segments:

  • exporting to list;
  • deleting from the account;
  • creating an event at moving between segments that can trigger a workflow.

Interpretation of the Graph Data

RFM analysis is a component of contact analytics in eSputnik.

Data on email engagement and sales are divided into Campaigns and Sales tabs.

In the Campaigns tab, segments are formed according to the number of opens and the last open time.

In the Sales tab, segments are formed according to the number of sales and the amount of time (set up transferring sales data via API eSputnik to see its RFM analysis).

Calculations are made along the R and F axes:

  • R is the time of the last opening/sale.

By default, the parameters are set from two weeks to >1 year.

  • F is the number of opens/sales.

In the table with sales analysis, the bottom line (0-1) contains contacts who have not made purchases (x>=0 and x<1), the second (1-2) includes contacts who have made one purchase (x>=1 and x <2), etc.

Sales analysis



You can order a custom display of the sales graph:

  • increase the period and number of sales on the graph,
  • add or remove period columns and Number of sales fields,
  • set display at any time intervals.

Leave a custom display request at [email protected].

The segments are colored depending on the activity of the contacts:

  • Gray — no reads/sales.
  • Red — segments at risk of loss. The more saturated the color, the more passive the contacts in the segment.
  • Green — loyal customers. The more saturated the color, the higher the loyalty of the segment.

The top row contains contacts that showed maximum activity. Contacts that can be considered lost are at the bottom left.

Data Filtering and Actions with Segments

The filter by contact activity in campaigns has the following options:

  • All contacts
  • Sent within 30 days
  • Sent within 90 days
  • Ever sent

The filter by segment allows you to see RFM analysis of any contact list in your account.

Click on any cell to remove contacts from it or export them to a static segment.

You can select or create an event triggered when contacts move from one cell to another (for example, from active to inactive) by clicking the Add event button.

The cell, the transition from which triggers the event, is marked with an eye icon.

Setting Up Trigger Campaigns at Moving Between RFM Segments

You can configure automatic workflows for each RFM segment.

For example, you want to send an email with a special offer to customers who are moving into the risk zone — from the segment of those who bought 3 months ago to those who made purchases 6 months ago.

The settings algorithm will be as follows:

  1. Add an event to the transition between segments as described above.

  2. Create a workflow (Building and editing workflows).

  1. After saving the workflow, set the event you created as the start condition.

Every time a contact moves between the segments you specified, they will receive messages from the workflow. It can be an offer with a unique promo code, a special discount, a survey about the quality of service, etc.

You can use such workflows not only to reactivate customers but also to accrue bonuses. In this case, pay attention to the transitions in the green cells. Attach workflows to them to notify the user about the number of bonuses in their account and how much they need to move to a new level.

Another workflow example is to notify the manager about the contact transition from the green to the red segment. The workflow will look like this:

In the parameters of the Email block, specify the message and email address of the manager who should receive it:

The Get contact block will substitute data instead of variables in the email template:

Use the velocity expression $!data.get('X'), where X is the field with the value to pass to the manager. You can see the names of the variables in the Merge tags section of the message editor:

All additional fields that are in your account are collected here. Copy only the name without special symbols. E. g., convert %FIRSTNAME|% to $!data.get('FIRSTNAME').

See more information about setting up workflows at the link.