Customer Segmentation using RFM Analysis | Zoho Analytics

Customer Segmentation using RFM Analysis | Zoho Analytics

How well do you know your customers? Whether you operate in a B2B or B2C space, chances are that 80% of your business comes from just 20% of your customers (Pareto's Principle). According to a study by Forbes, acquiring new customers costs five times more than retaining the existing ones. Identifying high-value customers is crucial to increase revenue and building brand loyalty.

Customer Segmentation is a critical strategy for businesses to understand and engage with customers effectively. Understanding the behavioral patterns of customers can help personalize the purchases they make and cater to their needs better. 

Questions like who are the customers who contribute more to sales, who are the customers about to churn, will help digital marketers understand the behavioral patterns of their customers. 

While there are many criteria based on which the customer base can be segmented, this solution focuses on segmenting customers based on the RFM analysis.

What is RFM Analysis?

RFM analysis (Recency, Frequency and Monetary) is a method used to identify and segment existing customers based on their purchasing behavior.  The key metrics of RFM analysis include

Recency

Recency refers to how recently a customer has made their purchase and this is the most important metric of the other metrics. This metric is a strong indicator of customer loyalty and interest.

Frequency

Frequency refers to how often a customer makes purchases or interacts with a business within a specific period. It measures the level of engagement and loyalty of a customer.

Monetary

Monetary value refers to the total amount of money a customer has spent with a business during a specific period. 




Industry-Specific Applications of RFM Analysis

  • SaaS and subscription services: RFM analysis can be adapted for SaaS and subscription services to segment users based on engagement, renewals, and revenue contribution.
  • Financial Sector: RFM analysis can improve credit scoring and risk assessment by evaluating customer transaction patterns, helping financial institutions make more informed loan approval decisions.

Data Requirements

For RFM analysis, you'll need a transactional dataset with the following equivalent columns (details) 
  • A product (Product ID)
  • A related transaction (Transaction ID)
  • Number of products purchased in a transaction (Product Quantity)
  • The product purchase price (Product Price)
  • Transaction date (Date)
  • Customer who made the purchase (Customer ID, Customer Name)
We have used a sample table of e-commerce data for illustration.

Steps for Implementing RFM analysis

1. Gather and Prepare Transaction Data : 

Gather all transaction data, ensuring it includes customer identifiers, transaction dates, and monetary amounts, and address missing or inconsistent values, ensuring data integrity before analysis.

2. Compute RFM Metrics: 

To segment customers based on their behavior, we compute three key metrics: Recency (R), Frequency (F), and Monetary Value (M). Below are SQL queries for each, along with detailed explanations.

Recency (R)

Recency measures how recently a customer made a purchase. It is calculated as the number of days since their last transaction. Customers with recent purchases are more engaged, while those who haven’t bought in a long time may be at risk of churn.

The time frame for RFM analysis should be tailored to your business model and industry. Choosing the right period for RFM analysis is essential, as it directly influences the accuracy of customer segmentation and the quality of insights derived.

Frequency (F)

Frequency tracks how often a customer makes purchases within a specific period. A higher frequency indicates a loyal customer who regularly shops, while a lower frequency suggests occasional or one-time buyers.

Monetary Value (M)

The total amount spent by the customer in the same period

RFM Query Table

SELECT
"Customer ID",
"Customer Name",
DAYS_BETWEEN(MAX("Transaction Date"), CURRENT_DATE()) AS "Recency",
COUNT ("Order ID") AS "Frequency",
SUM("Transaction Amount") AS "Monetary Value"
FROM  "Customer Data" 
GROUP BY "Customer ID",
  "Customer Name" 
ORDER BY "Recency" ASC,
  "Frequency" DESC,
"Monetary Value" DESC 



3. Segment Customers using Cluster Analysis

Manual scoring can skew the results and may not be practical for handling large volumes of data. In contrast, using machine learning algorithms like cluster analysis ensures unbiased, efficient, and data-driven segmentation. Unlike traditional scoring methods such as the quantile or percentile-based approach, cluster analysis recognizes inherent relationships and patterns in the data. With cluster analysis, business can obtain accurate segmentation and devise targeted strategies to improve sales and customer retention.

Follow the below steps to apply cluster analysis,
  1. Click the Create New icon and choose New chart from the drop-down menu.
  2. Add the columns to the chart shelf as shown below,
    1. X-axis: Customer Name
    2. Y-axis: Monetary Value with Sum function.
  3. Click Generate Graph and change the chart type to bar chart.

  4. Click the Analysis icon and select Cluster Analysis > Add Clusters.
  5. The Model is chosen automatically based on the columns dropped in the shelves.
  6. By default, the columns dropped in the shelves (Monetary Value) are selected as factors. Click the drop-down icon to include Recency and Frequency columns as factors.

  7. The number of clusters is determined automatically but can be adjusted based on business needs and specific customer segmentation goals to ensure optimal categorization.
  8. Choose the Normalization method to prevent values of high ranges from dominating the results. For instance, Recency (measured in days) and Monetary Value (measured in currency) have different scales, and normalization ensures a balanced contribution from each metric.
  9. Click Apply.

4. Export Clusters Data

Once the customer profiles have been segmented using cluster analysis, Export the Current view in the preferred table format to build more data visualizations to understand the clusters.


Build an RFM Analysis Dashboard

The RFM analysis dashboard provides a comprehensive view of customer behavior. Let's look at the steps involved in building this dashboard.

1. Import the Clusters Data

Import the downloaded clusters table back into Zoho Analytics using the files option as given below.
  1. Click the New icon on the side navigation panel and choose New Table/ Import Data.
  2. Select files and choose the Clusters Table to import and click Next.
  3. A data preview will be displayed; verify the data types of columns and click Create.

2. Create Reports to Understand the Characteristics of the Clusters

While the data is clustered, understanding the characteristics of each cluster is what enables businesses to take strategic actions. This includes identifying which customers need targeted marketing, personalized engagement, or retention efforts. Recognizing patterns within clusters provides insights into customer behavior, which is essential for optimizing marketing campaigns, improving retention strategies, and enhancing customer experience.
The below reports help understand the distribution of customers across different monetary value, recency and frequency segments within each cluster.

Clusters vs Monetary Value 

  1. Access the cluster table (imported data) and click the new icon > chart view.
  2. Drag and drop the columns as given below:
    1. X-axis - Clusters
    2. Y-axis - Monetary Value with the Count function.
    3. Color - Monetary Value with the Actual Range function.

Analyzing the chart, we can infer that,
  • Cluster 1 consists of a diverse group of customers spanning all spending levels.
  • Cluster 2 includes moderate to high spenders who contribute significantly to revenue.
  • Cluster 3 comprises low to mid-range spenders, often occasional buyers.
  • Cluster 4 represents high-value customers with premium spending habits.
  • Cluster 5 consists primarily of low spenders with minimal purchasing activity.
You can similarly create reports to know about the distribution of customers for the Recency and Frequency metrics.

The below table lists the characteristics of clusters

Cluster
Cluster Classification
Recency
Frequency
Monetary
Recommended actions
Cluster 1
Needs Attention
100 to 150 days
Low to Moderate 
 Diverse spending
Re-engagement campaigns, discounts, or reminders to encourage repeat purchases.
Cluster 2
Loyalist
0-50 (Highly Active)
High
Consistent moderate-to-high spenders
Loyalty programs, exclusive deals, early access to new products to maintain engagement.
Cluster 3
Potential Loyalist
0-50 (Active)
Low to Moderate  Budget-conscious, occasional buyers Cross-selling, personalized recommendations, and value-based promotions.
Cluster 4
Champions
100-150 (Inactive)
Moderate to High (Frequent buyers)
High spenders
VIP experiences, personalized services, and premium offers to retain and enhance their spending.
Cluster 5
Hibernating
Mostly inactive or infrequent
Low
Minimal spending
Win-back campaigns, incentives, special discounts, and targeted ads to regain interest.


Based on the above table, you can give specific labels to the clusters using the bucket columns option.

RFM Dashboard


Limitations & Considerations of RFM Analysis

While RFM analysis is a powerful customer segmentation tool, businesses should be aware of certain limitations and factors that can influence results:

  • Data Freshness and Relevance: RFM analysis relies on transactional data, making the freshness and relevance of this data crucial for accurate customer segmentation. Setting up automated data imports ensures real-time updates, reducing the risk of working with stale data.
  • Seasonal Variations: Customer purchasing behavior often fluctuates due to seasonal trends, holidays, and industry-specific cycles, which can impact RFM scores and lead to misleading segmentation if not accounted for properly. Instead of analyzing only recent months, compare customer behavior for the same period in previous years to detect true engagement patterns.
    • Sticky Posts

    • [Webinar] Why AI Must Stand on the Solid Foundation of Analytics & Business Intelligence

      Are you prepared for the age of AI? Organizations that have a solid foundation in analytics and business intelligence will be in a better position to harness GenAI, agentic apps, and intelligent automation. Join Doug Henschen and Mike Ni, VPs and Principal
    • Create and save user-specific filter views with Zoho Sheet

      The filters in Zoho Sheet have become even more collaboration-friendly. Previously, whenever you filtered any data, the filtered view will be updated for all the spreadsheet collaborators. This disturbed the data for others working on the same file. With this new update, you can apply data filters without altering the view for other collaborators in the file.   Collaborate with user specific filters   Let us say you are working on a sales report spreadsheet in real time with two remote colleagues. If
    • [UI Update] Mandating New UI for all Zoho Analytics Users

      Dear Users, We’re pleased to share that the new and improved Zoho Analytics 6.0 user interface has already been embraced by many users, delivering a faster, cleaner, and more efficient experience. For the Zoho Analytics users who are still using the old
    • Customer Segmentation using RFM Analysis

      How well do you know your customers? Whether you operate in a B2B or B2C space, chances are that 80% of your business comes from just 20% of your customers (Pareto's Principle). According to a study by Forbes, acquiring new customers costs five times
    • What's New in Zoho Analytics - March 2025

      Hello Users, We're back with the latest set of enhancements and improvements aimed at improving your analytics experience. Common Query Table Expression (CTE) support in Query Tables We’ve added support for Common Table Expressions (CTE) in Query Tables,
      • Recent Topics

      • Zoho Projects Roadshow, Australia & New Zealand - 2025

        Dear Users, We are happy to announce the Zoho Projects Roadshows 2025 in Melbourne & Auckland. Our team will discuss industry specific solutions as well as help network with other participants. If you are an existing user of Zoho CRM, Zoho Books, or Zoho
      • Filter lookup field using client script

        Hi, I used client scipt to filter a lookup field- the trigger is on detail page onload. It works, however sometimes when I start typing in that field the filter is removed and the whole list is shown. What can I do so that should not happen? Thanks
      • Múltiple Deals when converting a Lead

        Hello!!! I hope someone can help me figure out the best way to handle this scenario. I have a multi-select field named “Service” in the Leads module that captures either Service A, Service B, or both. When converting a lead, Zoho CRM currently creates
      • Zoho Campaign initial Setup

        Clarification on Contact Consent for Email Campaigns in Zoho Campaigns I’m currently setting up an email marketing campaign for my organization using Zoho Campaigns, and while going through the process, I came across the requirement of having contact
      • Create custom rollup summary fields in Zoho CRM

        Hello everyone, In Zoho CRM, rollup summary fields have been essential tools for summarizing data across related records and enabling users to gain quick insights without having to jump across modules. Previously, only predefined summary functions were
      • Zoho Sprints Integration with Zoho Desk

        Hi Team, I'm trying to integrate Zoho Desk with Zoho Sprints, but it's showing the message, "There are no teams available in Zoho Sprints. You don't have any teams! Click here to add." What should I do next to ensure a smooth integration?
      • Zoho CRM in Microsoft Power Automate Custom Data Connector

        Hello, I have set up a custom data connector in Microsoft Power Automate. It is a connector to retrieve Zoho CRM data. I am pretty certain that I have entered the OAuth 2.0 authentication information correctly. However when I test the Get request https://zohoapis.com/crm/v2/leads.
      • CRM API Search Record for Last Name equals "."

        When using the CRM API to look for all contacts with a lastname = "." The API returns an Invalid Query Reponse I have tried (Last_Name:equals:.) (Last_Name:equals:%5C.) (Last_Name:equals:\.) We have a scenario where the Last Name may not be known for
      • Announcing Early Access to "Zoho CRM for Everyone" — A new and exciting update to Zoho CRM

        We are delighted to announce an Early Access to Zoho CRM for Everyone— a truly democratic approach to managing a CRM, gift-wrapped in an exciting and intuitive user interface. Here, multiple teams across an organization can coordinate among each other
      • Layout Rules Based on Task Owner

        We are managing our entire workflow on Zoho Projects From Deal to Shipment to Receiving Payment Now there is one thing that I would like to the ability is to Show or Hide different fields based on Task Owner For example for Shipment Tasks I would like
      • Critical Feature Gaps Between Zoho Books and Zoho Finance Module in CRM

        We are extensively using Zoho Finance Module in our organization because of The Record Sharing feature provided by CRM something thats not possible in Books, we are able to limit what Sales Orders, Purchase Orders, Estimates an employee can see based
      • How to see exact clicked links in CRM from Zoho Campaigns ?

        Hi, I'm wondering how I can see the clicked links from an email sent from Campaigns when I'm in a campaign in the CRM module. I can see the number of clicks but I need the sales team to be able to see which link has been clicked by a prospect or contact.
      • Important: Changes to Microsoft (Outlook) Bulk Email Sending

        Dear Marketers, We want to bring your attention to an important upcoming change announced by Microsoft (Outlook) that will impact users sending bulk emails to Outlook.com, Hotmail.com, and other Microsoft-hosted inboxes. This update focuses on strengthening
      • Random Email Missing for specific domians

        Our mail service randomly fails to receive emails. When certain domains proactively send emails, our sales team reports that they haven’t received those messages from clients. This creates a financial risk for us in certain cases. We’ve already submitted
      • If Problema Formula

        Ceil(Datecomp(${Seguimiento de Venta.Fecha de la proxima visita},Now())/1440) Tengo porblema al plantear el If Quiero que si el valor es dega
      • Auto-Generate & Update Asset Serial Numbers using a custom function (Assets Module)

        Hello Team, I’ve been working on a script to automate one of our processes in Zoho FSM, and the core functionality has been successfully implemented. However, I’m encountering an issue related to serial number allocation, which is not working as expected.
      • Important: Microsoft Outlook Bulk Email Updates

        Dear Marketers, We want to bring your attention to an important upcoming change announced by Microsoft (Outlook) that will impact users sending bulk emails to Outlook.com, Hotmail.com, and other Microsoft-hosted inboxes. This update focuses on strengthening
      • Important: Changes to Microsoft (Outlook) Bulk Email Sending

        Dear Marketers, We want to bring your attention to an important upcoming change announced by Microsoft (Outlook) that will impact users sending bulk emails to Outlook.com, Hotmail.com, and other Microsoft-hosted inboxes. This update focuses on strengthening
      • Citations Problem

        I'm having an odd problem with the "Add Citations" feature of Zoho Writer. When I add a citation using the "Fetch website details online" feature it works the first time I use it but if I try it a second time by clicking that link nothing at all happens
      • Currency Field Does Not show commas upon entry - leading to inaccurate entries!

        Hello Zoho.. When our sales reps are entering deals and the profit/revenue it is difficult to accurately enter numbers with lots of zeros when there commas are NOT added until the record is saved. Could commas be added to this filed type as it is being
      • Como puedo mover un prospecto "Cliente" de modulo

        Tengo un modulo llamado Seguimiento de Ventaa y otro llamado Cierre de Venta. Que cuando se marca como venta efectiva o venta no efectiva, pase a Cierre de Venta, Esto sin duplicarlo "Que esten en ambos modulos" ,Como esta en una base de datos "Excel"
      • Zoho Projects Work Hours into Analytics

        Since the most recent update, my Analytics reports that were comparing Zoho Projects Work Hours (estimate) against Timesheet Hours are gone.  They were actually deleted.  When I try to recreate them in Analytics there is no "Work Hours" field.  Where
      • Instant Sync of Zoho CRM Data?

        With how valuable Zoho Analytics is to actually creating data driven dashboards/reports, we are surprised that there is no instant or near instant sync between Zoho CRM and Zoho Analytics. Waiting 3 hours is okay for most of our reports, but there are
      • Enrich your CRM data and keep them updated

        You spend a lot of your time and efforts in generating quality leads for your business. While generating leads is a challenge in itself, the real deal begins when sales reps try to nurture these leads and convert them as customers. So how equipped is your sales team with information about your leads matters a lot.  For example, you might be using webforms to generate leads and collect customer information from your website. The lesser your webform fields are, the more your sign-ups right? From optimizing
      • Quick Books to Zoho Analytics integration issue

        We have observed that few transactions are not flowing from Quick Books to Zoho Analytics when we integrate. There is no specific pattern observed. For Ex: In an accrual transaction a row is created for both Credit & Debit but for either of one row the
      • Zoho Sign & Analytics

        Hi, Is it possible to import data from Sign into Analytics?
      • Zoho Not Receiving Emails Sent via PHP mail() – Arrives at Gmail/Outlook, but Not Zoho

        I have a PHP script on my website that sends emails using the basic mail() function — not SMTP or wp_mail() from WordPress. The email sends successfully to other addresses I own (like Gmail and Outlook), but emails sent to my Zoho-hosted address are never
      • Currency column showing $ symbol

        Hello, I'm importing data from Zoho Projects to Zoho Analytics and I was wondering why "Budget amount" column is set in dollars even if the "Currency" column = EUR: Is there a way to get the budget amount as "EUR" + nnnnnn? Thank you
      • Record Locking for Meetings CRM

        How can I lock meetings module in CRM? For other modules I can use Record Locking or Client Script, to lock some fields But for Meetings Client Script and Record Locking are both absent We have a problem, where employees are able to change meeting time
      • How to get the Logo

        Hii Can you please Help me the how to get the Company Setting Photo using the Deluge I will Write this Code But here Will Fetch the Photo_id but We needed the image curl1= "https://www.zohoapis.eu/crm/v7/org"; info curl1 ; getTemplate1 = invokeurl [ url
      • Create Funnel to Track Email Outreach Conversion

        Hello, We would like to create a funnel that measures: N° of emails sent -> N° of emails opened -> N° of emails responded We would like to measure this email response conversion rate for each of our SDRs. We use the analytics tool of Zoho CRM and not
      • Zoho CRM - Analytics: How Can I Set Monday as First Day of The Week?

        Hello, In the analytics section of our Zoho CRM (not Zoho Analytics), we would like to track our SDRs' outreach activity. However, it appears that Zoho CRM treats Sunday as the first day of the week for the "This Week" and "Previous Week" filters. How
      • Data Model - CRM Adjusting size of Entity boxes

        (Sorry if duplicate, previous post seems to have disappeared.) I am viewing the Data Model for CRM, and while it is great to see such a model, there is an obstacle. Many of the entities show only a subset of their fields. The entity boxes have scrollbars
      • The Status in Zoho Finance is inaccurate

        We have many overdue invoices, but when we try to filter it by Status Overdue in the Zoho Finance Module it shows it as none This is also creating a problem when I need to Create a Chart or KPI for overdue Invoices If I open the Invoice I can see the
      • Zoho API integration - missing tables even after using MODULES.READ scope across all modules

        I tried to connect Zoho CRM to my Airbyte connector. I used clientid, client secret and the refresh token to do so. All I see is 77 tables available after connector. I miss few tables like lead agreement deal contact Can you please let me know, what scope
      • In Zoho CRM, is it possible to transition from Approach 1 to Approach 3 based on the contract End Date? automatically

        In Zoho CRM, is it possible to transition from Approach 1 to Approach 3 based on the contract End Date? I have one issue between Approach 1 to Approach 3 there is another transition Approach 2 Iam faceing the issue if use the blue print API means i able
      • subscribe email list for offer and updates is not working for zoho commerce

        my subscribing to email list is not working for offers and updates for my ecommerce website soignee it is saying please wait can anyone tell me the reason for this
      • "In Zoho CRM, during the Blueprint transition to the QC stage, I want to make the 'Packing Proof' image field mandatory."

        @Dr Saurabh Joshi @Haiku Technical Support @Ishwarya SG @Sparrow Hill President @Hugh Marshall "In Zoho CRM, during the Blueprint transition to the QC stage, I want to make the 'Packing Proof' image field mandatory."
      • Can Zoho CRM Emails be used in Zoho Analytics in any capacity?

        We're wanting to display details about Lead Activity in regular reports through Zoho Analytics but we're having difficulty integrating Emails at all. We'd like to be able to note when an email is received and when it is sent somewhere other than just
      • Recurring Events Not Appearing in "My Events" and therefore not syncing with Google Apps

        We use the Google Sync functionality for our events, and it appears to have been working fine except: I've created a set of recurring events that I noticed were missing from my Google Apps calendar. Upon further research, it appears this is occurring
      • Next Page