Aug 11, 2026 · 11 min read
RFM Segmentation on Shopify (No App Required)
First-hand guidance from the Daymark team on analytics workflows, growth reporting, and the operational metrics teams use to make decisions.
You can run a complete RFM segmentation from a plain Shopify order export, with no app installed and no code. RFM scores every customer on three things pulled straight from their order history: Recency (how many days since their last order), Frequency (how many orders), and Monetary (how much they've spent). You rank customers into 1-to-5 scores on each, then combine the scores into named segments like Champions and At Risk. This guide walks the whole thing, from the export to a segment-action table you can act on this week.
This is the flagship how-to under the customer segmentation for D2C pillar. If you want the wider set of segmentations first, start there. If you're here for RFM specifically, keep reading.
What RFM Scores, and Why Three Axes
RFM works because the three axes catch different problems that any single metric misses. Recency is the strongest predictor of whether someone buys again: a customer who bought last week is far more likely to buy next week than one who bought a year ago, regardless of how much they've spent historically. Frequency captures habit. Monetary captures value per order.
Used together they separate customers that any one metric would lump together. A high-Monetary, low-Recency customer is a past big spender who's slipping away, which is a very different situation from a high-Monetary, high-Recency customer who's actively loyal. The same total spend, opposite actions. That's the entire reason to score three axes instead of just sorting by lifetime revenue.
Before You Start: What You Need
You need one thing: an order export with a customer identifier, an order date, and an order total. In Shopify, go to Orders, then Export, and choose all orders (or a rolling window like the last 12 to 24 months). The CSV includes Email, Created at, and Total, which is everything RFM requires. The steps below turn that file into scored segments.
Step 1: Roll Orders Up to One Row Per Customer
The export has one row per order. RFM needs one row per customer. Group by email and compute three values for each customer:
Recency = days between today and the customer's most recent order date
Frequency = count of the customer's orders
Monetary = sum of the customer's order totals
If you're in a spreadsheet, a pivot table on Email gives you Frequency (count of orders) and Monetary (sum of Total) directly. For Recency, take the max Created at per email, then subtract it from today's date. You now have a table like this:
| Customer | Last order | Recency (days) | Frequency | Monetary |
|---|---|---|---|---|
| A | 8 days ago | 8 | 6 | $540 |
| B | 15 days ago | 15 | 4 | $220 |
| C | 40 days ago | 40 | 2 | $95 |
| D | 190 days ago | 190 | 5 | $610 |
| E | 210 days ago | 210 | 1 | $48 |
| F | 320 days ago | 320 | 1 | $65 |
Step 2: Score Each Axis 1 to 5
Now convert each raw number into a 1-to-5 score using quintiles, meaning you split your customers into five equal-sized groups per axis. The top 20% get a 5, the next 20% a 4, and so on. The one reversal to remember: for Recency, lower days is better, so the most recent buyers get the 5.
R score: most recent 20% = 5, ... least recent 20% = 1
F score: most orders 20% = 5, ... fewest 20% = 1
M score: highest spend 20% = 5, ... lowest 20% = 1
Quintiles matter more than fixed thresholds because they adapt to your business. "Bought in the last 30 days" means something different for a coffee brand than for a mattress brand. Ranking within your own base sidesteps that. Applied to the six sample customers above, the scores come out like this:
| Customer | Recency | R | Frequency | F | Monetary | M | RFM |
|---|---|---|---|---|---|---|---|
| A | 8 | 5 | 6 | 5 | $540 | 4 | 554 |
| B | 15 | 4 | 4 | 4 | $220 | 3 | 443 |
| C | 40 | 3 | 2 | 2 | $95 | 2 | 322 |
| D | 190 | 2 | 5 | 5 | $610 | 5 | 255 |
| E | 210 | 1 | 1 | 1 | $48 | 1 | 111 |
| F | 320 | 1 | 1 | 1 | $65 | 1 | 111 |
Customer A scores 554: recent, frequent, high spend, a Champion. Customer D scores 255: low Recency but top Frequency and Monetary, a past-best-customer going quiet. Sorting by Monetary alone would have hidden D's risk entirely, because D is one of your highest spenders.
Step 3: Map Scores to the 9 Standard Segments
You don't act on 125 individual RFM codes. You group them into a handful of named segments defined by ranges of R and combined FM (average the Frequency and Monetary scores into one number). These nine are the standard set used across ecommerce RFM, and they're enough to drive real flows.
Apply the rules top to bottom and take the first one a customer matches, so everyone lands in exactly one segment. The order is deliberate: the high-value and win-back segments are checked before the general ones, so a lapsed big spender is caught as Can't Lose Them before the Loyal rule can claim them.
| Segment | Rule (R, FM) | Who they are | The action |
|---|---|---|---|
| Champions | R 4-5, FM 4-5 | Recent, frequent, high spend | Reward. Early access, referral ask, VIP perks. No discount needed. |
| Can't Lose Them | R 1-2, FM 5 | Former best customers, now silent | Aggressive win-back. Direct outreach, best offer. |
| At Risk | R 1-2, FM 3-4 | Good customers going quiet | Win-back before they churn. Personalized reminder, then an offer. |
| Loyal | R 3-5, FM 3-5 | Buy regularly, solid value | Upsell and cross-sell. Ask for reviews and referrals. |
| Potential Loyalists | R 4-5, FM 2 | Recent, buying more than once | Nurture into a habit. Onboarding flow, replenishment reminder. |
| Need Attention | R 3, FM 2 | Mid-value and cooling | Reactivate with a limited-time offer or a check-in. |
| New Customers | R 4-5, FM 1 | Just made a first order | Strong welcome flow. Set up the second purchase. |
| Promising | R 3, FM 1 | Recent first-timers, low spend | Build awareness. Educate on the range, low-pressure. |
| Hibernating / Lost | R 1-2, FM 1-2 | Low everything, long gone | Low-cost automated win-back, then suppress. Don't spend margin here. |
The value is in the split between Champions and Can't Lose Them. Both may have spent the same lifetime total. One is thriving and should never get a discount. The other is walking out the door and warrants your best offer. Treating them identically, which a lifetime-revenue sort would do, wastes margin on one and loses the other.
Step 4: Turn Segments Into Actions
A segment sitting in a spreadsheet does nothing. The point of RFM is that each segment has a distinct message and a distinct economics, so wire each one to a flow. Champions and Loyal customers get retention and advocacy asks with no discount, because they'll pay full price and a code just erodes margin on people who were already buying. At Risk and Can't Lose Them get win-back sequences, escalating to an offer only if a reminder doesn't work. Hibernating gets one cheap automated attempt, then suppression, so you stop paying to email people who've left.
Two numbers keep this honest. Read the segments against repeat purchase rate to see whether your Potential Loyalists are actually converting into Loyal customers over time. And judge win-back economics against lifetime value, not the size of a single recovered order, so you don't overspend reactivating customers who were never worth much.
Step 5: Refresh It, Because RFM Moves
RFM is not a one-time report. Recency shifts every single day: a Champion who doesn't buy slides toward At Risk on its own, without any change on their part. If you score once and reuse the file for three months, half your segments are wrong by the end, and your flows send Champion messaging to people who've already gone quiet.
For a manual spreadsheet process, re-export and re-score at least monthly. If the segments drive automated email flows, they need to refresh weekly or faster, which is the point where a live connection to your store data beats a repeated export. The scoring logic doesn't change. The customers inside each segment do.
A Note on Cohorts vs RFM
RFM tells you where customers are today. It doesn't tell you how a given month's new customers retain over time, which is a cohort question. The two are complements. Use RFM to decide who to message now, and use a cohort retention analysis to judge whether your acquisition is producing customers who stick. A brand with lots of Champions but collapsing cohort retention has a leak that RFM alone won't surface.
Frequently Asked Questions
How do you calculate RFM score from a Shopify export?
Export your orders, then group by customer email to get three numbers each: Recency (days since last order), Frequency (order count), and Monetary (total spend). Rank customers into quintiles on each axis, scoring the top 20% a 5 down to the bottom 20% a 1, remembering that for Recency fewer days is better. Combine the three scores, then map ranges of them to named segments like Champions and At Risk.
Do you need an app to run RFM on Shopify?
No. A plain order export gives you customer email, order date, and order total, which is everything RFM needs. A pivot table produces Frequency and Monetary directly, and a date subtraction gives Recency. Apps mainly save the manual re-scoring each month and keep segments fresh automatically. For a first pass, the export plus a spreadsheet is enough to build all nine standard segments and act on them.
What are the 9 RFM segments?
The standard nine are Champions, Loyal, Potential Loyalists, New Customers, Promising, Need Attention, At Risk, Can't Lose Them, and Hibernating or Lost. They are defined by ranges of the Recency score combined with Frequency and Monetary. The key contrast is Champions versus Can't Lose Them: similar lifetime spend, opposite recency, so one gets rewarded at full price and the other gets an aggressive win-back.
What is a good RFM score?
Scores are relative to your own customer base, not an absolute benchmark, because they come from ranking customers into quintiles. A 555 is your best possible customer: most recent, most frequent, highest spend. There is no universal cutoff for good, since the quintiles shift with your data. What matters is the segment a score maps to and the action attached, not the raw three-digit number itself.
How often should you update RFM segments?
At least monthly for a manual spreadsheet process, and weekly or faster if the segments drive automated email flows. Recency changes every day, so a customer scored as a Champion can slide toward At Risk within weeks without buying again. Stale segments send the wrong message, like a win-back offer to someone who just bought. Refreshing keeps each customer in the segment that reflects their current behavior.
Should you discount your best RFM segments?
Generally no. Champions and Loyal customers buy at full price, so a discount code erodes margin on people who were already going to purchase. Reserve offers for the win-back segments, At Risk and Can't Lose Them, where a code is often the only thing that reactivates a lapsing customer. Reward your best customers with access, recognition, and referral asks instead of price cuts.
Conclusion
RFM turns a raw Shopify order export into a prioritized map of your customer base, from Champions you reward to Can't Lose customers you win back, using only recency, frequency, and monetary value. Score each axis 1 to 5, map the combinations to the nine standard segments, and wire each segment to a distinct action and message.
Next, connect the segments to lifecycle messaging with Klaviyo segments from store behavior, and step back to the full set of cuts in customer segmentation for D2C. To judge retention over time rather than at a snapshot, run a cohort retention analysis on Shopify.