← All postsRetention & LTV

Klaviyo Says Email Drives 30% of Your Revenue. Here's How Much It Really Does

Klaviyo counts sales that would have happened anyway. How attribution inflates email revenue, how to run a holdout on any list size, and what to change once you know.

Klaviyo Says Email Drives 30% of Your Revenue. Here's How Much It Really Does
The short version
  • Klaviyo credits a sale to the last email or SMS a customer opened or clicked inside the attribution window. It does not ask whether the email caused the sale.
  • Apple Mail Privacy Protection opens count by default, so a customer who never read your email can still be "attributed" to it.
  • The same order is often claimed by Klaviyo, Meta and Google at once. Add them up and they can exceed what Shopify actually took.
  • The only reliable answer comes from a holdout: people who get no marketing email, compared with people who do. Any list above roughly 20,000 active profiles can run a basic version.
  • In holdout tests, flows (abandoned checkout, browse abandonment, winback) usually hold up well. Frequent discount campaigns to your most engaged buyers usually hold up the least.
In this article
  1. How Klaviyo decides a sale belongs to email
  2. The four kinds of revenue hiding inside the email number
  3. Flows and campaigns behave very differently
  4. How to run a holdout on any list size
  5. Illustrative cases
  6. What to change in your reporting
  7. What to do this week
  8. Questions founders ask

The retention agency's monthly report opens with a big number: email and SMS drove 38% of revenue. The proposal on the next slide follows naturally. If campaigns work this well, send more of them: six a week instead of four, plus a sitewide code to the engaged segment every other Friday. The founder is about to sign off.

Then someone asks a simple question: what happens to revenue if we stop sending campaigns for six weeks to a random tenth of the list? The answer, when they finally run the test, is that the business would lose about 8% of revenue, not 38%. Most of the rest was customers who were going to buy anyway, often from a phone that "opened" the email on its own. Email was still valuable. It was just a fifth as valuable as the dashboard claimed, and the plan to send more was about to make it worse.

Every founder has seen the Klaviyo dashboard number. Email and SMS drove 28%, 35%, sometimes 40% of revenue last month. It is the most comforting number in the business, because it seems to prove the channel you pay the least for is doing the most work.

The better question is not "how much revenue did email touch?" It is "how much revenue would we lose if we stopped sending tomorrow?" Those two numbers are rarely the same, and the gap between them decides how many campaigns you send, how much discount you give away, and whether your retention hire is worth what you pay.

5 daysDefault email attribution window for Klaviyo accounts created after October 9, 2024Klaviyo Help Center
OpensCount as conversions by default, including Apple Mail Privacy Protection auto-opens
~1 in 4Attributed campaign dollars that were incremental in our worked holdout example

How Klaviyo decides a sale belongs to email

Klaviyo uses a last touch model with a time window. If a person opened or clicked a message and then placed an order inside the window, the order is credited to the most recent message they engaged with. For accounts created after October 9, 2024, the default window is 5 days for email and SMS and 24 hours for push. Older accounts may still be on different defaults, and every account can change them.

Three details in that rule matter far more than most teams realise.

  • Opens count, not just clicks. A customer does not need to click anything. Opening the email and buying through any other route within the window is enough.
  • Machine opens count by default. Apple Mail Privacy Protection preloads emails on Apple devices, which registers as an open whether or not a person read it. Klaviyo counts these opens toward conversions unless you switch that off.
  • The order can come from anywhere. Klaviyo does not check whether the buyer arrived from a Google ad, a Meta ad or by typing your URL. If the open happened inside the window, email gets the credit.

So a customer on an iPhone who receives your Monday newsletter, never reads it, sees a Meta ad on Wednesday and buys, is counted as an email conversion. Meta counts the same order as a Meta conversion. Google may count it too if they searched your brand name before buying.

Where the inflation comes from
SourceHow it inflates email revenueHow to check it
Apple MPP opensAuto-opens make every Apple Mail subscriber look engaged, so their purchases fall inside the windowTurn off MPP opens in attribution settings and compare last quarter
Open-based creditOrders placed with no click still countCompare click-only attributed revenue with open-plus-click
Long window5 days catches most weekly buyers of consumablesRerun with a 1-day click window and see what remains
Multi-touch overlapMeta, Google and Klaviyo all claim the same orderAdd platform-claimed revenue and compare with Shopify net sales
Recurring subscription ordersAuto-ship orders placed after an email open are credited to emailSplit attributed orders by order source or subscription tag
Discount campaignsBuyers who would have paid full price use the codeCompare full price repeat rate before and after heavy promo months

Settings names differ slightly between accounts. The checks work with any attribution setup.

The four kinds of revenue hiding inside the email number

When you break email-attributed revenue down, it almost always falls into four buckets. Only one of them is fully incremental.

