Most ecommerce teams make the same mistake with email attribution: they open whichever dashboard is in front of them, read the percentage, and report it as a fact.
Klaviyo's dashboard says email drove 28 percent of last month's revenue. GA4's acquisition report says email drove 9 percent. Someone picks one number for the board deck, usually whichever is easier to defend in the moment, and nobody asks why they disagree by a factor of three.
They disagree because they are not measuring the same thing. Email marketing attribution ecommerce brands actually trust has to start from that mechanism, not from picking the dashboard that happens to be open. Once you see what each number is built to answer, the gap stops looking like an error and starts looking like two honest answers to two different questions.
Why Klaviyo's number runs hot
Klaviyo's default attribution model is last touch, and it is more generous than that phrase suggests. The documentation states the default lookback window is "5 days for email clicks" and "5 days for email opens," and the model does not distinguish between the two. An open or a click inside that 5-day window can both earn email the full value of the order, whichever happened last before the purchase.
That generosity collides with a problem Klaviyo did not create and cannot fully fix. Apple's Mail Privacy Protection preloads every image in an email, including the invisible tracking pixel, through Apple's own servers, whether a human ever opens the message or not.
Klaviyo's own documentation on identifying these opens is direct about the limitation: "this causes a false open event to be tracked in Klaviyo." The platform flags these as Apple Privacy Opens because, in its own words, "we have no way of distinguishing between a true human open and an automated open when MPP is enabled."
Klaviyo's guidance is to exclude Apple Privacy Opens from engagement segments, but that is a workaround applied manually, not a default correction baked into the attributed revenue figure most teams actually look at.
Why GA4's number runs cold
GA4 has the opposite problem: it demands proof before it will call anything "email" at all.
Google's own definition of the default Email channel requires the link's source or medium to match "email," "e-mail," "e_mail," or "e mail," in any of those spellings. No matching source and no matching medium means no Email channel, full stop.
That tagging is not automatic. Klaviyo's own setup guide confirms UTM parameters are off by default until someone toggles on "Automatically add UTM parameters to links" in account settings. Plenty of stores send years of campaigns before anyone flips that switch, and every one of those clicks lands in GA4 as direct or organic instead of email.
Even for a store with tagging done correctly, GA4's model works against email a second way. GA4's data-driven attribution model assigns credit using a counterfactual calculation: it estimates how much a conversion's probability would drop if a given touchpoint were removed from the path, and that drop becomes the touchpoint's share of the credit. A customer who clicks an email on Monday and converts through a branded Google search on Friday does not give email 100 percent of the order under this model. The model asks what the search touch actually added on top of the email touch, and if the search click meaningfully increased the odds of converting, it takes some of email's credit with it.
So a correctly tagged email click can still show up as a small fraction of an order's value in GA4, not because the click did not matter, but because something else happened after it that the model judged mattered more.
Two numbers, two legitimate questions
Klaviyo's attributed revenue answers "how much revenue happened near an email interaction." GA4's channel revenue answers "how much of that order's probability of happening came from the email touch specifically, once every other touchpoint is accounted for." Those are different questions with different legitimate answers, and reconciling them does not mean forcing one number to match the other.
It means knowing which question you are actually asking before you quote a number. Our marketing analytics work keeps both figures on the same dashboard view for exactly this reason, labeled by mechanism, so nobody mistakes a touch-based total for a marginal-contribution one.
We cover the same split-number problem from the platform-comparison side in our breakdown of the Facebook ads and GA4 discrepancy, and from the revenue-source side in our guide to GA4 and Shopify revenue mismatches. Three different reconciliation problems, three different mechanisms, the same underlying lesson: a platform's own dashboard number is built for that platform's own purpose first.
Building a number you can actually defend
Before touching either dashboard, check three things most teams never check.
- Is Klaviyo's automatic UTM tracking actually turned on? If not, every email click before today is untagged and invisible to GA4, no matter how the revenue split gets argued afterward.
- Is the attribution model set to clicks only, or opens or clicks? Switching off open-based credit removes the Mail Privacy Protection problem at the source instead of relying on someone remembering to exclude Apple Privacy Opens every time they pull a report.
- Does the medium value survive the trip? Link shorteners, some page builders, and a handful of consent-management scripts strip or rewrite query parameters before GA4's tag ever sees them. A spot check on five live campaign links, clicked and inspected in a browser's network tab, catches this faster than any dashboard audit.
Once those three are fixed, reconcile at the order level instead of the aggregate level. Export Klaviyo's attributed orders with Shopify order IDs attached, export GA4's email-channel purchases with transaction IDs, and join both against the Shopify order export itself.
The overlap shows how often the two tools genuinely agree. The gap shows exactly which mechanism caused each specific disagreement, order by order, instead of two aggregate totals arguing with each other in the abstract.
This is the same discipline behind getting UTM tracking right across every channel, not just email: a number is only as trustworthy as the tagging feeding it, and email is usually the channel where that tagging gets set up once at launch and never checked again.
Report the mechanism, not just the number
The next time Klaviyo and GA4 disagree on email's share of revenue, do not pick the one that is easier to defend in a meeting. Report both, and name what each one is actually measuring: Klaviyo's figure as "revenue near an email touch," GA4's as "revenue email's touch marginally earned."
That framing does something a single blended number cannot. It tells a retention manager whether to trust the win-back flow that drove a spike in Klaviyo's number, and it tells a budget owner whether email actually moved the needle once every other channel in the path gets its fair share of the credit. Pick one number to hide the other, and you have not solved the disagreement. You have just moved it from the dashboard into whoever has to defend it next.

