How to build an RFM (Recency, Frequency, Monetary Value) model in Salesforce Marketing Cloud

How to build an RFM (Recency, Frequency, Monetary Value) model in Salesforce Marketing Cloud

What is RFM?

The RFM model is based on a method that is used to analyze customer value. The RFM model is a customer segmentation technique that is enabled by data analysis. 

A primitive form of the RFM model was used about 50 years ago by catalogers of general merchandise. For example, as early as 1961, George Cullinan promoted the use and understanding of RFM customer data analysis.

The term RFM stands for Recency, Frequency, and Monetary Value.  RFM analysis that initially was applied for direct marketing is now commonly used in the e-commerce industry. The general approach to create an RFM model is to collect vast amounts of transactional data in order to segment customers according to their purchase history. This method implies creating smaller segments of customers in order to reach their individual needs.

Why does RFM matter?

So why does RFM matter? Firstly, it is a proven method of personalization.  By creating effective segments of customers, you are able to develop a meaningful and trustworthy relationship with every customer. Secondly, it helps with the customer retention by improving their lifetime value (CLTV). Why is customer retention important? The research shows that companies with 24 months of activity online get 50% of their revenue from returning visitors. 

According to the Salesforce state of marketing report for 2020, one of the top 3 metrics for marketers in retail is customer satisfaction. Moreover, 84% of customers say the experience a company provides is as important as its products and services

In order to align with this metric, marketers need to create unique campaigns that speak with their customers on a personal level.

An RFM example from the field

Using the RFM model segmentation strategy, True Religion (a clothing jeans brand), during their holiday marketing campaign delivered a 275% lift in revenue compared to the same campaign done in the prior year. After seeing the result, the company had reversed the 3-year downward trend of average CLTV in 3 months using the segmentation strategy.

RFM scoring

So how to create an RFM model for your business? As previously mentioned, RFM stands for Recency, Frequency and Monetary value. Those are the key metrics for the RFM model. 

  • Monetary stands for how much money did the customer spend with a company over a defined period of time;
  • Recency means how long has it been since the customer’s last purchase;
  • Frequency how often has the customer made a purchase over a defined period of time.

The first thing that you need to keep in mind is that you need to have the right data to create the segments. In our example, we are creating an RFM model in Salesforce Marketing Cloud (SFMC) using DESelect. That means that all of the data needed, namely purchase history and customers are stored in SFMC. 

The idea of the RFM model is to assign each customer with a set of numbers (scores) that will identify the segment they belong to. The numbers used for customer segments are 1-5. That means that for each metric: Recency, Frequency and Monetary value each customer is assigned with a set of 3 numbers. It is important to note that, when you later use the segment, you do not summarize the scores, but combine them.

How to understand RFM scores?

Every customer gets a three score number, where each point is assigned between 1-5. That means that customers will fall into one of five quintiles. Each quintile represents 20% of the overall customer base. If a customer scores a 1, that means they’re in the bottom 20% of the overall customer base and if they score a 5, that means they’re in the top 20%. As an example, an RFM score of 512 means that this particular customer is in the top 20% of customers in terms of Recency, but in the bottom 20% of customers in terms of Monetary spend. This RFM score demonstrates this is a new customer that has recently made the first purchase.

RFM Segments

Customers that receive RFM scores from segments. There are several most commonly used segments. The potential examples of segments along with their RFM score can be found below:

Sample-Customers-for-Inspiration for RFM in Salesforce Marketing Cloud

How to build an RFM model in Salesforce Marketing Cloud?

1. Figure out what data to use

First off you need to have a clear understanding of what data exists inside of Salesforce Marketing Cloud (SFMC) already. There’s a chance that transactional data can be stored in other places (for instance Salesforce Sales Cloud)  and the customer data in your CRM. That means you would need to bring the data in one place and figure out the frequency of the import of that data. For instance, you may just need a one-time batch import or a daily/weekly automated import. Ensure that the data model is clean (no duplicates) and accurate. 

In this article, we are going to build an RFM model for a physical retailer. We are going to create an RFM model for customers who have a membership at the store in order to create segments. In our example, the data we need is purchase history and customer data. We already have this information in data extensions (DEs) in our SFMC instance.

RFM Model data extensions in Salesforce Marketing Cloud

(overview of DEs in SFMC)

Purchases for RFM data extension in Salesforce Marketing Cloud
Customers for RFM data extension in Salesforce Marketing Cloud

