Guide · The Donut Agency
The SMS Money Leak
Why most brands lose thousands a month on SMS, and the segmentation math that fixes it. For brands doing $200K+ a month.
Open your SMS reporting. You can see recipients, clicks, and revenue for every campaign you have ever sent. Now find the cost of each send.
It isn't there. Your platform reports SMS revenue campaign by campaign, and reports your messaging spend as one lump sum on an invoice at the end of the month. The two numbers never meet on the same screen.
That single reporting gap is why this leak survives at brands with sophisticated teams. Nobody is hiding anything from you. It just takes deliberate work to put cost and revenue in the same row, and almost nobody does it. So SMS gets judged by the only numbers the platform volunteers: revenue, clicks, and a vague sense that texts feel expensive.
This guide puts those numbers in the same row. We start by killing the three beliefs that create the leak, then rebuild the program around three questions: the right people, the right content, and the right frequency.
Section 1
Myth 1: SMS is email with a shorter character limit
This is the default. The calendar gets built for email, then the same calendar gets duplicated for SMS, sometimes with the words trimmed. Same sends, same audience logic, same broad segments.
It is the most expensive mistake in the channel, and it happens because email trained everyone badly.
In email, an extra recipient costs approximately nothing. Your ESP charges by list size, not by send, so the marginal cost of adding 20,000 people to a campaign is effectively zero. That has a strategic consequence most marketers have never had to think about: in email, a wasted send is free. You can message people who will never buy, learn nothing, and pay no penalty beyond a slow drip of list fatigue. Every habit you have about audience selection was formed under those conditions.
SMS charges you per message, per recipient, every single time. A wasted send is not free. It is a line item.
Run the arithmetic on a 60,000-person list at a realistic all-in US rate of $0.012 per message segment:
| Sending pattern | Cost |
|---|---|
| One blast to the full list | $720 |
| Ten sends a month (roughly every 3 days) | $7,200 / month |
| Annualized | $86,400 / year |
One blast to the full 60,000 list
Ten sends a month
Annualized
A 60,000-person list at $0.012 per segment. A mid-five-figure annual budget that was never approved as one. It arrived one send at a time.
That is a mid-five-figure annual budget, and it was never approved as one. It arrived one send at a time.
Now the question the duplicated calendar never asks: of those 60,000 people, how many were going to buy this week? If half your list produces almost no revenue no matter what you text them, you are paying roughly $3,600 a month to reach people who do not convert. The messages deliver. The report shows revenue, because the top rings of your list do convert. The waste is invisible because it is averaged into a channel-level number that looks fine.
The reframe
Email is a reach channel and SMS is a precision channel. They can share a strategy. They cannot share a send list.
Section 2
Myth 2: SMS is intrusive, so we should only send once a month
The second myth is the overcorrection, and it usually arrives through the same door: customer service forwards three angry replies from the last campaign, someone senior sees them, and the cadence gets cut.
Let's be blunt about what that decision actually says. It says: we will make less money so that a handful of people we have never met are not mildly annoyed.
Two things are true here.
There will always be angry replies. Send once a month and you will still get them. Send once a quarter and you will still get them. On a list of 60,000 people, a nonzero number will be irritated by any commercial message at any frequency, because some fraction of any large group is having a bad day. Three angry replies is not a signal. It is the baseline noise of operating at scale, and it is a spectacularly bad input for a budget decision because it is loud, emotional, and unrepresentative.
The actual signal already exists, and it is quantitative. The public tells you exactly how they feel about your frequency, and they do it in a number: your unsubscribe rate. Not the reply tone, not the support anecdote, the opt-out rate per send and its trend. Angry replies are a sample of one. Unsubscribe rate is a census.
So the frequency question stops being emotional and becomes arithmetic:
Include a send while the contribution margin it generates exceeds its message cost plus the forward value of the subscribers it burns.
That is the whole decision. Three variables, all measurable. Section 5 turns it into a table.
And note what the arithmetic does to the myth: it does not conclude “send more.” For your best, most recent, highest-intent customers it will often say send considerably more than you currently do. For your coldest rings it will say send far less, sometimes not at all. The wrong answer is a single global frequency for everybody, which is precisely what “once a month to protect the list” is.
One thing worth naming honestly: unsubscribes matter more in SMS than in email, and not because of deliverability. An SMS opt-in is the hardest permission in your stack to earn. Someone handed over a phone number, which they guard more carefully than an email address. When a low-value blast burns that permission, you have destroyed an asset that costs real acquisition dollars to replace. That is a reason to be precise. It is not a reason to be quiet.
Section 3
Myth 3: Let's make SMS fun with educational content and emojis
This one always comes from a good place. The channel feels blunt, so somebody proposes warming it up: a little brand personality, a tip, a fact about the ingredients, an emoji or two.
It is the most expensive kind of good intention in retention marketing, and the reason is mechanical rather than aesthetic. Both halves of that suggestion, the education and the emoji, attack you at the exact same pressure point: message length, which is the thing you are billed on.
The 140-byte rule
Every SMS carries a fixed payload of 140 bytes. That single constraint generates every number that follows.
| Encoding | Single message | Each part of a split message |
|---|---|---|
| GSM-7 (standard characters) | 160 characters | 153 characters |
| UCS-2 (any emoji or special character) | 70 characters | 67 characters |
Every SMS carries a fixed payload of 140 bytes. Everything below follows from that.
Standard text packs 7 bits per character, so 160 × 7 bits is exactly 140 bytes. Unicode needs 16 bits, so you get 70. Split messages lose a few more characters to the reassembly header, which you also pay for.
Standard text packs 7 bits per character, so 160 x 7 bits is exactly 140 bytes. Unicode needs 16 bits per character, so you get 70. When a message is too long for one part, each part carries a small header telling the phone how to reassemble the pieces, which is what drops 160 to 153 and 70 to 67. You pay for the header.
The emoji cliff
This is the part that costs brands real money, because the penalty is not per character. It is global.
One emoji re-encodes the entire message. Not the emoji. The whole thing. Every character stops being a 7-bit character and becomes a 16-bit character, and your capacity drops from 160 to 70 instantly.
| Message | Segments | Cost |
|---|---|---|
| 160 characters, plain | 1 | 1.0x |
| The same 160 characters, plus one emoji | 3 | 3.0x |
One emoji re-encodes the entire message, not just itself. 160 characters plus a two-unit emoji is 162 unicode units; split parts hold 67 each; 162 ÷ 67 rounds up to 3. One emoji, triple the bill, on every recipient.
The refinement most SMS guides miss: emoji are free below 69 characters. A short message with an emoji still fits in one segment.
The arithmetic: 160 characters plus a two-unit emoji is 162 unicode units. Split messages hold 67 each. 162 divided by 67 rounds up to 3. One emoji, triple the bill, on every recipient.
And here is the refinement almost every SMS guide gets wrong. Emoji are not always expensive. They are free below 69 characters:
| Message | Units | Segments |
|---|---|---|
| 60 characters, plus 1 emoji | 62 | 1 |
| 68 characters, plus 1 emoji | 70 | 1 (exactly at the ceiling) |
| 69 characters, plus 1 emoji | 71 | 2 |
| 153 characters, plus 1 emoji | 155 | 3 |
So the correct rule is not “never use emoji.” It is: an emoji is free if you commit to a genuinely short message, and expensive the moment you do not. Which means the real problem was never the emoji. It was the combination. Education requires words, an emoji cuts your word budget by more than half, and doing both at once puts you at 3x cost to deliver a message nobody asked for.
The silent 3x nobody catches
The same cliff has a booby trap that has nothing to do with emoji. Curly quotes, curly apostrophes, em dashes, and the single-character ellipsis are not standard characters. Any one of them re-encodes your whole message exactly like an emoji does, at exactly the same 3x penalty.
Google Docs, Word, Notion, and macOS autocorrect all insert these automatically. Your copywriter types an apostrophe, the software silently converts it to a curly one, and a 160-character message that should cost 1 segment ships at 3. The two characters are visually almost identical. Nothing in the workflow flags it.
At 60,000 recipients and $0.012 per segment, that invisible apostrophe costs $1,440 in avoidable spend on a single campaign.
Make this a mandatory pre-send step
Draft SMS in a plain-text editor, and run find-and-replace before every send. Curly quotes to straight, curly apostrophes to straight, em and en dashes to hyphens, the ellipsis character to three periods, and strip non-breaking spaces. Do not assume your platform cleans this up. Some providers do. Klaviyo and Postscript do not document it.
Your real character budget is 112, not 160
Your platform prepends and appends content you cannot fully remove, and all of it counts against the 160.
Your platform prepends and appends content you cannot fully remove, and it all counts:
| Component | Characters |
|---|---|
| Total single-segment capacity | 160 |
| Opt-out instructions (“Text STOP to opt-out.”) | −21 |
| Separating spaces | −2 |
| Shortened link | −25 |
| Left for your actual copy | 112 |
With a brand prefix, roughly 105. A copywriter writing to 160 will ship two-segment messages every single time and double the bill without ever knowing.
Two more traps in the same family. Personalization resolves after you preview: the editor estimates about 6 characters for a first name, “Alexander” is 9, so a message previewing at 158 ships at 161 for a slice of your list and costs double for those people only, invisibly. Never let a message with a variable sit between 150 and 160; keep 10 to 15 characters of headroom. And mixed-country audiences inflate silently, because some recipients get a longer unsubscribe link than others, so one message can be 1 segment for part of your list and 2 for the rest while the character counter shows you a single version.
Where education actually belongs
None of this means education is bad. It means education is a channel decision, and SMS is the wrong channel for it. You can afford to educate in email because the marginal cost of reaching one more person is essentially zero. You can afford to educate in ads because you are paying for attention you are already buying. Both reward length. SMS punishes length twice, once through segment cost and once through reader behavior, because nobody reads a three-part text message on a lock screen.
Educate in email. Activate in SMS. Same content strategy, different jobs. The email tells the story and SMS marks the moment.
Section 4
The right people: build a stack, not a segment
Every SMS problem decomposes into three questions, in this order: the right people, the right content, and the right time and frequency. That sequence is deliberate. Content improvements applied to the wrong audience make the leak bigger, because better copy sent to people who will not buy just costs more per non-conversion. Frequency decisions made before you have segmented are guesses at a global number that should never have been global.
Fix the audience first. It is the cheapest fix, and the one with the most money behind it.
If you have read our email segmentation material, you know the core problem already: almost everyone segments too broadly. Blended engagement segments like “engaged 180 days” sound sophisticated, get built once, and then quietly run everything. They have two failures. The first costs you customers. The second costs you cash, and it is specific to SMS.
Failure one: the engagement window deletes your best future customers
If every message goes to your engaged segment, then people who fall out of the engagement window never get a chance to come back into your good graces. They stop opening, they stop receiving, they stop being reachable, and the system that was supposed to protect your program has permanently removed them from it.
To see why this is expensive, look at how customers actually repurchase. Real days-between-orders data from a ~$30M DTC brand, roughly 57,000 customers in the largest cell:
The mean sits far above the median at every step, because a long tail of slow repeaters drags it. Time a winback off the mean and you fire it roughly two months after the median customer was ready.
Read the gap between those two columns, because it is the entire argument. Half of repeat buyers return within 43 to 71 days. But the average sits at 104 to 117 days. When the mean is roughly double the median, it means a thin, very long right tail: a substantial minority of your customers come back at 6 months, 9 months, 12 months, and beyond.
Now overlay the engagement logic on that curve. Between two purchases, a customer is not in-market. They are not shopping for socks in month four; they have socks. So they do not open, they do not click, and by day 90 they have aged out of your engaged segment. On day 137, when they are finally back in-market and ready to spend, you are no longer sending to them. You went silent on them precisely because they behaved normally. And your competitor's ad does not have an engagement window.
One winback flow firing once at a guessed day 60 does not cover this. Buyers are returning across a 12-month spread. A single trigger on a single day catches a sliver of that distribution and misses the rest in both directions.
Failure two: broad rings are not fine enough for SMS
Take your engaged-90-day segment. Inside that one bucket, you are treating a person who clicked 7 days ago identically to a person who last engaged 80 days ago. Radically different humans with radically different purchase probability, averaged into a single audience because the segment only has one boundary.
In email, you get away with it. The marginal cost of including the 80-day person is zero. In SMS, you pay full price for every one of those low-probability recipients on every single send. And because the deep part of the ring converts at a fraction of the top, you are not buying incremental sales. You are buying incremental cost. The revenue line still looks acceptable, because the 7-day people carry the campaign. The 80-day people are pure spend hiding inside a blended average.
The fix: stop using one segment, build a stack
- Recency rings, nested: 0-7 days, 8-14 days, 15-30 days, 31-60 days, 61-90 days.
- Customer state, crossed against every ring: prospects (never purchased), 1x customers, repeat customers.
Keep the rings nested and verify it. Recipient counts must increase monotonically as you widen, with zero violations. The measurement in the next section depends on subtraction, and subtraction is only valid if the nesting holds.
Use asymmetric windows for prospects and customers. A prospect who has not engaged in 60 days is close to worthless; a customer who has not engaged in 60 days may simply be mid-cycle and about to reorder. So prospects get tighter windows at every tier. The customer-versus-prospect split is the single highest-leverage cut in the whole stack, and in SMS it decides who is worth a paid message at all.
One practical warning: “engaged 7 days” is a function of your send frequency. If you send weekly, your 7-day ring is one send worth of signal and might contain 400 people. Below a few hundred it is operationally useless, so widen the tightest ring until it has volume.
Section 5
The right frequency: put cost and revenue in the same row
This is the section that finds the money. It is also the only part of the guide that requires a spreadsheet, and it takes about two hours.
Step 1: Fix your attribution before you measure anything
Do this first. Every number downstream is wrong until it is done.
Klaviyo's default attribution for SMS is a 5-day click window plus a 12-hour delivered window. That second one is the problem, and it is worse than most people realize. The delivered window credits SMS with revenue from anyone who merely received a text and purchased within 12 hours. No click. No engagement. No evidence the message did anything at all. On a list getting 2 to 6 texts a month, that window sweeps up a large share of your baseline organic revenue and files it under SMS. It is the single largest source of inflated SMS ROI in a default account.
The 5-day click window is a smaller version of the same error. SMS is a push channel consumed within minutes. A purchase five days after a text was almost certainly caused by something else.
Set SMS attribution to 1-day click, and uncheck deliveries
Path: account menu (lower left) → Settings → Attribution → expand the SMS channel → clear the deliveries checkbox → set click to 1 day → Save.
- It takes up to 36 hours to apply.
- Changes apply historically. Every past report will be restated. Export your current numbers first, because the SMS revenue figure you have been reporting to your board is going to move, probably down, and you want to be the person who explains that rather than the person who gets asked about it.
- Use the Compare model preview before committing. It is also the most honest picture of your real SMS performance you have ever seen.
Also worth knowing: SMS has no open tracking at all. Klaviyo's own documentation states there is no Opened SMS metric, on the reasoning that nearly everyone opens a text. So clicks and revenue are your only genuine signals. There is no soft top-of-funnel metric to hide behind, which is inconvenient for reporting and excellent for decision-making.
Step 2: Measure revenue per message sent, per cell
Not click rate. Revenue per message sent. Click rate is a broken optimization target in SMS for two reasons. First, in real account data we have seen SMS click rates of 27 to 32% that stayed nearly constant across completely unrelated sends, which is a link-preview or bot artifact, not human behavior. Second, a click that costs you $0.012 and returns nothing is a loss no matter how good the rate looks. Only revenue per message sent puts the numerator and the denominator in the same units as your invoice.
Step 3: Measure the rings marginally, not cumulatively
When you look at engaged-90d performance, you are looking at a blended average dominated by the top ring. The question you actually need answered is: what did the widening earn? Subtract absolute counts, never rates. Compute rings inside a single campaign so it is apples to apples, then pool the absolute numerators and denominators across many campaigns for stable marginal rates. Exclude your most recent send, because its attribution has not matured.
Step 4: Convert revenue to contribution margin
Revenue is not what SMS earns you. Margin is. From gross revenue (excluding tax and shipping fees) deduct refunds, then landed COGS to reach CM1, then payment processing, pick and pack, outbound shipping, and returns handling to reach CM2. For most DTC brands CM2 lands between 35% and 55% of net revenue. Those are directional anchors for modeling, not targets.
Hard gate
If you do not have per-order COGS, stop and go get it. A margin analysis built on an assumed flat margin percentage is theater.
Step 5: Now put cost in the same row
Illustrative numbers, real structure. A brand with 60,000 SMS subscribers, $70 AOV, $28 contribution margin per order, $0.012 all-in per segment, disciplined single-segment copy. One campaign, marginal ring analysis, customers only:
Revenue per message sent, by recency ring
Revenue per message falls tenfold from your hottest ring to your coldest, while the cost per message is identical for every one of them. The 61-90 day ring is 58% of the recipients and 9% of the revenue per message.
At one send, every ring clears. This is exactly why brands conclude their SMS program is healthy and stop looking. Note the decay though: revenue per message falls 10x from the top ring to the bottom. That gradient is the whole story, and it only becomes visible when you multiply by frequency.
Step 6: Add frequency, and watch the bottom fall out
0-7 day ring
4,000 people
61-90 day ring
14,000 people
The same decision, five times the frequency, applied to two rings of the same list. One ring triples its profit. The other crosses into a loss. This is why a single global cadence is always the wrong answer.
Cost scales linearly with sends. Revenue does not. Your coldest ring has a roughly fixed amount of monthly purchase intent, so sending it ten messages instead of two does not create ten times the demand. It captures slightly more of the same demand, slightly earlier, at five times the cost.
The 61-90 day ring (14,000 people), monthly
| Metric | 2 sends / month | 10 sends / month |
|---|---|---|
| Orders | 38 | 55 |
| Contribution | $1,064 | $1,540 |
| SMS cost | $336 | $1,680 |
| Unsubscribes | ~70 (0.5%) | ~420 (3.0%) |
| Destroyed subscriber value (at $8 each) | −$560 | −$3,360 |
| True profit | +$168 | −$3,500 |
The 0-7 day ring (4,000 people), same period
| Metric | 2 sends / month | 10 sends / month |
|---|---|---|
| Orders | 110 | 340 |
| Contribution | $3,080 | $9,520 |
| SMS cost | $96 | $480 |
| Profit | +$2,984 | +$9,040 |
Read those two tables together, because between them they contain the entire strategy of this guide.
Your hottest ring is wildly under-messaged. Ten sends a month to your 0-7 day customers is a $9,000 monthly profit line, and most brands send those people four texts a month because a global cadence rule is protecting a list that did not need protecting.
Your coldest ring is destroying value at high frequency. Not just unprofitable in cash terms, actively destroying an asset, because the opt-outs are permanent and the permission was expensive.
And now look at what the single global cadence does. Whatever number you pick, it is simultaneously far too low for the top ring and far too high for the bottom.
There is no correct global frequency. That is the answer to Myth 2, and it took a spreadsheet rather than an opinion to get here.
What you will find when you run this
- Two or three of your deepest cells will be unprofitable at your current cadence. Usually deep-ring prospects.
- Your top customer rings will be dramatically under-messaged, and raising their frequency will be the single biggest revenue unlock in the analysis.
- Prospects will decay faster than customers at every ring.
- Your blended SMS ROI will look worse after fixing attribution and better after fixing allocation. Both are true and both are progress.
Deliverable: a per-cell frequency plan. Not a single number. A table that says how many sends per month each cell gets, with the profit math attached.
Section 6
The right content: activation, not education
The rule follows directly from the cost structure: SMS is an activation channel. Its job is to convert existing intent into a purchase right now, not to build intent for later. Every content decision falls out of that.
What works, in order of revenue per message
- Sales and promotions. By far the highest revenue per message of anything you can send. Your promotional calendar is the backbone of your SMS program, not an occasional intrusion into it.
- New product drops. Immediate, time-sensitive, inherently newsworthy.
- Early access. Status, not discount. “You get it first” performs on repeat customers in ways “you get it cheaper” does not, and it costs you nothing in margin.
- Back in stock. The highest-intent trigger in the channel. Someone asked to be told. Tell them.
- Low stock. Genuine scarcity on something they already looked at. Note the word genuine; fake urgency in a channel this intimate costs more trust than it converts.
- Product messages, but only on three angles: curiosity (the click is the reveal), a bold promise stated flatly, or social proof of a specific kind (viral, trending, award-winning, sold out twice). Not “customers love it.”
What does not work, and why
No education. No benefits-and-features breakdowns, no long product descriptions, no brand stories, no ingredient explainers. Three reasons, and the third is the one people miss: it requires words and words are what you are billed for; nobody reads a multi-part text message; and the channel signals the wrong thing. A text implies urgency by its nature. Using that urgency to deliver a paragraph about your supply chain trains your list that your texts are not worth opening promptly, which is the one asset SMS has that email does not.
Writing rules
- The first 5 words are your subject line. They are what shows on the lock screen. Front-load the hook, never the greeting.
- One message, one CTA, one link. A text with nothing to click is a cost with no path to revenue.
- Name the deadline explicitly. “Ends tonight” beats “ends soon” because it is a fact rather than a mood.
- Shorter wins. We have tested this extensively and short messages consistently outperform longer ones. Convenient, because short is also cheaper. Treat every text as a bridge whose only job is to get someone onto your site as fast as possible.
- Stay inside 112 characters so you ship one segment. If you cannot say it in 112, the message probably belongs in email.
MMS: when the 3x is worth it
MMS costs roughly 3x an SMS segment and carries a higher carrier fee. In exchange you get up to 1,600 characters with no segment ladder and no emoji cliff, which is a genuinely different cost structure rather than a worse one. The test is straightforward: use MMS only when the image IS the message. A new colorway, a physical product reveal, a visual that carries information words cannot. For it to pay, MMS must beat SMS by more than its cost ratio on revenue per message. A text-only promo rendered as a picture is a 3x bill for zero added information.
The SMS flow architecture
Flows are where the profit density is. A triggered message reaches one person at their moment of maximum intent: very high revenue per message at very low volume. Get these live before you scale campaign spend.
Seven flows, fourteen to eighteen messages total. Flows are where SMS earns its margin, because the recipient asked for the message by doing something.
Do not build these in SMS
- Post-purchase nurture. Educational by definition. Send it in email.
- Subscription nurture. Same. Education has no room in a text.
- Subscription upcoming-order reminder. This is a high-leverage message, and it belongs in email, where you have room for an add-to-your-next-box widget and an upgrade offer. In SMS it is a cost with a cancel button attached.
That last one is the clearest illustration of the whole channel-fit principle: the same message can be your best email and a bad text. The reminder needs space to carry an upsell. SMS has no space. So it goes where the space is.
Flow timing: use your own curve
Do not use template delays for winback. Go back to your days-between-orders data and fire slightly before the median, so you catch people as they approach the reorder decision rather than after they have made it elsewhere. Using the real brand data from Section 4:
Fire ahead of the median, not on it. The vertical line is the median gap; the bar is where the message should land. Waiting until the median has passed means half your buyers already repurchased without you.
Cap at roughly 12 months, past which it is churn rather than replenishment. Never a flat 90 days for everyone. That number is in your account because it was the default, not because it was derived.
Section 7
A/B testing when every send costs money
Two things make SMS testing different from email testing, and both push in the same direction. Your list is small, because SMS lists run a fraction of email lists and every test cell is a fraction of that. And every test costs cash: an underpowered email test wastes a slot, an underpowered SMS test wastes a slot and money.
Together they mean one thing: in SMS you can only test big swings. Here is the math, at 80% power and 95% confidence:
The smallest lift you could actually detect, by audience size. On 10,000 recipients you cannot resolve anything smaller than a 39% swing in revenue per message, which means almost every SMS A/B test you have read as a winner was noise.
Read the conversion column. At 10,000 recipients, a change has to move conversion by 45% before you can reliably see it. A word swap that moves conversion 2% is statistically invisible before you press send. The test was never going to produce an answer, and it cost you $120 to learn nothing.
- Maximum 2 variations. Splitting a small list four ways detects nothing on any metric.
- Click rate is your practical primary, revenue is directional. Revenue per recipient is the metric that matters and the hardest to power. Judge live sends on revenue per message regardless; the click-primary concession is for test readouts only.
- Do not peek and do not stop early. Klaviyo calls a winner at 90% win probability with sufficient volume. Stopping on a promising lead is the fastest way to ship a false winner and build a year of strategy on it.
Testing campaigns
Ordered by expected effect size, which in SMS is the same as ordering by “can I actually detect this.”
Tier 1: test these
- Offer. % off versus $ off versus BOGO versus free gift versus free shipping. Always the biggest swing available.
- Offer framing. The same discount named differently. Clearance versus summer sale versus mega blowout versus “we overordered.” In SMS every word counts, and the words that name the deal are worth more than the words that describe the product.
- Destination. Collection page versus PDP versus pre-filled cart versus dedicated sale landing page. Where the click lands frequently beats anything inside the message.
Tier 2: worth testing at 20,000+ recipients
- Curiosity versus direct. Our read so far: direct wins for most sends, curiosity wins specifically for flash deals where the reveal is the product.
- Message length. Short versus shorter. Verify on your list, since the winner is also cheaper.
- Urgency mechanic. Named deadline versus vague scarcity.
- First 5 words, since that is the lock-screen preview.
- MMS versus SMS, scored on revenue per message net of the 3x cost.
- Audience depth. The ring comparison from Section 5 is itself a test, and the highest-value one on this list.
Do not test: single-word swaps, emoji placement, punctuation. The effect sizes sit 10 to 100 times below every floor in the table above.
Testing flows
Flows test differently: profiles enter continuously, so significance accrues over time. Treat it as an ongoing readout rather than a snapshot, and be patient, because flow volume is much lower than campaign volume.
- Holdout first. Before optimizing any flow, withhold it from a random slice and measure whether it adds incremental revenue at all. Your platform's attribution will happily credit a flow for purchases that would have happened anyway.
- Trigger delay. For cart and checkout: 10 minutes versus 1 hour versus 4 hours.
- Message count. 2 versus 3. Find where the marginal message stops paying.
- Offer escalation. No offer in message 2 versus an offer in message 2. It tells you what your discount is actually buying.
- Destination. Back to the cart versus the PDP versus the collection.
- Welcome structure. Bestseller redirect versus offer restatement as the job of message 1.
- Cross-sell timing. Before your order ships versus post-delivery.
- Winback offer depth, laddered, plus offer-only versus offer-plus-product-suggestion.
- Channel sequencing. SMS only versus email first then SMS. This one frequently reveals that you are paying for SMS to close sales email had already closed.
Codify every winner into a swipe file with the lever it proved. This stops you re-testing settled questions with sends you cannot afford, and it turns a year of individual tests into an actual point of view about your customer.
Section 8
The first 30 days
Week 1: stop the bleeding
- Set SMS attribution to 1-day click, uncheck deliveries. Export your old numbers first.
- Add the find-and-replace step to your pre-send checklist. Audit your live flow messages for curly punctuation right now; that alone may be a 3x overcharge running on autopilot.
- Count segments on every active flow message. Anything over one segment gets cut to 112 characters or moved to email.
Week 2: build the stack
- Create the nested recency rings, crossed by prospect / 1x / repeat. Verify nesting.
- Pull your real days-between-orders curve by order pair. Median, not mean.
Week 3: run the model
- Pull recipients, orders, and revenue per cell across your last 8 to 12 campaigns.
- Compute marginal ring economics. Layer in cost and contribution margin.
- Produce the per-cell frequency plan.
Week 4: reallocate and test
- Raise frequency on the top customer rings. Cut or suspend the cells that do not clear.
- Fix flow timing to your actual curve.
- Launch one Tier 1 test, properly powered, 2 variations.
What this adds up to
Three myths, one cause. SMS gets run like email because email is what everyone learned, and email is the one channel where wasted sends are free. Every symptom follows from that single transplanted assumption: the duplicated calendar, the panic-driven cadence cut, the educational text that costs 3x to deliver.
The fix is not sending less. It is not sending more. It is putting cost and revenue in the same row, per audience cell, and then letting the arithmetic set the frequency for each one separately. Your best customers almost certainly want to hear from you far more often than they do. Your coldest segments are almost certainly costing you money every time you touch them. Both facts are invisible under a blended average and obvious the moment you split it.
That analysis takes about two hours and it is the highest-ROI spreadsheet in your retention program.
Free Klaviyo audit
Want us to run this on your account?
We will pull your ring economics, your real repurchase curve, and your true cost per send, and show you exactly which cells are profitable at which frequency.
Get the free auditBasis and method. SMS encoding and segment figures derive from the GSM 03.38 specification (140-byte payload, GSM-7 at 160/153 characters, UCS-2 at 70/67) and are consistent with published Twilio, Klaviyo, and Postscript documentation. Attribution defaults and settings paths reflect Klaviyo documentation current at publication; verify in your own account, since rates and defaults change. Cost illustrations use $0.012 per US segment all-in, a mid-range planning figure: pull your own rate table before modeling. Days-between-orders figures come from an anonymized ~$30M DTC engagement, roughly 57,000 customers in the largest order-pair cell, computed on deduplicated order data. The frequency and profitability tables are illustrative models built on real structure, not measured results from a single brand. Minimum-detectable-effect figures assume a two-proportion test at 80% power and 95% confidence with an even split. Contribution-margin ranges are directional category anchors and are not a substitute for your own COGS.