RFM Segmentation

What to Expect From This Use Case

RFM Segmentation visualizes value trends in your customer base with an automated dashboard. It includes a best-practice RFM segmentation to segment and trigger marketing campaigns to drive Customer Loyalty and Revenue Per Visitor. RFM segmentation helps to distinguish where your revenue comes from and which customers are your core audience. By segmenting your customer base according to the RFM factors (Recency, Frequency, Monetary), you’ll get a holistic overview, which allows for better targeting of campaigns at customers based on how loyal they are to the brand and hence increase upsell, RVP and other essential metrics.



Visit our microsite to read more about this and other use cases developed by a team of Bloomreach experts.

Use Case Items

With this use case, you’ll get a:

  • Ready-to-use RFM scenario
  • Pre-defined evaluation dashboard

How to deploy the Use Case

After downloading the use case, follow these steps:

Step 1: Meet the Requirements

Verify if the data in your project meets the requirements. Follow this step-by-step setup guide in case of problems.

Step 2: Understand the Use Case Logic

All customers with at least one purchase are segmented based on the Recency, Frequency, and Monetary value of their purchases. The RFM segmentation allows for better targeting of campaigns based on how loyal the customers are to the brand and hence increases upsell, CLTV, and RVP.

The scenario runs 2 times per month for all customers with at least one purchase. The 'Initial flow' ensures the first data load on all customers, and the 'Repeat flow' tracks incremental changes.

The RFM segment is tracked under customer property rfm_segment. If the customer changed the segment, the previous value would be tracked under the customer property previous_rfm_segment allowing us to see the movements between segments.

Going more in-depth, the Initial flow assigns recency_score, frequency_score, and monetary_score as customer properties based on their positioning in recency, frequency, and monetary reports per the Jinja below.

Based on the individual scores, a rfm_score is populated, where the ~ operator joins the neighboring scores as strings and concatenates (e.g., recency_score = 3, frequency_score = 2, monetary_score = 1 -> rfm_score = 321).

Once these values are populated, a relevant customer segment (rfm_segment) is assigned to a customer based on the RFM group; see the values checking customer profiles.

How does the scenario calculate the segments?

The scenario turns the recency, frequency, and monetary aggregates and transforms them into customer properties, which can be seen in a report for each. The segments are then determined from these values using the following table.



By default, the RFM scenario runs every month to ensure the RFM segmentation is up to date with the recent changes in your customer base. However, feel free to adjust the repeat trigger node to more closely match your requirements (e.g. repeat daily) if you wish to have most up-to-date information.

Step 3: Run the Use Case

When you open the scenario, connect both trigger nodes with the first condition node and click the Start button in the upper right corner to launch the campaign.



If you got here, you have successfully deployed this use case.

Step 4: Evaluation

The prebuilt and ready-to-use evaluation dashboard is included explicitly in this use case to measure and analyze relevant data.

Key metrics calculations

Customers that made a purchase where the following conditions are matched:

  • purchase_status = success
  • total_price > 0
  • CLTV is calculated from the total_price attribute of the purchase event

The RFM segmentation works by dividing the customers based on their Recency, Frequency, and Monetary (RFM) scores. It does so in relative terms, creating percentual parts of your customer base. Through this, you will be able to see how different customers fall within different R F M values, and these then get calculated into overall RFM segments. The segmentation can be used for marketing campaigns to drive Customer Loyalty and RPV.



Find more information and related action steps regarding different segments of your customers calculated based on the RFM score in the RFM Dashboard.

Known limitations

This is a dynamic RFM Use Case. This means the RFM segments are updated monthly based on your customer base dynamics.

Dynamic RFM is editable; however, for all intents and purposes, it's designed as a "ready-to-use" black-box tool. It's built as a best-practice use case. It automatically slices your customer base into quantiles and automatically assigns the segments for each customer based on these quantiles.



Dynamic RFM is editable but due to its design, it is NOT easy to make changes on these assignments.

Step 5: Enhance your scenario

Include other key metrics that the client business is evaluating regularly and put them into perspective of the various CLV groups.

Step 6: For advanced users

As mentioned above, Dynamic RFM is editable but due to its design, it is NOT easy to make changes on these assignments.

If you want to make changes; you need to understand:

  1. How the portfolio is sliced in the Recency Report, Frequency Report and Monetary Report; all of which can be found in this use case's initiative folder.
  2. How each customer's recency, frequency and lifetime value is calculated via Recency Aggregate, Frequency Aggregate and Monetary Aggregate; all of which can be found in this use case's initiative folder.
  3. How the webhook automates the numeric assignments to each customer's aggregate in relation to their position within the reports (the webhook scenario can be found in this use case's initiative folder with the name "RFM Scenario").
  4. How the numeric assignments are used to assign the final RFM segment via the segmentation asset called "RFM", which can be found in this use case's initiative folder.


To compare your reports more efficiently, you can set the maximum/minimum limits for both primary and secondary axes. For more detailed information, see the documentation.

Observe movements in the segments in RFM Segments - Bloomreach segmentation.

The values in this segment are calculated from an expression, which pulls out values from yet another segmentation. These segmentations contain a dynamic condition - e.g., recency aggregate (value on a customer profile) is less than r_score_2_threshold, a customer attribute pulled from a recency report.

The threshold values can change over time based on the customer base purchase behavior. Usually, they would be a static value in a report, but given that these customer attributes are populated with every scenario run, it's done automatically.

Once you collect enough data, you can observe the segment movements in different time frames over time.