Tells you who your best customers are
Every customer is ranked on how recently they bought, how often, and how much they spent — so the handful carrying your revenue stop being a guess.
You have a list of orders and no idea which customers are worth chasing. Drop in a CSV with a customer id, an order date and an amount, and get every customer sorted into a named group — your best, your newest, the ones quietly slipping away — with what to send each one. Runs in your browser; the file never leaves it.
Drop a CSV of orders here, or
Customer id, order date, amount. A pre-aggregated customer table works too. The columns are found for you and you can change them afterwards.
Read and scored in this browser tab. Your customer list never reaches our server, so there is nothing for us to keep.
Every customer is ranked on how recently they bought, how often, and how much they spent — so the handful carrying your revenue stop being a guess.
Eleven plain-English groups — Champions, Loyal, At Risk, Hibernating and the rest — each with the message that suits it, written out on the page.
People who used to buy regularly and have gone quiet show up as their own group, while there is still time to win them back.
A second pass groups the same customers by how they actually behave, and flags where one name is sitting on two very different sets of people.
The file is read in this browser tab. Your customer list never reaches our server, which is the honest answer to whether it is safe to drop in.
Every customer with their scores and their segment, plus a summary per group. Filter it in a spreadsheet or paste it straight into your email tool.
A CSV with a customer id, an order date and an amount — one row per order. Shopify, WooCommerce, Stripe and most CRMs export this in two clicks. A pre-aggregated customer table works too.
The three columns are detected and shown back to you, so you can change any of them if the guess is wrong. Everything recalculates when you do.
You get each customer in a named group with the action that suits it. Start with the valuable people who have gone quiet, then download the CSV and load the lists into your email tool.
Every customer in your file lands in one of these. The name is only a label — the sentence next to it is the reason the label is worth having.
Doing this in a spreadsheet is genuinely fine, and plenty of people do. The reason to use this page instead is that it takes ten seconds rather than an afternoon, and it does not quietly go wrong when most of your customers have ordered exactly once.
The output is a CSV, so you end up back in the spreadsheet anyway — with the scores and the segment already on every row, ready to pivot.
RFM analysis scores every customer on three things — how recently they bought (recency), how often they buy (frequency), and how much they have spent (monetary) — and groups them by the combination. Each dimension gets a score from 1 to 5, so a customer is summarised by three digits such as 555 or 144. It needs nothing more than a list of orders with a date, a customer id and a value, which is why it is still one of the highest-return analyses in retail marketing.
Work out three numbers per customer: days since their last order, their total number of orders, and their total spend. Then rank customers on each number and split the ranking into five equal groups, giving 5 to the best fifth and 1 to the worst. Recency is reversed — fewer days since the last order is better, so the most recent fifth scores 5. The three digits together form the RFM score, and many teams also use an average of the three as a single overall rank.
Most implementations use around eleven named groups mapped from the recency and frequency-monetary scores. Champions bought recently, buy often and spend the most. Loyal Customers buy often but less recently. Potential Loyalists are recent buyers with a few orders. New Customers bought once, very recently. At Risk and Cannot Lose Them were valuable but have gone quiet. Hibernating and Lost are old, low-frequency and low-value. The names matter less than the fact that each one implies a different action.
There is no absolute good score, because RFM is relative by construction: scores are quintiles of your own customer base, so roughly 20% of your customers score 5 on each dimension no matter how your business is doing. A 555 is your best customer today; a 111 has not bought in a long time, rarely did, and spent little. What you should watch is movement between scores over time, and the share of revenue coming from the top segments.
Customer segmentation is the practice of splitting a customer base into groups that behave differently enough to justify treating them differently. Segments can be built on behaviour (what people bought and when), value (how much they spend), demographics, or lifecycle stage. Behavioural segmentation such as RFM tends to outperform demographic segmentation for marketing decisions, because past purchasing predicts future purchasing far better than age or postcode does.
Monthly suits most retail and ecommerce businesses, quarterly is enough for high-value or slow-cycle categories, and weekly is usually noise. The right cadence follows your purchase cycle: recency scores only move meaningfully once a typical gap between orders has passed. Keep the snapshots, because the value of RFM comes from watching customers move between segments — a Champion sliding to At Risk is the signal, not the label itself.
RFM puts customers into segments you defined in advance using fixed quintile rules, so the groups are consistent, explainable and easy to brief to a marketing team. K-means finds groups from the data itself, without names, and will happily discover that two very different behaviours are sitting inside one RFM label — a high-frequency low-value group and a low-frequency high-value group both scoring the same. Run RFM for the actions and clustering as a check on it.
Match the message to the segment. Champions get early access, referral asks and no discount, because they would have bought anyway. Loyal Customers get cross-sell into categories they have not tried. At Risk and Cannot Lose Them get a genuine win-back with a real incentive, sent while the recency gap is still recoverable. New Customers get onboarding aimed at a second order. Hibernating and Lost get one cheap reactivation attempt, then suppression, which usually saves more than it costs.
This page takes one file, in your browser, and hands you the answer. That is deliberately all it does. What it cannot do is the next question — join the segments to your email sends, ask why the At Risk group left, check whether last quarter’s win-back worked, or look at the same customers a different way when the first cut turns out to be wrong.
For the follow-up questions, run the same segmentation inside your AI assistant with meelu-analytics-mcp. It holds several files at once, follows one answer with another question, and explains what it found rather than printing a table. It is open source and runs locally. See the customer segmentation use case.