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,
- Click the Create New icon and choose New chart from the drop-down menu.
- Add the columns to the chart shelf as shown below,
- X-axis: Customer Name
- Y-axis: Monetary Value with Sum function.
- Click Generate Graph and change the chart type to bar chart.

- Click the Analysis icon and select Cluster Analysis > Add Clusters.
- The Model is chosen automatically based on the columns dropped in the shelves.
- 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.

- The number of clusters is determined automatically but can be adjusted based on business needs and specific customer segmentation goals to ensure optimal categorization.
- 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.
- 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.
- Click the New icon on the side navigation panel and choose New Table/ Import Data.
- Select files and choose the Clusters Table to import and click Next.
- 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
- Access the cluster table (imported data) and click the new icon > chart view.
- Drag and drop the columns as given below:
- X-axis - Clusters
- Y-axis - Monetary Value with the Count function.
- 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.
Recent Topics
Can't lock timezone in new Zoho Bookings
Hi, since the new Zoho Bookings has been changed, I cannot seem to lock the timezone in for the meetings. I have set the working hours and location, but when I got on the link, it automatically gives me slots in my timezone. I want to lock it for an in-person
How to import subform data - SOLUTION
To all trying to import subform data, I might have a solution for you. First of all, for this solution to work, the subform data needs to be an independent form (not ad hoc created on the main form). Furthermore, this approach uses Excel sheets - it might not work using CSV/TSV. If this is true, then follow these steps: Import the subform records Then export these records once more including their ID Now prepare an import file for the main form that needs to contain the subform records Within this
Can we customize the default client-facing icons?
Is there any way to customize the client-facing icons that display in the Zoho Bookings UI? For example, I'm using the Default page theme and would like to modify the default icon that is shown beside "Service." The icon currently being shown looks like a baseball hat to me (see attached screenshot) which has no relevance to my business or clients. It would be great if Zoho could provide a different, more generic icon (perhaps a bell icon to represent service?) or better yet allow the icons to
reCAPTCHA
Is the Bookings form protected by reCAPTCHA, or some mechanism to ensure submission of the appointment request form is made by a human vs. bot?
Zoho Books | Product updates | May 2025
Hello users, We’ve rolled out new features and enhancements to elevate your accounting experience. From configuring approval at the module level to allocating landed costs to multiple bills, these updates are designed to help you stay on top of your finances
Zoho Notebook suddenly running very slow on long notes
I have been a longtime user of Zoho Notebook. Historically, it has run quite well, but I've noticed over the last few days that it has begun to run unbearably slow when typing in large notes, to the point where I can type four words and have to wait for
Workflow Automation Instant Action
Hello All I need help to resolve this. I have created a few workflow 1. When Deal Stage is Submitted to Onboarding, it will create a record in my Onboarding Module 2. When Deal Stage is Live, It will copy $Deal.GOliveDate to $Onboarding.GoLiveDate For
Multiple team members to access one office PC
Hello, We have a high-performance PC in our office that we use for resource-intensive tasks. All team members need to remotely access this PC from time to time. However, when I enable remote access for myself through Zoho Assist, the PC does not appear
Zoho Bookings API, timezone is not recognized when passed
Has something changed? Time zone is being passed through API but it is NOT being recognized. response is not showing time zonetime that was passed through request. This is an URGENT issue as it is preventing bookings! Seems like this is due to a recent
Widget function call not working – need help
Hi everyone, I'm building a widget for Zoho CRM and trying to call a Deluge function from it using ZOHO.CRM.FUNCTIONS.execute, but it's not working. Here’s what I did: I created a Standalone function in Deluge. I'm calling it inside ZOHO.embeddedApp.on("PageLoad",
Formula Module how to convert to percentage
Hello There, I have create a formula field and i want the outcome to be in percentage how do i do that This is my formula ${Deals.Forecast Revenue Per Year}/${Deals.Annual Processing Volume} I have try ${Deals.Forecast Revenue Per Year}/${Deals.Annual
What is the use of the stage environment ?
Salut, I am woundering what is the use of the stage environment. Usually, I do all the testing in developpement, and then go straight to production. The only thing I cannot test in developpement, is the result for portal users. Could the stage environment
Can I view a gallery of attachments related to an Account, Contact, or Subscription
It is often useful to review photos related to an account or contact by service type. It would be nice to be able to see the photos collected through workorders or appointments all associated.
View Kanban tasks in "Status" layout for all projects
Hi I'm testing Zoho Projects Express to see if it is suitable for my business. So far it looks great and seems to do everything we want (except critical path on the Gantt charts), but one thing I can't seem to figure out is this: If I go into a project, and choose "Kanban", I can select the "Status" layout which is great. I can see the status of all of the tasks in that project, and who is working on what. However, if I go to: Home > My Tasks > Kanban, then the "Status" layout isn't an option - only
Unsubscribe Page
Where in Zoho Campaigns can I go to customize the design and copy on the unsubscribe page and follow-up "thank you" page? I am not seeing it under Settings.
Ability to modify what displays in calendar invite?
I am a long time calendly user and want to make the switch to bookings. I understand that there is not currently a meets/hangouts integration, is one on the roadmap? Is there anyway I can modify the calendar invite to include the meet link? I can add it to the emails no problem, but I would also like it to display on their calendar. Is there some work around I can do to get it on the calendar? Also am I able to modify the calendar event title?
Shared Snippets Everyone
Hi, Now that the Shared Snippets have been released and I think will be the most used feature implemented in 2023 :) Creating and Using Snippets in Ticket Responses - Online Help | Zoho Desk Maintain consistency in ticket responses with shared snippets
Zoho CRM Functions 53: Automatically name your Deals during lead conversion.
Welcome back everyone! Last week's function was about automatically updating the recent Event date in the Accounts module. This week, it's going to be about automatically giving a custom Deal name whenever a lead is converted. Business scenario Deals are the most important records in CRM. After successful prospecting, the sales cycle is followed by deal creation, follow-up, and its subsequent closure. Being a critical function of your sales cycle, it's good to follow certain best practices. One such
Bookings page very slow to load
I recently switched to Zoho bookings from calendly and yesterday I switched back. Zoho Bookings page was taking 7-23 seconds to load. We were losing paid clicks from Google because they had to wait too long. Does anyone have any suggestions?
Zoho Bookings: How to set a limit for maximum bookings per day?
Let's say I have 1 hour slots OPEN for an entire day. What if I want all of the OPEN slots to turn OFF if/when I hit a certain number of total bookings for that day? I usually only want a total of 5 appointments to be booked but I'm not sure of the exact
Zoho Booking API to update service for Assigned Agent
Hi there, I have been testing and looking at the Zoho booking API for the Assigned Agent update from Zoho CRM for a long time. There is only a Fetch service request, but no updated Assigned Agent options. Does anyone know how to do that? PS: I can use
Zoho Accounts and Book Keeping candidate required
Urgently required data operator who can do following tasks: Purchase Bill Entry Sale Bill Entry Bank Entries Cash Book entries 40-75 entries per days
Cancellation waiting list - Zoho Bookings
Is it possible to have a waiting list in case I got a cancellation it can be filled automatically with people on this list?
Zoho Bookings Integration with Make.com
Dear Zoho Bookings Support Team, We are writing to request a new integration between Zoho Bookings and Make.com, a leading automation platform widely used by Zoho users. Current Integration: We acknowledge the existing integration with Zapier, another
Advanced search for Spam tickets in Zoho Desk
Currently there is no way to use advanced search in Zoho Desk to find content in tickets marked as spam. Please add this functionality! I believe this should not be the default, but a simple check box "Include Spam Tickets" would be helpful.
Introducing Zoho CRM for Everyone: A reimagined UI, next-gen Ask Zia, timeline view, and more
Hello Everyone, Your customers may not directly observe your processes or tools, but they can perceive the gaps, missed hand-offs, and frustration that negatively impact their experience. While it is possible to achieve a great customer experience by
Introducing Rollup summary in Zoho CRM
------------------------------------------Moderated on 5th July'23---------------------------------------------- Rollup summary is now available for all organizations in all the DCs. Hello All, We hope you're well! We're here with an exciting update that
Different Page Numbering
I want the page numbers not just 1,2,3... but i,ii,iii,iv,... or even I,II,III,IV.... How can I do this?
Leads Should Support Business-Centric Structure for B2B Use
We’re a B2B company that generates leads for other businesses and often engage with multiple contacts within the same company. For years, we’ve struggled with Zoho CRM’s limitation of requiring a Last Name field for leads. For example, if we’re pursuing
Poor Search Results on Zoho CRM
The search on Zoho CRM is quite poor. Salesforce has now published a new search, when will get this on Zoho? https://help.salesforce.com/s/articleView?id=data.c360_a_hybridsearch_index.htm&type=5
Holding Shift to keep selected tickets
It is annoying trying to change the category of tickets and then closing them. You have to select them one by one, no way to 'hold down left click and drag your mouse down to select multiple'. Once you have selected them and you change the category, you
Currency Data Type Issue
Hi, I'm running into an issue with the currency data type conversion with the pipeline tool inside Zoho Analytics. Basically, when the table is added to the pipeline, the columns with currency data type will be converted to text type. I assume it's because
Zoho AI Translate – No Support for Hebrew?
I want to use Zoho AI Translate, but I see that it does not support Hebrew. Since Zoho supports multiple languages, I was hoping this function would also work with Hebrew. Is there any plan to add Hebrew support in the near future? Or is there an alternative
How can I mark an account as VIP or similar for special treatment?
I'd like to create a visual enhancement to mark an account as VIP in a way our agents can't miss it. What is your suggestion? Thanks!
CRM HAS BEEN SOOO SLOW For Days 05/15/25
I have fantastic Wifi speed and have zero issues with other websites, apps, or programs. It takes an excruciatingly amount of time to simply load a record, open an email, compose an email, draft a new template, etc. Am I in a subset/region of subscribers
Exclude Segment from Campaign Recipients
I've created two Segments in order to separate Non-Marketing Contacts from Marketing Contacts. I'd like to send an Eblast to all Marketing contacts in my lists, but when I go to select Recipients, I have two options: 1. To Choose Lists to Send to; 2.
Equivalent domains
Need a settings feature for adding/modifying/deleting domains that use the same login service. The feature can also suggest some popular sites that use shared credentials to access domains under their control. For example: amazon.com and its local variations like amazon.in. For example: gmail.com and google.com. LastPass has this feature.
Introducing Keyboard Shortcuts for Zoho CRM
Dear Customers, We're happy to introduce keyboard shortcuts for Zoho CRM features! Until now, you might have been navigating to modules manually using the mouse, and at times, it could be tedious, especially when you had to search for specific modules
Associating Multiple Work Orders with a Single Invoice in Zoho FSM
Hello Everyone, Is it possible to associate multiple Work Orders with a single Invoice in Zoho FSM? Best Regards, Subhash Kumar
Can't verify DKIM key?
So basically I just wanted to verify the email on my domain so it doesn't showup as spam in other people's inboxes. So I did what Zoho told me to do, it was to verify a DKIM key. I created the key with the address, added the correct information to the TXT file in my domain's DNS settings, tried to verify it and it keeps saying 'Verification failed'. I tried it more then once, I reset the DKIM key, and for some reason it just won't verify. Either it's me being impatient or this thing isn't working.
Next Page