Skip to content

RFM & segmentation

Why Can an RFM Score Change When a Customer Has Not Bought Again?

Separate growing days since purchase from changes in relative RFM rank. Compare reference dates, peer populations and order windows using a fictional before-and-after example and a diagnostic checklist.

อ่านเป็นภาษาไทย
AI-generated editorial illustration: a round green analog clock on the right of a wooden desk, with overlapping blank cards in a front-to-back column on the left and warm leaf shadows on the wall and desk.
AI-generated editorial illustration for comparing dated RFM snapshots and raw values with relative ranks. It contains no real customer records and is not a product screenshot.

A score that moved while nothing happened

Imagine a fictional Thai online gift shop called Mango Wrap. In September, Khun Apinya has a recency score R = 1 under the CasperBrain convention, where 1 is the best quartile. Thirty days later her reported R score is 2, although her last-purchase date has not changed and no new order from her was added. This example concerns only R; it does not assign frequency or monetary scores. Check the reference dates and the comparison population before treating the changed rank as a bug or evidence that she has disengaged.

Before treating the change as a bug or a reason to contact the customer, compare three inputs: the reference date used for raw recency, the peer population used for ranking, and the order window used for frequency and spend. A later reference date can increase days since purchase without any new action. That increase alone does not change a relative quartile if every customer ages equally and the population, window, scoring and tie rules stay fixed. The examples below separate raw-value changes from changes in relative position.

RFM scores are relative ranks, not fixed ratings

The most important thing to internalize about RFM is that a score does not describe a customer's absolute behavior — it describes where that customer sits within the current customer base on a given measurement date. Scores reflect each customer's position within your customer base, so a ranking can fall when other customers become more active, even without any change in the focal customer's behavior.

Scoring conventions differ. Shopify’s general guide describes RFM scores where higher values mean stronger purchase measures. Read any code with its original scale, direction and component order. The dedicated CasperBrain product note below states the convention used here; vendor sources in this general section do not substantiate that product-specific convention.

Quartile cutoffs are computed from the included customer distribution. Recalculation does not guarantee a different boundary or score. Another customer purchasing, a change in the included population or order window, or a change in scoring rules can alter relative positions. Check which inputs actually changed rather than assuming that every refresh moves a boundary. The four-quartile convention described here does not establish undocumented tie handling or inclusion rules.

Sources: RFM Analysis: Definition and Segmentation Guide — Shopify · RFM Analysis: Definition and Segmentation Guide — Shopify SG

Check 1 — Raw recency and the reference date

Raw recency is the number of days between a last purchase and the chosen reference date. With the last purchase fixed, moving the reference date forward by 30 whole days increases raw recency by 30 days: 20 becomes 50. Keeping the reference date fixed keeps that raw difference fixed too. Record the date convention used in each snapshot; calendar time passing outside a fixed snapshot does not silently change its reference date.

Uniform aging preserves relative order. If the same customers all go without another purchase and the reference date advances by 30 days, every raw recency value gains the same 30 days. Under the same relative-quartile method and tie handling, that alone does not move people between quartiles. Someone else purchasing can change their position relative to the focal customer; entering or leaving the comparison population can also change the distribution. Simply waiting while everybody ages equally is a different case.

For an aging comparison, calculate each raw value using its own recorded snapshot reference date and verify that the last-purchase date stayed fixed. For an isolated peer-ranking comparison, instead hold the reference date, the focal history, window and scoring convention fixed and inspect the peer inputs. Do not ask a 28-to-58-day increase to occur under one unchanged reference date and last-purchase date. A score change alone cannot identify which input caused it.

Sources: RFM Analysis: Definition and Segmentation Guide — Shopify

A before-and-after worked example: Khun Apinya at Mango Wrap

The following is a fictional teaching example constructed to illustrate recency drift. All names, order IDs, and figures are invented solely for explanation. No real customer data is used.

