Why the numbers disagree
| Source of disagreement | What it does |
|---|---|
| Attribution window | Klaviyo's default click/view windows differ from GA4's session-based model, crediting a wider or narrower time range to the same touch |
| Channel deduplication | A single order can be credited in full to email by Klaviyo and in full to paid social by your ad platform - both models can "win" the same order |
| Event completeness | If checkout/order events are incomplete (see our integration guide), Klaviyo's attributed revenue undercounts regardless of the model |
| Last-click vs. multi-touch | Klaviyo's native reporting is last-click by default; GA4 can be configured for data-driven or other multi-touch models |
None of these are bugs. They're different, legitimate ways of answering "what drove this order" - the mistake is comparing the outputs of two different models and assuming one of them is wrong.
How we approach reconciliation
- Document the exact attribution window and model each tool is currently using.
- Verify event completeness feeding Klaviyo's revenue calculation (see the integration guide for common gaps).
- Build a side-by-side reconciliation for a defined period so stakeholders see where and why the numbers diverge, in dollars, not just in theory.
- Recommend either a standardized model across tools or an explicit "here's what each number means" reporting note - whichever fits how your team actually uses the data.
Related coverage
For the ecommerce-attribution side of this problem across your full stack (not just Klaviyo), see ecomm.webclat.com's use case on measuring what Klaviyo really brings and its ecommerce attribution guide. This page covers the Klaviyo-specific half of that reconciliation.