Skip to content
The full method, free

RFM segmentation in Klaviyo: the complete do-it-yourself method

Score every customer on three things you already track: last order, order count, total spend. No data team, no app. Leave with working segments. Free and ungated, start to finish.

Ranked buyers, five equal groups 5 4 3 2 1 write back Klaviyo profile rfm_recency 1 to 5 rfm_frequency 1 to 5 rfm_monetary 1 to 5 segments and flows fire off these

Score customers against your own list

A fixed threshold has to guess what recent means.

The teardown

Four steps, in your own account.

  1. Export three columns

    Pull one row per customer from Shopify or Klaviyo with three columns: last order date, order count, total spend. Shopify's customer export has them, and a Klaviyo profile export works too. Any export will do as long as the file carries an email column and those three numbers, which is everything the method needs.

  2. Rank into quintiles

    Rank every customer on each of the three columns, cut each ranking into five equal groups, and score 1 to 5, with 5 as the best. A percentile or NTILE function does it in any spreadsheet. One nuance: most of your list likely has exactly one order, so a large share will tie on Frequency. That is expected. Score the tie as one group and move on.

  3. Write the scores back

    Import the scores to Klaviyo as three custom properties on each profile: rfm_recency, rfm_frequency, rfm_monetary. A CSV import does it; match on email. This write-back is the point of the method. Once the scores live on each profile, every segment, campaign, and flow in the account can read them. Left in a spreadsheet, they drive nothing.

  4. Wire segments and flows

    Build the ten segments as Klaviyo segments with conditions on rfm_recency, rfm_frequency, and rfm_monetary, using the mapping table below. Then point the program at them: campaign audiences, flow filters, exclusions. A winback that only fires for At Risk reads differently than one that fires for everyone. When the segments are live, the migration playbook in the flows teardown is the next read.

Scores to segments

From three scores to ten segments

Each row maps score ranges on the three properties to one named bucket; a customer lands in the first row they match. Treat the ranges as a starting point and tune them to your data.

Segment R F M What it means
Champions 4 to 5 4 to 5 4 to 5 Recent, frequent, high spend. Your best customers, right now.
Loyal 3 to 5 4 to 5 3 to 5 Buy regularly and spend well, just below Champions.
Potential Loyalists 4 to 5 2 to 3 2 to 3 Recent buyers with a couple of orders and room to climb.
New Customers 5 1 1 to 2 Bought once, very recently. The second-order window is open.
Promising 4 1 1 Recent, low frequency, modest spend. Early signal, before a repeat habit forms.
Need Attention 3 3 3 Above average once, now slipping on recency. Watch this edge.
About To Sleep 2 2 2 Recency and frequency both fading. The drift has started.
Can't Lose Them 1 4 to 5 4 to 5 High past frequency and spend, long since silent. Worth a real effort.
At Risk 1 to 2 3 to 5 3 to 5 Spent real money, used to buy often, gone quiet for a while.
Hibernating 1 to 2 1 to 2 1 to 2 Low on all three. Far down the ladder, still reachable.

The standard mapping used across the industry, aligned with the ten segments in the lifecycle playbook. Tune them to your own data. A few score combinations will not match any row. File those with the nearest neighbor and move on.

Where tutorials stop

The judgment calls that make the scores true.

Subscriptions skew Frequency

An auto-ship order is a scheduled billing event, so it says nothing new about intent to buy. Left in the ranking, subscribers crowd the top Frequency quintile and look like your most loyal buyers. Standard operator practice: score subscribers separately from one-off buyers, or the Frequency dimension stops meaning what you built it to mean.

One-order customers

Around half a typical list has exactly one order. A naive ranking breaks that tie arbitrarily and scatters identical customers across scores. Keep them coherent: give the one-order group a single Frequency score so New Customers and Promising stay meaningful segments instead of random slices of the same behavior.

Re-score monthly

Recency moves every day the customer does not buy, so scores drift out of date on their own. Monthly re-scoring is the workable floor; quarterly lets segments go stale between passes. A stale score misroutes every campaign and flow that reads it, and nothing in the account will warn you.

Tune cut lines per brand

A furniture or jewelry brand with two orders a year needs different lines than a consumable with twelve. The quintile method gets every brand a working first draft. The tuning, moving a Monetary line or merging thin buckets, is the operator work, and it is worth doing after a month of watching the segments.

One score, worked through

R 1 · F 5 · M 5 maps to Can't Lose Them

Take one customer. She has ordered six times for $860 total, but her last order was five months ago in a brand where the typical gap is six weeks.

High Frequency, high Monetary, fading Recency: that combination maps to Can't Lose Them. The move is a direct winback, sent early and worth reading, instead of the monthly promo she is already ignoring. The two scores that took years to earn are still a 5, and the one that decays is the only one slipping.

After the scoring

You can run all of this yourself

Scoring is the easy half. The system is what comes after: re-scoring on a cadence, acting differently per bucket, and measuring whether customers migrate up month over month. That migration read has its own teardown; the flows playbook covers which campaign moves which bucket. If you would rather we build and run it, that is what the fit call is for. Either way, it lives in your Klaviyo and stays yours.

Get the lifecycle worksheet

The RFM segments and the flows that should already be running. Built to use today.

Your worksheet, plus the occasional note worth reading.

Fair questions

What operators ask

Do I need a data team or an app for this?

No. The whole method runs in a spreadsheet: export, rank with a percentile or NTILE function, import the three properties back through CSV. That covers most lists comfortably. When your list gets big enough that the monthly manual pass hurts, automate the same method; the scores and segments do not change, only who runs the math.

How is this different from Klaviyo's built-in segments?

Klaviyo's predictive fields, expected date of next order, predicted CLV, are useful and worth using. RFM scores are different in kind: transparent math you can audit, cut lines you can tune per brand, and properties you own on the profile. Use both: predictions as a check, RFM as the segmentation you control.

How often should I redo the scoring?

Monthly is the floor. Recency decays daily, so every month you skip, more customers sit in segments they have already left. The failure is silent: campaigns keep sending and flows keep firing, all routed on last quarter's list, with nothing in the account to flag it. Put the re-score on a calendar, same day each month, so every segment routes on current data.

Your scores, your segments, your account

This page is the whole method; a spreadsheet and an afternoon will run it. Or book the fit call and we score, build, and run it inside your Klaviyo, on data you own. If we ever part ways, all of it stays.

More from this series: the lifecycle playbook our Klaviyo Composer review segment migration, the KPI that compounds

Sources

Operator-practice notes on this page (subscription scoring, relative thresholds) follow standard industry guidance; the one-order share of a typical list is a common operator observation to validate on your own export; validate every choice against your own data.