On 1 September, Mango Wrap has 200 customers in the analysis. The reference date is 1 September. Khun Apinya's last purchase was on 15 August, giving her a raw recency of 17 days. The top quartile boundary (the threshold at or below which a customer must fall to score 1) sits at 30 days. She scores R = 1.

At the fictional 1 October snapshot, the reference date is 30 days later and Apinya still last bought on 15 August, so raw recency is 47 days. The assumed population now contains 260 people, including 60 new buyers. For this teaching example only, suppose the Q1 upper cutoff is 35 days and the Q2 upper cutoff is 60 days; 35 < 47 ≤ 60 therefore places her in R = 2. The earlier Q1 cutoff was 30 days, so 17 days gave R = 1. These are stipulated illustrative cutoffs, not values calculated from a supplied customer dataset or guaranteed CasperBrain thresholds. Both time and population changed; the example does not isolate the effect of adding 60 customers.

Snapshot dateApinya's last purchaseReference dateDays since purchase (R raw)Assumed quartile cutoffs in this exampleR scorePopulation size
1 September15 August1 September17≤ 30 days1200 customers
1 October15 August1 October47Q1 ≤ 35 days; Q2 ≤ 60 days2260 customers

Check 2 — Population and peer activity can change relative ranks

The analyzed population is the customer set included in a particular run. Changes to upstream data preparation or to the population definition can add or remove people and alter the distribution used for relative ranking. Compare the actual included records and the recorded definitions across snapshots before attributing a change to membership. This is a general analysis principle, not a claim that CasperBrain provides a particular inclusion or exclusion control.

Recent new buyers or repeat purchases by peers can change the relative distribution, but neither the direction nor the size of a cutoff change follows from the customer count alone. If no one buys, no one enters or leaves, and the window and scoring rules remain fixed, advancing the reference date equally preserves recency order. A customer becoming relatively better or worse in a later run requires checking the changed peer data, population or rules; a quiet period alone is not an explanation.

The reverse is also possible. If a cohort of previously active customers is removed from the analysis base — for example because they fall outside a defined scope — their absence can make remaining customers look relatively better, lifting some scores upward. A score improvement that coincides with no new purchase is just as explainable by a reduction in the population as a score decline is explainable by population growth.

Assumed Q1 recency cutoffs in two fictional snapshots

Fictional teaching values, not a measured effect of 60 new buyers. The two snapshots differ in both reference date and population; the Q1 cutoffs of 30 and 35 days are stipulated inputs. The chart does not isolate either change or establish a universal direction of movement.

  1. 30 days (threshold for R = 1)1 September (200 customers)

    Customers with ≤ 30 days since purchase occupy the top quartile

  2. 35 days (threshold for R = 1)1 October (260 customers)

    Assumed Q1 cutoff at the second snapshot; both reference date and population changed

Sources: RFM Analysis: Definition and Segmentation Guide — Shopify · RFM Analysis: Definition and Segmentation Guide — Shopify SG

Mechanism 3 — Changing the analysis window rewrites F and M

Frequency and monetary value require a defined analysis window. If you ran last month's analysis over the 12 months ending 31 August, and this month's analysis runs over the 12 months ending 30 September, the window has moved forward by one month. Any orders that fall in September of last year have dropped out of scope, and any orders placed in September of this year — which may not exist for a given customer — are the only new additions.

For a customer who made several purchases in September of the previous year but has not bought since, this window shift removes those orders from the frequency count and their corresponding spend from the monetary total. Even if their raw recency is unchanged, their frequency order count and their in-scope monetary total have fallen, and their position within the current distribution for those dimensions may have declined as a result.

This is why it is essential to record which window was used for every analysis run. If you are comparing a score from one run to a score from a later run and the window has shifted, you are not measuring the same period of activity. The change in score may reflect nothing more than an accounting boundary moving past a cluster of old orders. As one guide to RFM setup notes, frequency and monetary value need a defined analysis window, and changing that window changes which orders and spend are in scope — independent of any new purchases.