Four kinds of email-attributed revenue
BucketWhat it isIncremental?
Would have bought anywayReplenishment buyers, subscribers, loyal customers who were already coming backNo
Pulled forwardThe email moved a purchase from next week to todayMostly no. It changes timing, not total
Bought with a discount they did not needFull price buyers who used the code because it was thereNegative. You gave away margin
Genuinely createdAbandoned carts recovered, lapsed customers won back, first purchases from warm subscribersYes

The pull-forward bucket is the one founders miss most. Look at daily revenue around a big campaign send. If the campaign day spikes and the following four to six days sit below your normal run rate, a large part of the spike was timing. Total revenue for the fortnight barely moved.

The campaign spike borrowed from the following week

Daily Shopify revenue around a campaign send, indexed to a normal day = 100 (illustrative)

05010015020096100Normal dayDay -3Day -2Day -1Send dayDay +1Day +2Day +3Day +4Day +5Day +6

Klaviyo credits the spike. The dip that follows is invisible in attribution but shows up in total revenue.

The campaign spike borrowed from the following week. Daily Shopify revenue around a campaign send, indexed to a normal day = 100 (illustrative)
LabelDaily revenue index
Day -3100
Day -298
Day -1101
Send day185
Day +1120
Day +285
Day +380
Day +484
Day +590
Day +696

Flows and campaigns behave very differently

Flows are triggered by what a customer just did: abandoned a checkout, browsed a product, went quiet for 90 days. Campaigns are sent because it is Tuesday. That difference shows up clearly when you test them.

  • Abandoned checkout and browse abandonment usually hold up best in holdout tests. The customer showed intent and the message reaches them while it is still warm.
  • Welcome series often lift first purchase meaningfully, but check what the welcome discount costs on customers who would have bought at full price. We covered that in Is your welcome discount building customers or bargain hunters?
  • Winback flows to genuinely lapsed customers are often incremental, because nothing else was going to bring those people back.
  • Post-purchase flows tend to look strong in attribution and weaker in holdouts, because they go to people who just bought and many were going to buy again anyway.
  • Campaigns to your engaged segment are where the gap is widest. These people open everything and buy often. Klaviyo credits their purchases to whatever they opened last.

How to run a holdout on any list size

Klaviyo offers global holdout groups, which remove a share of your audience from all marketing messages and report the lift. Klaviyo recommends holding out around 5% and running for about three months, and the feature needs an account with at least 400,000 profiles. Most brands under $10 million in revenue will not qualify. You do not need the feature to run the test.

The simple version (lists above roughly 20,000 active profiles)

  1. Create a random 10% segment of your engaged, marketable profiles. The simplest way is to export them, give each profile a random number from 1 to 10 in a spreadsheet, re-import that as a custom property, and build a segment for everyone with the value 10.
  2. Exclude that segment from every campaign for six to eight weeks. Keep transactional messages (order confirmations, shipping updates) running for everyone.
  3. Leave flows running for both groups at first. You are testing campaigns.
  4. At the end, pull Shopify orders for both groups, not Klaviyo-attributed revenue. Use revenue per person across all channels.
  5. The difference in revenue per person, multiplied by the size of the mailed group, is your incremental campaign revenue.

Testing a flow

Inside a flow, add a conditional split on the same random property so that, for example, values 1 to 5 go down the normal path and values 6 to 10 exit without a message. Run it until each side has at least a few hundred triggered customers. Compare the conversion rate across all channels over the following 14 to 30 days.

Worked example: eight-week campaign holdout
MetricMailed groupHoldout group
Engaged profiles54,0006,000
Shopify revenue in 8 weeks (all channels)$518,400$54,000
Revenue per person$9.60$9.00
Klaviyo-attributed campaign revenue$142,000Not mailed

Illustrative numbers. Incremental revenue = ($9.60 minus $9.00) x 54,000 = $32,400, about 23% of the $142,000 Klaviyo attributed to campaigns.

Mailed customers spent 60 cents more each, not what the dashboard implied

Shopify revenue per person over 8 weeks, all channels (worked example)

$0$5$10$15$9$9.6Holdout (nocampaigns)Mailed group

$0.60 x 54,000 mailed profiles = $32,400 incremental, against $142,000 attributed by Klaviyo.

Mailed customers spent 60 cents more each, not what the dashboard implied. Shopify revenue per person over 8 weeks, all channels (worked example)
LabelRevenue per person
Holdout (no campaigns)$9
Mailed group$9.6

In this example email campaigns are worth something real, about $32,400 over eight weeks. They are worth roughly a quarter of what the dashboard said. That changes how many campaigns you send, how much you pay an agency on a percentage of attributed revenue, and how you value your email list in a fundraise.

Illustrative cases

Illustrative caseSkincare brand, about $150k a month, 60% of subscribers on Apple Mail

38% of revenue from email, until the MPP opens came out