(example DEs used for the RFM model)

2. Segment the audience

After you figured out what data to use, the next step is to segment the audience. You can do it using SQL or with DESelect. Prior to actual segmentation, it is important to set up the data for an RFM model. After that, you can leverage the capabilities of DESelect to create segments for your future campaigns.

For our example RFM model, we have broken down our purchase and client data in five quintiles in order to assign them with the accurate RFM scores in future.  

We are selecting a time frame of one year, where we have identified 5 periods to define the Recency for RFM model. Accordingly, to the above mentioned time frames for Recency Values we can set Recency scores in the following manner:

  • 1 year ago or more – Recency 1; 
  • 9-6 months – Recency 2;
  • 6-3 months – Recency 3;
  • 3-1 months – Recency 4;
  • 1 month or less – Recency 5.

Taking into consideration the time frame (1 year), the number of purchases made by a single customer have been calculated and then divided into five categories to align with Frequency scores. Below you can see categories of how often purchases were made by a single customer along with their frequency scores:

  • 1 purchase – Frequency 1;
  • 1-3 purchases – Frequency 2;
  • 3-5 purchases – Frequency 3;
  • 5-7 purchases – Frequency 4;
  • 7 or more purchases – Frequency 5.

Based on the total  ticket amount of the purchases during the 1 year time frame, the following categories for monetary value have been set up:

  • 100 or less – Monetary 1;
  • 100-200 – Monetary 2;
  • 200-400 – Monetary 3;
  • 400-600 – Monetary 4;
  • 600-800 – Monetary 5.

Once the scores have been divided into categories, each customer has to be assigned with a particular score. At that point, we can leverage DESelect to assign an individual customer with the accurate score. 

How to assign an individual customer with a Recency score in Salesforce Marketing Cloud

When you need to assign each customer with a unique Recency score in Salesforce Marketing Cloud (SFMC), you may follow these steps. Start off, by finding the data extension (DE) that contains purchase information. In our example, it is a ‘Purchases for RFM DE’. There, you can find the latest purchase data. Moreover, this purchase data is connected with individual customers via a customer Id. That means if you connect that DE with the Customers DE, through Customer Id found in both DEs, you will be able to find out when a given customer made the last purchase.

How to assign an individual customer with a Recency score using DESelect?

This video shows how to assign an individual customer with a Recency score using DESelect. Below you can find a written step-by-step guide.

First, we are going to assign every customer with a recency score. In order to do that we start off by creating a new data extension (DE) upfront for that. There we include all the fields that are necessary to be later reused for an actual campaign creation. So we add the fields like Customer Id, First Name, Email Address and Recency Score. Later on, this DE will be populated with the data we get from DESelect.

  1. Then we head off to DESelect, where we create a New Selection.
  2. We start off by giving a name to our selection, for instance Recency Score.
  3. Then, we are renaming New Source 1 to Recency Score 1. New sources in DESelect represent unions, since we need 5 different sources, we are going to create 5 segments under one selection.
  4. We choose the source DEs, namely Customers for RFM and Purchases for RFM.
  5. Then we create a relationship between them, we match them by Customer Id.
  6. Then we drag-and-drop field Purchase Date and choose greater than or equal to 1 year ago.
  7. We move to a target definition where we select our target DE and use automap to populate the fields with the data from the source DE.
  8. After, we need to create a fixed custom field. It’s going to be a numerical field that is assigned with number 1, representing 1 for Recency Score.
  9. Then we drag-and-drop this custom field on the Recency Score field.
  10. Now, we go back to the selection criteria and create a new source and rename it to Recency Source 2.
  11. Repeat the steps 4 and 5 and in the step 6, instead of greater than or equal to 1 year ago, choose smaller than 9 months ago and greater than 6 months ago.
  12. Then move on to the target definition where you need to automap the fields again and create a custom field. This time you assign it with number 2.
  13. Then we go back to the selection criteria and repeat the actions. The idea is to create five segments that will represent how recently customers made their purchase. Below, in the video you can find the full process of assigning every score individually to a customer.
  14.  After five sources and fixed custom values are created, we can move on to a preview.The preview will show that every customer is assigned with a specific Recency Score from 1 to 5. 

How to assign an individual customer with a Frequency score in Salesforce Marketing Cloud?