Sources: RFM Analysis: Definition and Segmentation Guide — Shopify · RFM Analysis: A Data-Driven Approach to Customer Segmentation — HubSpot

A diagnostic checklist before declaring behaviour has changed

Before concluding that a customer's RFM score change reflects a real shift in their buying behaviour — and certainly before triggering a win-back campaign or escalating to a retention call — work through the following checklist in order. Each step is designed to rule out a mechanical explanation before accepting a behavioural one.

First, confirm the reference date used to calculate recency in both the before snapshot and the after snapshot. If the reference date advanced, raw recency values grew for every customer who did not purchase in the intervening period.

Second, confirm the analysis window — specifically the start and end dates used for frequency and monetary totals — in both snapshots. If the window shifted, identify which orders entered or exited scope for the customer in question.

Third, compare the underlying days since purchase, distinct order count and in-window spend. If those values and the reference date are identical, the customer has not acquired a different purchase history in this comparison. Inspect the peer distribution and scoring configuration before attributing a changed code to a particular cause. Equal raw values do not by themselves rule out a changed convention, tie treatment or input correction.

Fourth, compare the actual included customers as well as the population definition and filters. Identical filter labels do not mean identical membership: new customers may satisfy the same filter. Record who entered or left and inspect the resulting cutoffs. A population change can alter some relative ranks, but does not guarantee that every boundary or every customer score moves.

Fifth, confirm you are comparing scores produced by the same tool version and the same scoring convention. Comparing a CasperBrain quartile-1-is-best score to a score from a platform using a five-level scale where 5 is best will produce a meaningless comparison.

Use these checks to identify what changed in the measurement. Then examine actual purchase dates and the customer’s usual buying intervals before deciding whether follow-up is useful. A changed code or a larger elapsed-day value alone does not establish disengagement, its cause or a need for a campaign.

CheckWhat to look atWhat rules out a mechanical cause
1. Reference dateThe date used to measure recency in each runSame reference date in both snapshots
2. Analysis windowStart and end dates for F and M calculationsSame window start and end in both snapshots
3. Raw valuesDays since purchase, distinct order count, total spendSame raw values/date: inspect peer data and scoring rules before assigning a cause
4. PopulationActual included customers and their histories, plus population definition and filtersSame included customers and peer histories, not merely the same filter labels
5. Scoring conventionScale, direction, and tool versionSame tool, same convention, same version

CasperBrain's quartile convention and what it means in practice

CasperBrain product note, separate from the general vendor references elsewhere: CasperBrain uses four quartiles for each RFM dimension. A score of 1 is the best quartile — the most recent buyers, the most frequent buyers, or the highest spenders. A score of 4 is the worst quartile. The composite is always expressed as a text string, for example '114', where the first character is recency, the second is frequency, and the third is monetary value. The string '114' therefore means a customer who is in the best recency quartile, the best frequency quartile, and the worst monetary quartile.

This is not a number you add or average in ordinary arithmetic. A composite of '114' and a composite of '411' contain the same digits but describe entirely different customers. Read each position separately.

For an imported score, retain the source tool’s documented scale, direction and component meanings. A scale where the highest level is best cannot be read with CasperBrain’s 1-is-best convention. If documentation is missing, the code’s meaning is unknown; verify it before selecting a customer list or assigning an action.

Why a score drop does not automatically mean churn risk

A drop in an RFM score can flag a customer at risk of churning, especially when a regular buyer stops ordering — but rankings can also drop when other customers become more active. A low score or a declining score does not by itself tell you why purchases stopped, and it does not distinguish between a customer who has genuinely disengaged and one who is simply being overtaken by a more active cohort.

For a fictional fixed-date R-only comparison, Khun Boonmee has the same last-purchase date and raw recency of 28 days in both runs. Assume Q1’s upper cutoff changes from 30 to 20 days as the peer distribution changes, while Q2’s upper cutoff remains 60 days and the scoring convention stays fixed. He is initially R = 1 because 28 ≤ 30, then R = 2 because 20 < 28 ≤ 60. These cutoffs are stipulated teaching inputs, not calculated from supplied customer data. His purchase date did not change; the example assigns no F or M score and does not establish churn.

