Guide · The Donut Agency
From Beginner To Advanced Segmentation
Four levels of segmenting a DTC list, in the order you should climb them: engagement, purchase history, the nine-box grid, and the product layer on top. This is the how, not the theory.
Everybody should grow their list, and guide one in this series is about how. But a big list is not automatically a good list. If a gamified popup handed you a 20% sign-up rate and none of those people ever buy, you did not build an asset, you signed up for a monthly bill. Klaviyo charges you to store those profiles and Meta already charged you for the traffic that produced them.
A good list is a mix: prospects you acquired recently, one-time customers old and new, repeat customers still buying, and repeat customers who stopped two years ago. It is only a good list if you know which of them you are talking to at any given moment, and that is what segmentation is for.
Most brands are stuck on level one and think they have finished. Here is the whole ladder.
Section 1
A good list is a mix, and sorting it has four levels
Segmentation gets discussed as though it were one thing you either do or do not do. It is four things, stacked, and each level answers a question the level below it cannot.
| Level | Sorts people by | Answers | Most brands |
|---|---|---|---|
| 1. Engagement | Opens and clicks | Who is safe to mail? | Live here |
| 2. Purchase history | Recency and frequency | What should I say? | Talk about it |
| 3. The nine boxes | Both axes at once | What does each group get, and how often? | Rarely reach |
| 4. Product layer | What they bought | Which product do I put in front of them? | Almost never |
The order matters. Level one is a filter and it never goes away, but on its own it cannot tell you a single thing about what to write. Levels two and three decide the message. Level four decides the product inside the message. Skip ahead and you get a beautifully targeted email sent into a spam folder; stop at level one and you get perfect deliverability on an email that says nothing to anyone.
Ideally every person on your list is a repeat customer who buys every single day. That is not going to happen, and we are trying to be realistic here.
Section 2
Level 1: engagement, and why it is not enough
The beginner move, and everybody does it. If somebody opened or clicked recently, send them the next campaign. Everybody else gets nothing, and the reporting stays beautiful.
The standard shape of this is a set of nested windows, and they are worth naming because the rest of the guide refers back to them. Engaged 30 days is the workhorse. Engaged 90 and 180 are progressively looser rings around it. Prospects usually get tighter windows than customers, because somebody who has never bought has to show more intent to earn the same reach.
None of that is wrong. Section 9 is entirely about why you keep it. But look at what the sort is actually reading.
What an open tells you
That somebody looked at a subject line. Under Apple Mail Privacy Protection it may not even tell you that, because the open can be machine-fired before a human sees anything. It has never once told you whether that person has given you a dollar.
So level one is a safety system. It protects the channel and it decides who is safe to mail. It cannot decide what to say, because the axis it sorts on has nothing to do with the thing you want. The axis that does is purchase behaviour, and that is level two.
Section 3
Level 2: RFM without the mysticism
3.1 What the letters actually mean
People say RFM the way you would name a classified programme. Advanced RFM analysis. We must be data nerds, we have PhDs, we hired a team. It is three words:
| Letter | Means | The question |
|---|---|---|
| R | Recency | How recently did they buy? |
| F | Frequency | How many times have they bought? |
| M | Monetary | How much have they spent? |
Monetary is a word that could not be more simple. We all understand what money means, in every language. All RFM does is read past purchase history and sort people into groups, so that each group can get a different message.
Take somebody who has bought three times a year for five years and spent an insane amount with you, and somebody who placed their first order yesterday. Send them the same email and you are failing one of them. The new buyer wants the natural next thing to buy. The five-year buyer has seen the natural next thing forty times and wants to know what is new. Point the new buyer at your bestsellers, not the experimental flavour, because if their second purchase is a disappointment there is no third.
3.2 You can usually drop the M
Monetary correlates well with recency and frequency. On most catalogues it is a third axis that repeats what the first two already said, and it doubles the number of boxes you have to maintain to get there.
It earns its place when your catalogue spans wildly different price points. If you sell both a pen and a tank, then one tank buyer is worth a thousand pen buyers and you cannot treat frequency as a proxy for value. Sun Tzu might disagree. Sun Tzu is not on the call. Whatever you sell probably sits inside one price band, so drop the M and keep the model simple enough that somebody will actually maintain it.
If you do keep monetary, score it on margin
A high-revenue customer who only ever buys the discounted, low-margin SKU is not your best customer. Rank on contribution margin rather than revenue before you call anyone a VIP, or you will build a loyalty programme for the people who cost you the most to serve.
3.3 Score all three axes when you are setting strategy
When you are setting strategy rather than picking an audience for Thursday, score all three axes. Rank customers into quartiles on each, one being best, which self-calibrates to your own distribution instead of borrowing somebody else’s thresholds. That gives up to 64 cells, which nobody can run a calendar off, so people collapse them into named statuses: champions, loyal, high potential, new, at risk, and the ones worth sunsetting.
Section 4
Level 3: nine groups, each getting a different email
4.1 Two axes, nine groups
Drop the monetary axis and you are left with something you can hold in your head. On frequency, people have bought from you zero times, one time, or more than once. On recency, they are recent, at risk, or lapsed. Multiply them and you get nine groups, each of which wants a different email.
Active repeat
Everything. New launches, cross-sell, restock.
Slipping repeat
Educational and promo. Cut the product emails.
Dormant repeat
Go deep. Founder letter, then your biggest offer.
New customer
Bestsellers and the obvious next product.
Stalling 1x
Reduced frequency. Educational and promo.
Dormant 1x
Promo-led. They owe you nothing.
Fresh prospect
Full rotation. Everything except the deepest sale.
Cooling prospect
Fewer sends. Educational and promo only.
Dead prospect
Price the carry. Sunset, then suppress.
Recency bands are set from the brand’s own median time between orders, not from 30 and 90 days. See section 4.2.
4.2 Set the bands from your own data
Thirty and ninety days are placeholders, and they are wrong for plenty of brands. Somebody who buys pens may well need pens again in three months. Somebody who bought a tank hopefully does not need another one unless there is a war on.
The band you want is your own median time between orders, and there are two ways people get this wrong. They use the mean, which a handful of enormous gaps drags upward, when they should use the median. And they pool every customer into one number, when the gap from first to second order is almost always longer than second to third, which is longer than third to fourth. Repeat buyers compress their own cadence. One pooled average is wrong for everybody in the file.
| Instead of | Compute | Then |
|---|---|---|
| A 90-day lapse rule | Median gap, per order count | Lapse each customer against the interval for the order count they are actually on |
| An average days-between-orders | Median, not mean | Right-skewed gaps stop inflating the number |
| A global winback delay | Projected next order date per customer | Flag overdue, and cap overdue at about 12 months |
Past twelve months overdue, somebody is not due. They are gone, and they belong in a reactivation campaign rather than a replenishment nudge.
Short cycle versus long cycle
Socks, underwear, supplements and anything consumable: ninety days of silence is a real signal and a steep reactivation offer is warranted. Bedding, furniture, home goods and considered purchases: ninety days is just Tuesday, and pushing a discount at month three buys a discount for somebody who was going to buy in month five anyway.
4.3 What each of the nine groups gets
There are four content buckets to allocate across the grid: promotional, product, educational and authenticity. Authenticity is the founder letter, the review, the story about why the thing exists.
| Group | Frequency | What works | What to withhold |
|---|---|---|---|
| Fresh prospects | Full rotation, every send | Everything: educational, product, promo | Your deepest sitewide sale |
| Recent customers | Full rotation | Cross-sell, bestsellers, restock | The deep discount they just missed |
| At risk, any type | Cut it back | Educational and promo | Product emails they have started tuning out |
| Dormant prospects | Rarely, if at all | Your single biggest offer | Everything else |
| Dormant 1x | Low | Promo-led | Subtlety |
| Dormant repeat | Low but worth it | Founder letter, then a deep offer | Nothing, go as far as the margin allows |
The one rule that costs money when you break it: keep recent customers out of your biggest sale. They paid full price a week ago. Show them 40% off the thing sitting in their hallway and you have bought yourself a support ticket and a refund request instead of a second order.
For the at-risk group, do not guess which content works. Klaviyo will break campaign performance down by segment. Look at how that group performs against the others by email type, keep the two that work, and stop sending the rest.
4.4 Level 4: put the product layer on top
The nine boxes tell you what kind of message somebody gets. They do not tell you which product to put in it. That is the fourth level, and it is what personalisation actually means once you strip the word of its marketing.
Take one box, say lapsed repeat customers, and cut it by a product they have already bought. Now recommend whatever people who bought that product buy next. Not what is bought alongside it in the same basket, which is a different question with a different answer. What comes next in time.
| Layer | Segment | The email |
|---|---|---|
| No layer | Lapsed repeat customers | One generic winback to everybody |
| Category layer | Lapsed repeat customers who bought product X | The product that usually follows X, with a reason |
One layered send replaces what would otherwise be three generic ones, which matters as much for restraint as for relevance: without the layer you either send one vague email or you inundate the same people three times.
This level needs real data
Do not build a past-purchasers-of-X segment on product data nobody has refreshed in six months. And if you have not got the next-purchase path, connect the store and read it rather than guessing which product follows which.
Section 5
You pay every month to store people who never buy
5.1 Count the conversions email actually caused
Lapsed prospects signed up a long time ago and have never bought anything. Before you decide they are worthless, run the numbers, because some of them do convert and the whole argument turns on how many.
The naive version is to count how many buyers last month were lapsed prospects, find some small percentage, and feel reassured. That overstates email’s case badly, because most of those people did not buy because of an email. They saw an ad, or came back on their own, and the email list happened to be holding their address at the time. Those conversions survive suppression untouched.
So the real question is narrower: how many of them clicked an email in the few days before they bought? That click window is what separates conversions your list caused from conversions your list merely witnessed.
5.2 Price both sides
| Side of the ledger | How to get it |
|---|---|
| Cost per year | Billed profiles in the band × your marginal $/1,000 profiles × 12. Use the real invoice, not the published tier, if the account is big enough to be negotiated. |
| Contribution per year | Only the converters who clicked within a few days of buying, times the band's own measured order value, times contribution margin. |
| Conversion rate | Measured against a matured cohort: profiles old enough to have fully completed the band you are measuring. |
Keep the bands where email-attributable contribution clearly beats the carrying cost. Cut the ones where cost beats even a generous reading of attribution. The band in the middle is a judgment call, and deliverability pressure should break the tie toward cutting.
5.3 Cut without a guillotine
- Start with the free win. Profiles that never subscribed are billed and cannot legally be mailed. Suppressing those costs you nothing at all and is the obvious first move.
- Send a sunset sequence first. Two or three emails saying plainly that this is the last one unless they do something. Suppress the non-responders, not the whole band on day one.
- Check they were ever actually mailed. A profile that never received anything did not fail to engage. It was never asked.
- Suppression is not deletion. History stays, the profile stops being billed, and most platforms will bring somebody back automatically if they purchase.
The deliverability dividend is the part nobody puts in the model. A large disengaged band drags your open and click rates, and those rates are what the inbox providers use to decide where the rest of your list receives you.
Section 6
Give the discount to the people it actually moves
A discount is only worth giving to somebody whose behaviour it changes. Give it to a person who buys from you every month anyway and you have not bought an order, you have bought the same order at a worse price.
At the other end of the grid, somebody who has not bought in two years can take a deep one. You had written that revenue off. Anything you get back is a bonus, like finding money in a coat pocket. You were not expecting it, and you will take it.
| Group | Offer posture | Why |
|---|---|---|
| Active repeat | None, or non-discount perks | They convert without it. Every point is pure margin given away. |
| Recent customer | Nothing deep | They just paid full price. A deep offer now reads as a bill they overpaid. |
| At risk | Modest, or none yet | Try content before cash. Discount is the last lever, not the first. |
| Dormant 1x | Promotional lead | One order, no proof of a habit. The offer has to do the work. |
| Dormant repeat | As deep as margin allows | Proven buyers. Reacquisition against revenue you already wrote off. |
Know your break-even before you set the depth
Break-even ROAS is one divided by your gross margin percentage. The thinner the margin, the more work each discounted order has to do just to get you back to level. Set the ceiling on your reactivation offer from that number, not from what feels generous.
Section 7
Fire the flow the moment somebody changes group
The interesting thing about these groups is that people move between them, and the movement itself is a trigger. Somebody who always bought crosses from active repeat into at risk. That transition is a moment, and you can fire a flow on it, which beats waiting for a monthly campaign to notice.
What you should not do is send one email, get ignored, and treat it as a personal betrayal. I am so offended you did not take my offer, it is me, not you, I am sunsetting. That is money left on the table over a single non-response. Build the follow-up. Two, three, four touches, spaced off the interval you computed in section 4.2 rather than off a round number.
A missing flow loses people one at a time and you never see it happen, which is exactly why the flow layer gets skipped in favour of the campaign calendar somebody has to fill in on Monday.
The first repeat is the whole game
For most brands the order-to-order repeat rate stabilises after the second or third order. Getting somebody from one order to two changes their entire forward trajectory, which makes the new-customer box the highest-leverage square on the grid even though the dormant boxes look more dramatic.
Section 8
Judge a segment on revenue per unsubscribe, not open rate
8.1 Revenue per unsubscribe, not open rate
Every decision in this guide is a trade: reach more people, burn more of them. So read each expansion as an exchange rate. What did the extra reach add in revenue, and how many subscribers did it cost you permanently?
Unsubscribes, not spam complaints, are usually the binding constraint. Complaint rates normally sit far below the level that gets you in trouble, while every unsubscribe is a permanent loss of all future revenue from that person. Include a ring while the revenue it adds beats the forward value of the subscribers it burns.
Two measurement traps worth naming. Opens are inflated by machine fetching and should not decide anything. And order count is not revenue: a group can look dead on orders and be fine on dollars, because the people out at the edges often buy bigger when they do buy. Go to dollars whenever the data lets you.
8.2 Small segments produce noisy numbers
When you slice a list this finely, the outer boxes get small fast. A dormant-repeat segment might be producing single-digit orders a month, and a rate computed on single digits is noise wearing a percentage sign.
Section 9
Protect deliverability when you stop sorting by opens
Here is the problem nobody warns you about when you move from level one to levels two and three. You have just stopped sorting people by whether they engage with email and started sorting them by whether they buy. Those are not the same population.
Some of your best customers never open anything. They buy because they saw an ad, or because they ran out, or because they walked in through search. Under the old system they were quietly filtered out. Under the new one they are in your dormant repeat box and you are about to mail them your deepest offer. Good for revenue, potentially bad for the inbox, because Gmail and Yahoo are watching how the people you mail respond and drawing conclusions about you.
9.1 Why the engaged-30-day segment exists in the first place
The reason so many accounts run everything through Engaged 30 Days is that it holds the open rate up. The working target most operators keep to is somewhere around 40% to 50%, and a segment tight enough to clear that is a segment the inbox providers keep delivering.
One caveat on that number
The open rate you are protecting is itself inflated by machine fetching, so treat it as a relative floor you do not want to fall through rather than a measurement of human attention. What actually moves inbox placement is the ratio of people who do something to people who ignore you, and that ratio gets worse the more dead weight you add to a send.
9.2 Run the exclusion underneath everything
The fix is not to go back to level one. It is to keep level one running as a filter beneath the purchase-based segments. Build the audience once, exclude it from every campaign, and let the nine boxes decide everything else.
Klaviyo now has audience optimization built in, which will restrict the people unlikely to interact in a click and is the fastest way to do this. If you would rather build it yourself, the segment you want is the inverse of an engagement window:
| Build | Definition | Use |
|---|---|---|
| Unengaged 30d | Inverse of Engaged 30 Days | Tightest exclusion. Smallest sendable list. |
| Unengaged 90d | Received at least 10 campaigns in the last 90 days and opened zero | The usual working exclusion |
| Never engaged | On the list long enough to have been mailed, never opened or clicked once | Suppression candidates, see section 5 |
The 10 is arbitrary and you should change it. It has to reflect how much you actually send in ninety days. If you send twice a week, ten campaigns is barely a month of evidence and the segment will be too broad. If you send twice a month, ten campaigns is more than the window holds and the segment will be nearly empty. Raise the number to make the exclusion tighter and your sendable list bigger, lower it to do the opposite.
9.3 Excluding the unengaged costs you a few buyers
You will exclude some people who would have bought. That is the honest trade and it is worth naming rather than pretending the exclusion is free. What you get back is that everybody else, including every customer in every box on the grid, keeps arriving in the inbox instead of the promotions graveyard.
Level one stops being your targeting the moment you reach level two. It becomes your floor. Every purchase-based segment in this guide is sent minus the unengaged, always, no exceptions.
Want this run on your account instead?
Get a free Klaviyo audit. We pull your numbers and show you exactly where the revenue is leaking.
Get the free audit