Email Revenue Attribution and the Assisted-Email Problem
The first time I put email's "revenue" next to the number our finance team pulled from Shopify, email had credited itself with about 40% more than the store's total email-tagged sales. Nobody had lied. Nobody had a bug. The email tool was doing exactly what it was configured to do, and what it was configured to do was generous.
That gap has a name once you go looking: it's the assisted-email problem, and it's the reason your ESP, Google Analytics, and your data warehouse will each report a different revenue figure for the same campaign, sometimes off by a third or more. The short version: your email platform uses last-click attribution over a wide time window, GA4 uses a different model over a different window, and your warehouse counts actual orders. They're answering three slightly different questions. If you don't know which question each one is answering, you'll defend the wrong number in your next budget meeting.
Let me walk through why the numbers diverge, then how I reconcile them without pretending any single tool is "the truth."
The same order, counted three ways
Here's the scenario that broke my brain the first time I traced it. One customer, one $180 order, three systems watching.
- Tuesday: she opens your abandoned-cart email, clicks through, doesn't buy.
- Wednesday: she sees a retargeting ad on Instagram, ignores it.
- Thursday: she searches your brand name on Google, clicks the organic result, and checks out. $180.
Now ask each system who earned that revenue.
| System | Model | Window | Who gets the $180? |
|---|---|---|---|
| Klaviyo (ESP) | Last-click, email/SMS only | 5 days from open/click | Email, since she clicked Tuesday and bought within 5 days |
| GA4 | Data-driven (or last-click) | Session/lookback based | Split across channels, or Organic Search on last-click |
| Shopify / warehouse | Actual order record | The moment of purchase | Nobody in particular; it's just one $180 order |
Same order. In your ESP it's email revenue. In GA4 it might be organic search, or a fractional slice spread across three channels. In the warehouse it's one line item with no opinion about credit at all. Stack the ESP number on top of the paid-social number on top of the search number and you get a total that's larger than the money that actually hit the bank.
That's not a metaphor. Cometly's 2025 write-up on why marketing reports don't match revenue puts the summed, platform-attributed total at 2 to 3 times real revenue once channels overlap, because each platform counts from its own vantage point and none of them subtract each other out. Email is one of the worst offenders here, and it's worth understanding exactly why.
Why your ESP is the generous one
Klaviyo, Mailchimp, and most email platforms default to last-click attribution with a wide window. Klaviyo's default is 5 days after an open or a click, per YOCTO's breakdown of the setting. Some accounts run a longer window on the click side. The logic is defensible on its own terms: the platform reasons that if someone engaged with your email and bought within a few days, the email probably did some work.
Probably. But "did some work" and "deserves 100% of the credit" are very different claims, and last-click hands over the full 100%. The email tool can only see its own touchpoints. It has no idea the customer also got a retargeting ad and then came back through brand search. From inside the ESP, that Tuesday click looks like the decisive moment, so the whole order lands in the email column.
The result is a consistent lean toward overstatement. Subjectlime's teardown of Klaviyo attribution found that across the portfolios they manage, Klaviyo-credited revenue tends to run above the "true" email number on a fairly steady range. The platform overestimates, but predictably, which is at least something you can adjust for once you know the size of the lean.
Two windows drive most of the inflation, and it's worth separating them:
The open window is the shakier one. With Apple Mail Privacy Protection pre-fetching images since 2021, a huge share of "opens" aren't human opens at all. They're a proxy server loading your pixel. If your ESP attributes revenue off opens within its window, a machine that "opened" your email can end up credited for a sale the recipient made for entirely unrelated reasons. I've stopped trusting open-based attribution almost entirely. Click-based is far more honest, because a click is a real human action.
The click window is more reasonable but still generous at 5 days. A lot happens in 5 days. She clicked your email Tuesday and, sure, that kept you top of mind. She also got three other brand impressions before Thursday. Giving email all of it isn't wrong, exactly. It's just one opinion presented as a fact.
First-touch, last-touch, and what each actually tells you
Since the whole mess comes down to which model you pick, here's the honest version of what each one is good for. No model is "correct." They're lenses, and each hides something.
Last-click (last-touch) gives 100% to the final channel before purchase. It's what your ESP uses, and it systematically over-credits whatever sits closest to the buy, often email, retargeting, and brand search, because those are the bottom-of-funnel nudges people click right before converting. It under-credits everything that built the awareness in the first place.
First-touch (first-click) does the opposite: 100% to the channel that first pulled the person in. Great for understanding acquisition, useless for understanding what closed the deal. And worth knowing: GA4 dropped first-click, linear, time-decay and position-based models back in 2023, per Fresh Egg's rundown. If you're used to pulling first-click out of Google Analytics, that door is closed. Only data-driven and last-click survived.
Data-driven, GA4's default now, uses Google's model to spread credit across touchpoints based on observed patterns. Better in theory. Opaque in practice, and it lives inside Google's walled garden, so it can't see the email click your ESP saw, and your ESP can't see what GA4 saw. Two black boxes, two answers.
The assisted-email problem is really just this: email is usually an assist, not the goal, but last-click scores it like the goal-scorer. Your ESP is the striker who taps in every ball and claims the whole match.
Napkin math on what the overstatement costs you
Let me do the deliberately round-number version, because that's how I actually think about this before a planning meeting.
Say your ESP reports $100,000 in email-attributed revenue for the quarter. You spent $5,000 on the email program (tool, one part-time strategist, design). On paper that's a 20:1 return, comfortably under the $36-per-dollar email benchmark Litmus reported in its 2025 State of Email. You feel great. You ask for more budget.
Now apply a haircut. Suppose 30% of that credited revenue would have happened anyway. Those customers were coming back through brand search or direct regardless, and email just happened to be the last thing they clicked. Suddenly your incremental email revenue is $70,000, and your real return is closer to 14:1.
Still a fantastic channel. Fourteen to one is a number any CFO will fund. But the honest number and the ESP number are $30,000 apart on a $100K base, and if you'd built your quarterly forecast on the $100K, you'd be explaining a shortfall you created yourself. The 30% haircut is illustrative, not gospel. The point is that the haircut exists and you should estimate yours rather than pretend it's zero.
I learned this the embarrassing way. Early in my career I walked into a QBR with the ESP number as "email revenue," full stop, and a very patient finance lead asked me to reconcile it against the store's total. I couldn't. That meeting is why I now reconcile before anyone asks.
How I actually reconcile it
You don't fix this by picking the "right" tool. You fix it by deciding which number answers which question, and keeping them in separate columns. Here's the working setup I've landed on.
Start from the warehouse, not the ESP. Your order records are the only source that counts each dollar exactly once. Everything else is a claim about those dollars. So the total is fixed; the argument is only about allocation.
Then hold three numbers side by side, and never average them:
- ESP-attributed revenue (last-click, its window). Use it for channel operations, meaning which flows and campaigns are pulling weight relative to each other. It's internally consistent for comparing email to email.
- A neutral, cross-channel number — GA4 data-driven, a warehouse attribution model, or a dedicated analytics layer that ingests events from every channel. Use it for cross-channel budgeting, where you need email, paid, and organic scored on the same ruler.
- Incremental revenue, when the stakes justify it — a holdout test where a slice of your list gets suppressed and you measure the lift. This is the closest thing to truth, and the most expensive to run.
The middle number is where a lot of teams get stuck, because the ESP and GA4 disagree and neither can see the whole path. This is the slot for a neutral analytics layer that sits above any single channel. Tools like GA4, warehouse-native attribution (say, a dbt model over your event stream), a customer-data platform, or a product-analytics platform such as Kixo can ingest email, web, and product events into one timeline and score credit consistently instead of letting each channel grade its own homework. The honest trade-off: none of them are free of assumptions either — a "unified" model is still a model, and you're swapping your ESP's opinion for the analytics layer's opinion. What you gain is one opinion applied evenly to every channel, which is exactly what you need when you're splitting a budget. What you don't gain is metaphysical certainty. That still requires a holdout test.
If you want the framework for turning these reconciled numbers into a defensible per-channel return, I laid out the full build in our unit economics dashboard template — email attribution is one input into that, not the whole story.
A practical checklist before your next report
Here's what I run through before I put an email number in front of anyone who controls budget.
Check the window. Know your ESP's exact click window and open window, and know whether opens are even in the attribution logic. If they are, and you're on Apple Mail, mentally discount them.
Separate flows from campaigns. Automated flows (welcome, abandoned cart, post-purchase) tend to attribute more aggressively because they fire right when purchase intent is already high. That intent existed with or without the email. Report flows and one-off campaigns separately so a high-intent flow doesn't flatter your whole program.
Name the model out loud. When you say "email did $100K," append "on last-click, 5-day window, per the ESP." Those eight words prevent 90% of the confusion, and they signal to finance that you know the number is a lens, not a law.
Reconcile to the warehouse total at least quarterly. If your channel numbers sum to more than the money you actually made, you have overlap, and email is probably claiming some of it.
FAQ
Why is my Klaviyo revenue higher than my Shopify email revenue? Because Klaviyo uses last-click attribution over a default 5-day window and credits itself for any purchase where its email was the last owned touchpoint clicked — even if the customer also came through search or direct before buying. Shopify's own email channel counts more narrowly. The two answer different questions, so they rarely match.
Which attribution model is most accurate for email? None is "accurate" in an absolute sense. Last-click over-credits email; first-touch under-credits it. For a true read, run a holdout test where you suppress email for a random slice of your list and measure the revenue difference. For everyday reporting, a neutral cross-channel model applied evenly beats trusting each channel's self-report.
What is the assisted-email problem? Email often assists a conversion, keeping you top of mind, without being the final touchpoint. Last-click attribution scores that assist as the full goal, so email gets 100% credit for sales it only partly influenced. That's why summed channel revenue exceeds real revenue.
Should I trust email open-based attribution? Be skeptical. Since Apple Mail Privacy Protection began pre-fetching images in 2021, a large share of recorded "opens" are machines, not people. Click-based attribution reflects a real human action and is far more trustworthy.
The uncomfortable truth is that there's no single number that's "email revenue." There's a range, bounded by the generous last-click figure your ESP reports and the conservative incremental figure a holdout test would give you. Your job isn't to find the one true number. It's to know where in that range you're standing, and to say so before finance asks.