When you need to assign each customer with the unique Recency score in Salesforce Marketing Cloud (SFMC), you may follow these steps. Start with finding the data extension (DE) that contains purchase information. In our example, it is ‘Purchases for RFM DE’. There you can find the information about an individual purchase made. Each purchase is connected to an individual Customer, that is represented by her Customer Id. The logic behind is to count how many times a customer Id appears in the Purchases DE. This will provide the information on how often an individual customer makes a purchase. Salesforce Marketing Cloud allows you to create SQL queries if you need to segment on the audience, or you can use DESelect’s capabilities to assign a frequency score for every customer.

How to assign an individual customer with a Frequency score using DESelect?

The video below shows how to assign an individual customer with a Frequency score using DESelect.

Here is a step-by-step guide on how to get the result found in the video. Now, we are going to assign every customer with a frequency score. In order to do that we start off by creating a new data extension (DE) upfront for that. There we include all the fields that are necessary to be later reused for an actual campaign creation. So we add the fields like Customer Id, First Name, Email Address and Frequency Score. Later on, this DE will be populated with the data we get from DESelect.

  1. We head off to DESelect, where we create a new selection.
  2. We start off by giving a name to our selection, for instance Frequency Score.
  3. Then, we are renaming New Source 1 to Frequency Score 1. New sources in DESelect represent unions, since we need 5 different sources, we are going to create 5 segments under one selection.
  4. We choose the source DEs, namely Customers for RFM and Purchases for RFM.
  5. Then we create a relationship between them, we match them by a Customer Id.
  6. Then, we choose the field Customer Id from the available fields below from the Purchases DE.
  7. Then we select a filter criteria on in results and drag-and-drop Purchases DE.
  8. Now, we need to create a relationship between Customer Ids.
  9. Next, click on the filter button.
  10. In this step we need to count how many times Customer Id (i.e. individual customer) appeared in Purchases DE, we choose 1 or less times, since we are looking for those customers that will be assigned with a frequency score 1.
  11. Then we move on to the target definition where we find our target DE.
  12. We can use automap to match the fields from the source DE with the target DE
  13. Then we create a fixed custom value, that has to be numerical and assign it with the number 1.
  14. Afterwards, we go back to the selection criteria and create a new source, which we are renaming to a Frequency Score 2. 
  15. We repeat the steps from 4 to 9 and when we filter on Customer Id again we select greater than or equal to 1 and another filter on Customer Id smaller than or equal to 3.
  16. Move on to the target definition and repeat the automap step and create a new fixed custom value that we are going to assign with a number 2.
  17. Then we go back to the selection criteria and repeat the actions. The idea is to create five segments that will represent various numbers of times Customer Id appears in the Purchases DE based on our predefined categories. Below, in the video you can find the full process of assigning every score individually to a customer using DESelect.
  18. After we define five sources and create different values for the target definition we can move on to the preview.
  19. From the video, you can see that every customer has an individual frequency score.

How to assign an individual customer with a Monetary score using DESelect?

When you need to assign each customer with the unique Monetary score in Salesforce Marketing Cloud (SFMC), you may follow these steps. First off, you need to find the data extension (DE) that contains purchase data. There you can find the information on the price or ticket amount as in our example in Purchases for RFM DE. You may see that each ticket amount is connected with an individual purchase that is in turn connected with an individual customer via Customer Id. In order to assign each customer with the accurate monetary value, you need to find out how much the customer has spent over the chosen period of time. To get this information you have to sum the ticket amounts of each customer. You can do that by writing SQL queries or using third party apps like DESelect. 

The video below shows how to assign an individual customer with a Monetary score using DESelect.

How to assign an individual customer with a Monetary score using DESelect?