For fictional Khun Chanida, hold the last-purchase date fixed but advance the second reference date by 30 days. Her raw recency grows from 28 to 58 days. This illustrates elapsed time only; it does not calculate or assign her relative R quartile, nor F/M scores. A relative-rank change would require checking the peer distribution and scoring inputs. The fixed-date Boonmee case and advancing-date Chanida case answer different questions. Neither explains why someone has not bought or whether outreach would help, and RFM does not measure profit.

Sources: RFM Analysis: Definition and Segmentation Guide — Shopify SG · RFM Analysis: Definition and Segmentation Guide — Shopify

Practical steps when you see an unexpected score change

When you notice a score change that surprises you, start by opening the customer's purchase record and reading the raw values directly. In CasperBrain, you can export an authorized customer CSV — subject to your permission level and field visibility — to inspect available underlying fields and compare figures against the previous period's export. Check what fields your export includes before relying on it for this comparison.

Next, check whether the analysis window is consistent between the two runs. If you changed the window — for example, by switching from a rolling 12-month window to a calendar-year window mid-year — note that this alone can shift scores for every customer in the database, because different orders will be in scope.

If the focal raw values, order window and reference date match, compare actual population membership and peer histories, not just the filter names. A campaign may have added recent buyers, but that is a hypothesis to verify against the snapshot inputs and cutoffs. Check scoring convention and data corrections too before naming one explanation for the score change.

After checking the measurement inputs, review the actual purchase gap against the customer’s previous inter-purchase intervals. A move from 28 to 58 elapsed days may simply reflect a later reference date and a normal buying cycle. It does not establish a lost customer. Choose any follow-up using the verified history and context; the score alone does not justify a win-back message or prove that contact will change the outcome.

Cross-platform score comparisons and the risk of mixed conventions

Scoring conventions differ across platforms: one tool may use a 1-to-5 scale while another uses 1-to-3, and the direction of the scale can differ too. This means that a score exported from one system and read in another can be actively misleading without a careful review of the documentation for both tools.

A practical risk arises when a team uses CasperBrain for analysis and exports a segment list for execution, then tries to reconcile that list with scores from a different platform used by another part of the business. If both systems have scored the same customers but used different conventions and different windows, the composite codes will not match — and neither will the implied priority order.

Raw values are a safer starting point only when definitions and scope match. Align reference date and timezone, customer identity and deduplication, valid-order and refund/cancellation rules, currency, and the exact order window before comparing days, distinct orders or spend. Missing definitions make comparability unknown, not automatic. Vendor sources here introduce model-dependent customer scoring; this matching checklist is the guide’s operational reasoning. Keep each composite with its original tool, convention, window and snapshot.

Sources: RFM Analysis: Definition and Segmentation Guide — Shopify · Customer Scoring Models: Types and How to Build One — Shopify

Summary: three questions to ask every time a score changes

RFM codes are relative ranks under a stated population, reference date, order window and scoring convention. A focal customer need not place a new order for a code to change. Compare three inputs first: the reference date behind raw recency, the peer distribution and included population, and the orders included in the F/M window. Uniformly adding days to everyone’s recency preserves their order when those other inputs and rules stay fixed.

Before acting, ask: which raw values changed and which reference dates were used; which peers, population members or windowed orders changed; and whether the scoring convention and rules were the same. Those checks distinguish possible measurement explanations. They do not prove that a customer’s needs changed or that a particular campaign is warranted.

Use the score as a pointer for reviewing purchase history, not as a verdict. An unusually long gap relative to that customer’s past buying cycle may deserve attention, but the code does not explain the reason or guarantee that a campaign will reverse it. Combine the dated observations with relevant product and customer context before choosing a next action.

Sources and editorial method

Examples are fictional and contain no customer records. Prepared by the CasperBrain team with AI drafting assistance; facts and language are checked before publication.