Skip to content
InfiQ glossary · Reference sheetGrowth & marketing

RFM Segmentation(RFM)

Scoring customers on how recently, how often and how much they buy, so WhatsApp campaigns target loyal, lapsing and high-value groups differently.

Properties

Term
RFM Segmentation
Abbreviation
RFM
Level
Practitioner
Audience
Marketers
Reviewed
Also called
RFM analysis · RFM model · Recency, frequency, monetary · RFM scoring

01 · Definition

What is RFM segmentation?

RFM segmentation (recency, frequency, monetary) ranks customers by three facts from their order history: how many days have passed since their last purchase (recency), how many orders they placed in a period (frequency) and how much they spent (monetary value). Each customer gets a score per dimension, most often 1 to 5, and the combination, such as 5-5-4 or 1-2-3, places them in a named group that a WhatsApp campaign can target.

The scores are relative to your own customer base. The usual method sorts customers on each measure and cuts them into quintiles, so R5 is the most recent fifth of buyers and M1 the lowest-spending fifth. Recency is scored inversely, because fewer days since the last order is better. Frequency and monetary value tend to move together, so many teams read RFM as a grid of recency against frequency and use monetary value to rank customers inside each cell.

RFM is one specific method within Segmentation, which covers splitting an audience on any attribute or behaviour. It uses purchase data only, so it suits retailers, D2C brands, pharmacies and restaurants with repeat orders, and says little about leads who have never bought. RFM decides which message fits a group; Personalisation then decides what each recipient's copy says, and Opt-in decides whether that person may receive marketing at all.

Key takeaways

  • RFM segmentation scores each customer on the recency, frequency and monetary value of their purchases, usually from 1 to 5 per dimension.
  • Scores are relative: quintiles split your own customers into five equal groups, so R5 means the most recent fifth of buyers, not a fixed date.
  • Score combinations map to named segments such as Champions, At risk and Lost, and each segment gets its own WhatsApp message and cadence.
  • The score decides the message; consent decides the audience. Only contacts with a marketing opt-in enter an RFM campaign list.
  • Recompute scores at least weekly: recency changes every day even when a customer does nothing.

See InfiQ pricing

02 · Specifications

RFM segmentation: key facts and limits

DimensionsRecency (days since last order), frequency (orders), monetary (net spend)
Usual scale1–5 per dimension (quintiles): 125 possible R-F-M codes
Typical look-back12 months, shorter for groceries, longer for furniture
Named segments in use6–10, each with its own play
RefreshNightly or weekly; recency moves daily
Data neededCustomer ID, order date, net value, WhatsApp opt-in
India marketing rate₹0.94 per delivered marketing message

03 · Operation

How does RFM segmentation work?

  1. Pull the order history

    For each customer, collect the date of the last order, the number of orders and total net revenue over a fixed look-back window (12 months is common). Exclude cancelled, returned and RTO orders, and key every row by a stable customer ID linked to the WhatsApp number.

  2. Score each dimension from 1 to 5

    Rank customers on each measure and split them into quintiles. Recency uses days since the last order, with the fewest days scoring 5; frequency and monetary value score higher for more orders and more spend. Decide in advance how ties are handled.

  3. Map scores to named segments

    Translate score combinations into groups with a lookup table: R 4–5 with F 4–5 as Champions, R 1–2 with F 4–5 as At risk, R 1–2 with F 1–2 as Lost. Six to ten segments is usually enough, as long as each one gets its own message.

  4. Filter by consent and caps

    Keep only customers with a valid marketing opt-in, remove anyone on the suppression list and apply your frequency cap across all campaigns before a segment becomes a send list.

  5. Give each segment one play

    Choose the template, offer and cadence per group: early access for Champions, a second-order nudge for new buyers, a personal check-in with a reorder button for At risk, and a quarterly message or none at all for Lost.

  6. Refresh, track movement and measure

    Recompute scores nightly or weekly, record how customers move between segments, and compare each play's conversion with a holdout group that receives nothing.

04 · Code samples

RFM segmentation in code

-- RFM scores over the last 12 months, mapped to the segments on the grid
WITH base AS (
SELECT customer_id,
CURRENT_DATE - MAX(order_date)::date AS recency_days,
COUNT(*) AS frequency,
SUM(net_amount) AS monetary
FROM orders
WHERE status = 'delivered' -- no cancelled, returned or RTO orders
AND order_date >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY customer_id
),
scored AS (
SELECT *,
NTILE(5) OVER (ORDER BY recency_days DESC) AS r, -- most recent = 5
NTILE(5) OVER (ORDER BY frequency ASC) AS f,
NTILE(5) OVER (ORDER BY monetary ASC) AS m
FROM base
)
SELECT s.customer_id, s.r, s.f, s.m,
CASE
WHEN s.r >= 4 AND s.f >= 4 THEN 'champions'
WHEN s.r >= 4 AND s.f = 3 THEN 'potential_loyalist'
WHEN s.r >= 4 THEN 'new_or_promising'
WHEN s.r = 3 AND s.f >= 4 THEN 'loyal_slipping'
WHEN s.r = 3 AND s.f = 3 THEN 'needs_attention'
WHEN s.r = 3 THEN 'about_to_sleep'
WHEN s.f >= 4 THEN 'at_risk'
WHEN s.f = 3 THEN 'hibernating'
ELSE 'lost'
END AS segment
FROM scored s
JOIN contacts c ON c.customer_id = s.customer_id
WHERE c.whatsapp_marketing_opt_in = TRUE -- consent decides the audience
AND c.suppressed_at IS NULL
ORDER BY segment, s.m DESC; -- monetary value ranks priority inside a segment