Here is a step-by-step guide on how to get the result found in the video. Now, we are going to assign every customer with a monetary score. In order to do that we start off by creating a new data extension (DE) upfront for that. There we include all the fields that are necessary to be later reused for actual campaign creation. So we add fields like Customer Id, First Name, Email Address and Monetary Score. Later on, this DE will be populated with the data we get from DESelect.

  1. We head off to DESelect, where we create a new selection.
  2. We start off by giving a name to our selection, for instance Monetary Score (or Value as in our example).
  3. Then, we are renaming a New Source 1 to a Monetary Score 1. New sources in DESelect represent unions, since we need 5 different sources, we are going to create 5 segments under one selection.
  4. We choose the source DEs, namely Customers for RFM and Purchases for RFM.
  5. Then we create a relationship between them, we match them by Customer Id found in both DEs.
  6. Then, we choose a field Customer Id from the available fields below from a Purchases DE.
  7. Then we select a filter criteria on In Results and drag-and-drop the Purchases DE.
  8. Now, we need to create a relationship between Customer Ids.
  9. Next, click on the filter button.
  10. Then we select the field Ticket Amount and then click on the formula button where we choose Sum. Sum will add up the values for the Ticket Amount in Purchases DE.
  11.  We choose smaller than or equal to 100.
  12. Then we move on to the target definition, where we select our target DE.
  13. We automap the fields from our source DE and click on to create a custom field.
  14. We create a fixed numerical custom field named Monetary Score and assign it with number 1.
  15. We drag-and-drop our custom field to the Monetary Score field in our target DE.
  16. After that we go back to the selection criteria and create a new source that we are going to call Monetary Score 2.
  17. Repeat the steps from 4 to 9, but now in the filter criteria select greater than or equal to 100 and smaller than or equal to 200.
  18. Move on to the target definition, where you can automap the fields from the source DEs and click on create a custom value.
  19. Create a fixed numerical custom value and assign it with number 2.
  20. Then we go back to the selection criteria and repeat the actions. The idea is to create five segments that will represent the ticket amounts of every customer based on our predefined categories. Below, in the video you can find the full process of assigning every score individually to a customer.
  21. After five sources were defined and the different values were created for target definition we can move on to the preview.
  22. From the video, you can see that every customer has an individual monetary score.

How to use your RFM score in Salesforce Marketing Cloud?

After the scores are assigned to every customer, you can divide them into different segments. Then, you can send personalized email campaigns to these segments. As an example, we are going to focus on one segment in our article. We would like to target the Cannot Lose customers. These are customers that were quite active in the past, made some purchases, but haven’t made any new purchases lately. Normally this segment is represented by the RFM score of 155 or 245. 

After identifying this segment we are going to send them a so-called win-back campaign. The goal of the win-back campaign is to incite a purchase.

How to identify RFM segments using DESelect?

In DESelect, you can easily identify the right RFM segment for your future campaigns.  The process will take you literally one minute. Sounds too good to be true? Follow our segmentation example and check for yourself. 

In our example we are going to identify the cannot lose customers, whose RFM score is 155. Later on, we can target them with a win-back email campaign.

Watch the video below to see how easily it is to identify the RFM segment using DESelect.

Here is a step-by-step guide of how you can identify the RFM segment in DESelect:

  • You start off by giving a name to your selection, for instance, “Cannot Lose customers”.
  • Then you need to choose the source data extensions (DEs).
  • We are going to use the DEs we have just created in the previous steps. So we select a Recency and Frequency Score DEs and connect them by a customer Id field. Then we connect a Monetary DE with the Recency DE by the customer Id as well.
  • Then we are going to filter on the fields from these DEs. As mentioned, the Cannot Lose segment can be identified by an RFM Score of 155.
  • We drag-and-drop a field Recency Score and choose equals 1.
  • Then we take a Frequency Score and choose equals 5.
  • Then we take a Monetary Score and choose equals 5.
  • Next, move on to the target definition and create a target DE in DESelect.
  • Drag-and-drop fields from the source DEs. In our example, we need a Customer Id, a First Name and an Email Address.
  • After that run preview.

How can the RFM model help in your segmentation?

In this article we showed how to leverage your data with an RFM model in Salesforce Marketing Cloud using DESelect. The RFM model helps to identify the needs of a single customer by dividing them into seizable segments. Marketers benefit from this method since it’s a rather simple method of scoring the customers, there’s no need to ask for the help from the more technical or data savvy colleagues. Eventually, the result that you get is easy to interpret and analyze. At the same time the output is yet informative and presents a high-level profiling of customers. 

Want to see how easy it is to create an RFM model for your company? Book a demo with DESelect and find out how.

Latest Articles

Join our newsletter to receive updates and helpful SFMC guides.

Reach the most targeted<br/> audiences in half the time

Reach the most targeted
audiences in half the time

Deselect icon
Subscribe to the Newsletter
Receive Salesforce Marketing Cloud tips,
tricks, and DESelect updates

By clicking the “Subscribe now” button, you agree to the DESelect Terms of Use and Privacy Policy.