What the dashboard said
Klaviyo attributed 38% of revenue to email and SMS. The agency proposed going from four campaigns a week to six.
What was actually happening
After switching off MPP opens and moving to a 2-day click window for internal reporting, attributed revenue fell to 17%. A six-week campaign holdout showed the incremental share was closer to 8% of revenue. Most campaign revenue came from a loyal group of about 4,000 customers who bought every five to six weeks regardless of what was sent.Abandoned checkout, browse abandonment and winback flows held up strongly in a split test. The daily campaigns did not.
Decision
Fix Cut campaigns to two a week, stop sitewide codes to the engaged segment, and move effort into flows and a replenishment reminder timed to the real reorder window.

Revenue did not fall when campaign volume came down. Unsubscribes dropped and gross margin improved because fewer loyal customers were being handed codes.

Illustrative caseSupplement brand, about $90k a month, 55% of revenue from subscriptions

The email team was being credited for auto-ship

What the dashboard said
Email looked like the best channel in the business, credited with 41% of revenue.
What was actually happening
When attributed orders were split by source, 62% of email-attributed revenue was recurring subscription orders. Those shipments were scheduled weeks earlier and would have gone out whether or not an email was sent.Excluding recurring orders, email drove about 15% of one-time and first subscription revenue, which is still healthy.
Decision
Test Report email on non-recurring orders only, and test a pre-renewal reminder flow against a no-message group to see if reminders reduce skips and cancels.

A channel can be valuable and still be overstated. Knowing the real number let the founder pay the retention lead on the right metric.

One brand, three answers to "how much revenue is email?"

Email and SMS share of revenue in the skincare case above, by method

0%20%40%60%Klaviyo default (opens incl. MPP, 5-day window)38%Click-only, 2-day window17%Six-week campaign holdout8%

Illustrative composite. Only the holdout measures what email actually caused.

One brand, three answers to "how much revenue is email?". Email and SMS share of revenue in the skincare case above, by method
LabelShare of revenue
Klaviyo default (opens incl. MPP, 5-day window)38%
Click-only, 2-day window17%
Six-week campaign holdout8%

What to change in your reporting

You do not need to stop using Klaviyo's numbers. You need to stop using them to make budget decisions. A practical setup:

A reporting setup that survives scrutiny
NumberWhere it comes fromUse it for
Attributed revenue (Klaviyo default)KlaviyoComparing one message with another inside email
Click-only, 1 to 2 day attributed revenueKlaviyo with adjusted settingsA tighter internal view that removes most MPP noise
Incremental revenue per personYour holdout, measured in ShopifyDeciding send frequency, discount policy and email budget
Email share of net revenue (incremental)Holdout result divided by Shopify net salesBoard and investor reporting, agency fees

What to do this week

  1. Check your attribution window and whether Apple MPP opens and bot clicks are included. Write down the current settings before changing anything.
  2. Rerun last quarter's email revenue with click-only, 2-day attribution for your own reference.
  3. Add up the revenue Klaviyo, Meta and Google each claimed last month. Compare it with Shopify net sales.
  4. Split email-attributed orders into first orders, repeat orders and recurring subscription orders.
  5. Set up a 10% random campaign holdout and let it run for six to eight weeks.
  6. Decide in advance what result would make you cut, keep or increase campaign frequency.

Email is usually one of the most profitable channels a DTC brand has. The point of measuring it properly is not to cut it. It is to stop paying for the part of the number that was never email's to begin with, and to put the effort where messages actually change what customers do.

Questions founders ask

Is Klaviyo attribution accurate?

It is accurate about what it measures: which message a buyer last opened or clicked inside a time window. It is not a measure of causation. Opens from Apple Mail Privacy Protection, long windows and overlap with paid channels mean attributed revenue is usually well above the revenue email actually created.

What is a good percentage of revenue from email for a DTC brand?

Attributed benchmarks of 25% to 40% are common, but they are not comparable between brands because settings differ. A more useful benchmark is your own incremental share from a holdout. For many brands that lands somewhere between a third and a half of the attributed figure, with flows holding up better than campaigns.

Should I turn off Apple Mail Privacy Protection opens in Klaviyo?

For decision-making, yes. MPP opens are generated by Apple's servers, not by people reading your email. Keep a note of the date you changed it, because your historical attributed revenue will look higher than your new numbers.

How big does my list need to be for a holdout test?

A basic campaign holdout works once you have roughly 20,000 engaged profiles, so the 10% holdout group has around 2,000 people. Smaller lists can still test individual flows with a random split, but results take longer to settle.

Does a holdout test lose me money?

Briefly and slightly. If email is highly incremental, the holdout group buys a little less during the test. That small cost buys you the one number that tells you how much to invest in email for the next year.

Sources

  1. Understanding message conversion tracking (Klaviyo Help Center)
  2. Getting started with global holdout groups (Klaviyo Help Center)
  3. How to change your attribution model (Klaviyo Help Center)
  4. Global holdout groups (Klaviyo)

Find out where your next dollar should go.

Written report and a founder call. Delivered in 5 to 7 working days.

Start My Snapshot · $297