NTILE splits ties arbitrarily; with many one-order customers, replace the frequency NTILE with fixed bands (1, 2, 3–4, 5–7, 8+).

05Playground

A working model of RFM. Use its controls to replay it step by step.

Find a customer's segment on the R × F grid

3 / 3
Find a customer's segment on the R × F grid. 3 rows by 3 columns. Each cell is a button: activate it to read its note, and use the arrow keys to move between cells.
Few orders (F 1–2)Some orders (F 3)Regulars (F 4–5)
Recent buyers (R 4–5)
Cooling off (R 3)
Lapsed (R 1–2)

Hover, tap or arrow-key through the cells — a dot in the corner means there is a note.

Lapsed (R 1–2) by Few orders (F 1–2)

LostReduce or stop

Long silent with few orders. Cut to a quarterly message or stop marketing; they cost the most per conversion.

Legend — press one to highlight its cells

Recency down the side, frequency across the top. Select any cell to see the segment it names and the WhatsApp play that suits it; the legend groups cells by what you do next.

Row 3 of 3. Lapsed (R 1–2) × Few orders (F 1–2): Lost. Long silent with few orders. Cut to a quarterly message or stop marketing; they cost the most per conversion.

06 · Worked example: A Kochi spice brand's Monday scoring run

Example: A Kochi spice brand's Monday scoring run

A D2C spice brand in Kochi scores its 38,000 customers every Monday night on 12 months of delivered orders. About 2,100 land in Champions, 3,400 in At risk (regulars who ordered monthly but have been silent for three months) and 9,800 in Lost. Champions get a new-harvest early-access template with no discount. At-risk customers get a marketing template asking whether anything went wrong, with a button to reorder their usual blend. Lost customers drop from the weekly broadcast to one festive message a quarter. Measured against a 10% holdout, 11% of the At-risk group order again within three weeks against 4% of the holdout, and total marketing deliveries fall by about a third.

07 · Cautions

Common mistakes with RFM segmentation

  • Scoring on gross orders

    Cancelled, returned and RTO orders inflate frequency and spend for exactly the customers who cost you most. Score on delivered, net orders only.

  • Letting quintiles split ties at random

    When half your customers have one order, NTILE spreads identical customers across F1, F2 and F3. Use fixed frequency bands, or score ties with the same value, so a score means the same thing every week.

  • Treating a high score as permission

    A Champion who never opted in to marketing still cannot receive a marketing template. Filter every segment through opt-in and the suppression list before it becomes a send list.

  • Messaging every segment every week

    Lost and Hibernating customers convert least and block most. Lower their frequency or stop, and spend those deliveries on At-risk regulars and potential loyalists.

  • Running RFM once and freezing it

    A one-off export goes stale within weeks because recency changes daily. Schedule the scoring, store the history, and treat a move such as Champion to At risk as a trigger in its own right.

08 · Recommended practice

Best practices for RFM segmentation

  • Match the look-back to your purchase cycle: 3–6 months for groceries and pharmacy refills, 12–24 months for furniture or electronics.
  • Use monetary value to order customers inside a segment, so the highest spenders get attention first when budget is limited.
  • Keep the score history, not only today's score; movement between segments is the most useful signal RFM gives.
  • Start with five or six segments and add one only when a group needs a genuinely different message.

09 · Rationale

Why does RFM segmentation matter?

Sending the same marketing template to every customer pays for deliveries to people the offer does not fit, at ₹0.94 per delivered marketing message in India, and those irrelevant messages are the ones that get blocked and reported. RFM turns an order table most businesses already have into a handful of groups with clearly different needs: thank the Champions, win back the At-risk regulars before they leave for good, and stop paying to message Lost customers every week. It is cheap to compute, easy to explain to a team and a sound first step before heavier predictive models.

10 · Questions and answers

RFM FAQs

What does RFM stand for in marketing?
Recency, frequency and monetary value. They describe when a customer last bought, how often they buy and how much they spend; each is scored, usually from 1 to 5, and the scores combine into segments such as Champions or At risk.
How do you calculate an RFM score?
Rank customers on each measure and split them into five equal groups. Days since the last order is scored inversely, so the most recent fifth gets 5; order count and spend score higher for more. The three digits, such as 5-4-4, form the customer's RFM code.
Is RFM useful if most of my customers have bought only once?
Only partly. RFM needs repeat purchases to separate groups, so a base of mostly one-time buyers clusters into a few cells. Use it to find and protect your repeat buyers, and segment everyone else on behaviour such as clicks, replies or the product they bought.
Can I message an RFM segment on WhatsApp without opt-in?
No. RFM decides which message suits a group; it does not grant permission. WhatsApp requires opt-in before a business messages people, so every RFM segment has to be filtered to contacts who agreed to receive marketing.
How is RFM different from customer lifetime value?
RFM describes past behaviour; customer lifetime value (CLV) predicts future revenue. RFM needs no model and is easy to explain, while CLV models are more precise and often use recency, frequency and spend as their inputs.

* Per-message rates for India, ex-GST: marketing, utility and authentication effective 1 July 2026; service messages ₹0.145 since 1 October 2026 (they were ₹0 until 30 September 2026). Volume commitments earn discounts — final rate is confirmed on your account; applicable GST extra. Rates for other countries differ (see the international rate table on /pricing).

Put RFM to work

InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.