Customer Segmentation using RFM Analysis

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 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

    • What's New in Zoho Analytics - August 2026

      Hello Users! This month puts you in control of how your analytics moves: promote content safely between workspaces with Deployment Management, govern data access and sign-in more precisely, and make your forecasts smarter with external drivers. There's
    • What's New in Zoho Analytics - June 2026

      Hello Users! This month is about meeting your data wherever it lives: reaching it from AI assistants, bringing it in from more sources, and keeping it flowing with less manual effort. Here's what's new across Ask Zia and AI, data import, integrations,
    • What's New in Zoho Analytics - February 2026

      Hello Users! We're back with another round of updates for Zoho Analytics. This month's release focuses on giving you greater flexibility in how you visualize, manage, and act on your data - with new features like custom visualizations, remote MCP server,
    • What's New in Zoho Analytics - May 2026

      Hello Users! We're back with another round of updates for Zoho Analytics. This month's release focuses on giving you greater flexibility in how you visualize, manage, and act on your data. We are introducing richer data visualizations, smarter AI-powered
    • What's New in Zoho Analytics - January 2026

      Hello Users! We are starting the year with a strong lineup of updates, marking the beginning of many improvements planned to enhance your analytics experience. Explore the latest improvements built to boost performance, simplify analysis, and help you
      • Recent Topics

      • Zoho Books - France

        L’équipe de Zoho France reçoit régulièrement des questions sur la conformité de ses applications de finances (Zoho Books/ Zoho Invoice) pour le marché français. Voici quelques points pour clarifier la question : Zoho Books est un logiciel de comptabilité
      • Editting PDF in Zoho online editor doesnt work

        I just tried editting a simple 3 page PDF but it opens up blank. I dont see any errors or feedback if something went wrong
      • Uploaded Documents are Distorted

        I needed to combine 2 documents into 1 PDF. When I uploaded a document that was a scanned copy of a physical document into the Zoho PDF Editor, it is all distorted/image quality is all whited out even though the file I uploaded was perfectly clear.
      • Delete CRM Portal

        How do I delete portals from my CRM? I created one just to test, it is not in use and is disabled but it's existence is preventing me from marking fields in modules as "required" unless I make it 'read/write' in the portal first. I'd rather just delete
      • Zoho One: books and inventory working together

        Hi, I was very pleased when I saw that in Zoho Inventory can now pull the orders from Woocommerce. They are now fed in Inventory as Sales order and with choosing convert invoice as Instant Invoice I am getting the exact data as they appear in Woocommerce.
      • 【Zoho CRM】承認プロセスのアップデート | ステージごとの処理設定や承認履歴を強化

        ユーザーの皆さま、こんにちは。コミュニティグループの中野です。 Zoho CRMの承認プロセス機能がアップデートされましたのでご紹介します。 今回のアップデートにより、承認ルールや承認ステージに名前を付けられるようになったほか、 承認ごとの項目更新やタスクの割り当て、却下時の通知、承認履歴の確認方法などが改善されました。 今回は、総額100万円以上の商談を特定の役職者(マネージャーとCEO)が順番に確認する承認プロセスを例にご紹介します。 目次 承認プロセスに追加するルールや、承認ステージに名前を付けられるように
      • Pass variables to Zoho Desk via URL to create a fast new ticket landing page

        We are integrating our phone system into Zoho Desk. Currently when a helpdesk agent answers the phone, a soft client opens a new tab with zoho desk at the new case page. https://desk.zoho.com/support/companyname/ShowHomePage.do#Cases/new We would like
      • Pulling data from lookup fields

        If I try to pull in CRM data from a lookup field, it only shows a number and not the actual name. Is there a way to get around this? It impossible to do reports using lookup field data.
      • Display a field of an Account on the Ticket view

        Hi there, We would like to display of the Account of the user submitting a ticket on the ticket view. See for example: How can this be achieved? It doesn't really matter where it will be placed as long as it is shown there. Thanks, Snir
      • Have a Zoho Desk PDF Attachment Show on the Ticket Screen rather than having to download it.

        We are using a system that emails out a report in PDF format to Zoho Desk for our staff to review but it's difficult to have to download the PDF attachment each time, we would like for there to be some sort a viewer below the ticket that shows the contents
      • Approval - Report/Views

        Hi, On Zoho Desk - Is there a way to report on pending approvals, or a view or similar?
      • PDF attachments no longer preview in Zoho Desk

        We are experiencing a new issue in Zoho Desk with PDF attachments. Until a few days ago, clicking a PDF attachment within a ticket opened the PDF for preview. Now clicking the same type of attachment automatically downloads the PDF to the computer instead
      • Is there a way to allow users to preview ticket attachments from clients or view in the browser?

        It's very time-consuming and takes away from the elegance of a web-based system to have to download the attachments to view them. Our clients often send spreadsheets and PDFs as attachments that must be viewed in order to answer the ticket, but they do not need to be downloaded. Zoho docs allows users to view in browser without downloading - this functionality would be ideal for Tickets. 
      • New Style for multilevel list numbering

        Hi, in my country most of legal contracts are numbered in top level as First, Second.. (Primero, Segundo, Tercero...). I suggest include this style for multilevel lists. Thanks in advance.
      • Export current view on timesheet bug?

        When you export current view on timesheet, which is a welcome change, it states: Only the current view with its visible columns will be exported from Zoho Books in CSV or XLS format.". However when this is done, the current view is not fully exported.
      • Client Portal Not Accessible

        I am new to Zoho Books and am just starting to experiment. I sent myself an invoice at a personal test email address, which I paid. When I go back to the email I received and click "View Invoice", I get taken to a zohosecurepay page which shows the paid
      • Change sender email in Zoho Finance for a Sales Order

        Using Zoho Finance to send Sales Orders. There is a "From" drop-down field on the "Send Email" prompt. How can I add another company email to the list of "From" options? It currently only shows my email, even though another employee, who has full admin rights, is the owner of the Sales Order.
      • Subforms and automation

        If a user updates a field how do we create an automation etc. We have a field for returned parts and i want to get an email when that field is ticked. How please as Zoho tells me no automation on subforms. The Reason- Why having waited for ever for FSM
      • The reason I switched away from Zoho Notebook

        My main reason for switching to Zoho was driven by three core principles: moving away from US-based products, keeping my data within India as much as possible, and supporting Indian companies. With that intent, I’ve been actively de-Googling my digital
      • Feature Request – Per-Channel Pre-Chat Form Controls

        We'd like the ability to enable/disable the pre-chat form on a per-channel basis, rather than having a single global setting. On the website widget, asking for name and email before chat starts makes sense. On WhatsApp, however, email isn't necessary
      • Zoho Finance Triggers

        I would like to propose that Flows triggered by a Zoho Finance app (Books, Inventory, etc.) have the option to be triggered by the same action taken in any Zoho Finance app, not just the one chosen. Problem: Currently, Flow automations can only be triggered
      • Flow Needs "Digital Employee" Analog

        Zia Agents have the ability to perform tasks under their own identity when set up as a "Digital Employee". One of the stated benefits of this is audit visibility; actions taken by the Zia Agent can be distinguished in logs from actions taken by the owner
      • Copying a Document with its Citations

        When I copy a document that contains citations using File>Make a Copy from the document's menu the text copies but the citations do not (according to Google they should). Is this the correct way to make a complete copy of a document with its citations
      • Trigger Workflow Rules from subform row actions

        Hello all, Previously, workflow rules could only be configured at the module level, which meant subform data had to be tracked and managed manually. With this update, workflow rules can now be triggered directly by actions within subform rows, giving
      • Connect ZOHO social with Google Data Studio and download data from ZOHO social

        Dear ZOHO team, I am writing this message to enquire about how to connect ZOHO social with Google data studio since our company would like to use Google data studio to generate reports. Is it a way to download data from ZOHO social? Best regards, Chris
      • Best way to setup Inventory bin tracking for products with multiple boxes/crates

        Hi - we need some advice from the community on setting up Items in the Inventory for products with multiple crates. We have large products in our warehouse where the product is delivered as two large (double pallet) crates. We've setup the Items for these
      • how to differentiate if whatsapp comes from certain landing page?

        I create a Zobot in SalesIQ to create a Whatsapp bot to capture the lead. I have 2 landing pages, one is SEO optimized and the other want is optimized for leads comes from Google Ads. I want to know from which landing page this lead came through WhatsApp
      • Zoho Sign / Prefill By You - Editable by Them!

        Zoho Sign seems to have two field options available - an empty field for signer(s) to complete or a field that has been prefilled by you, that becomes read only once sent.  What I would like is an option on the pre-filled by you fields, to leave them
      • Out of Stock items showing in Commerce

        I have over 6000 items and most are not in stock, but all items are showing up in Commerce whether they are inventory or not. What option or feature can you use to hide items in Commerce at zero or negative quantities? I currently am using Commerce for
      • Facturation électronique 2026 - obligation dès le 1er septembre 2026

        Bonjour, Je me permets de réagir à divers posts publiés ici et là concernant le projet de E-Invoicing, dans le cadre de la facturation électronique prévue très prochainement. Dans le cadre du passage à la facturation électronique pour les entreprises,
      • Need complete Zoho Commerce theme ZIP example and safe staging workflow

        I want to build a complete custom Zoho Commerce storefront through Edit Code, including: • Global header and footer • Responsive homepage • Category, search and filter pages • Product cards and product-detail pages • Cart and checkout wrapper • Mobile
      • CRM wants to access other apps and services on this device (Documents area)

        Did anyone else see this today? It only seemed to popup in the Documents area. Blocking it did not stop the ability to upload files there... Why is this coming up and what apps/services is it requesting in the background? Also, is it applicable elsewhere
      • Date Field & Date Picker Problem

        The Date Fields in Fillable Fields are not working properly. The Date Picker is putting out the incorrect values.
      • What's New in Zoho Inventory | June 2026

        Hello users, June 2026 introduces a range of exciting enhancements to Zoho Inventory. With the full rollout of the Zoho Inventory Windows application, the launch of Terminal Payments, and new tracking combinations in Advanced Inventory Tracking, you can
      • How do I set the value of a Lookup field in SlyteUI?

        I am using the "crm-field" component in a SlyteUI project (code attached) https://www.zohocrm.dev/explore/slyteui/ui-components/crm-field/api#Properties The client would like to have this field pre-populated with a value. When I try to input the record
      • Items (products) Export to PDF Feature as a Catalog Generator

        Would like to request a product catalog feature where the admin can export "items" along with selected attributes (e.g.: product name, size, price, etc) in a professional template as a PDF document.  Since product pictures and the product attributes are already saved in our system DB, it would be a natural extension to just export it out as a catalog for customers.  I've been duplicating this feature in other apps to make a product catalog.  Having a central repository of "items" makes good sense,
      • DYK 11: Blueprint Import

        Did you know you can import task blueprint into Zoho Projects instead of building it from scratch? Tasks can sometimes have multiple stages and move through several stakeholders before completion. Without a defined process, task changes can happen without
      • Tip #87 – Stop Describing, Start Showing with Annotation – 'Insider Insights'

        Hello Zoho Assist Community! A new employee needs help getting set up on the internal tools their team uses. The IT technician jumps on a remote session, but walking through an unfamiliar interface verbally only goes so far. "The icon at the top, no,
      • Building extensions #7: Storing and managing module-specific data in Zoho Sprints extensions

        Storing and handling data related to Zoho Sprints modules is a key necessity when managing an extension. In this post, we'll look at the advantages of data storage and how it can be used with an example demonstration. Data storage An introduction In general,
      • sending a Daily nag reminder email?

        I'm wondering if it's possible to set up nag reminders, if a task/case/deal is overdue then i want send a daily email until it's either closed, or the due date is updated. A date based workflow automation looks like it will only trigger once, and not
      • Next Page