Troubleshooting

Klaviyo vs Google Analytics revenue mismatch

Reconcile attribution discrepancies between Klaviyo and Google Analytics 4 — attribution windows, last-click vs last-touch, UTM hygiene, currency, and the math behind the gap.

Published


title: "Klaviyo vs Google Analytics revenue mismatch" description: "Reconcile attribution discrepancies between Klaviyo and Google Analytics 4 — attribution windows, last-click vs last-touch, UTM hygiene, currency, and the math behind the gap." slug: "klaviyo-google-analytics-revenue-mismatch" publishedAt: "2026-05-19" updatedAt: "2026-05-19" painCluster: 6 intent: 7 tier: 4 faq:

  • q: "Why does Klaviyo report different revenue than Google Analytics?" a: "Five common reasons. Different attribution windows (Klaviyo defaults to 5-day click, GA4 varies by model). Different attribution models (last-click vs last-touch vs data-driven). UTM tag hygiene issues (untagged Klaviyo links get attributed to direct or organic in GA). Currency conversion handling. Conversion event definition differences (GA4's purchase event vs Klaviyo's Placed Order). The two tools rarely match exactly; reconciling them is normal."
  • q: "Which one is right, Klaviyo or Google Analytics?" a: "Neither, exactly. Both are using attribution models that approximate reality. Klaviyo credits revenue based on email-click attribution within a window; GA4 uses its own attribution model that's typically based on session source. For email-specifically, Klaviyo's attribution is usually closer to reality because it has access to the actual send-and-click events. For cross-channel revenue, GA4's model is more complete."
  • q: "How do I make Klaviyo and GA4 agree more closely?" a: "Three changes help. Use consistent UTM tags on every Klaviyo link (utm_source=klaviyo, utm_medium=email, utm_campaign=[descriptive]). Match attribution windows where possible (configure both to 5-day or 7-day). Use the same conversion event definition (both pointing at Shopify's Placed Order, not a custom event). They still won't match exactly, but the gap narrows to 5-15%."
  • q: "What's the typical gap between Klaviyo and GA4 revenue for email?" a: "10-30% is common. Klaviyo typically reports higher because it credits any conversion within the attribution window after an email click; GA4 typically reports lower because it gives credit to the actual visit source at the time of conversion (which may not be email if the customer also clicked an ad or organic result on the way to converting). A gap larger than 40% suggests a tagging or configuration issue."
  • q: "Are untagged Klaviyo links a problem for attribution?" a: "Yes. Klaviyo automatically adds some UTM tagging via its link wrapper, but if you've configured custom tracking or if a link wasn't routed through Klaviyo's tracker, the click won't carry UTM tags. In GA4, an untagged click looks like direct or referral traffic depending on the link. Klaviyo's own attribution doesn't care about UTM tags (it tracks via the click event directly), so this asymmetry is a source of mismatch."
  • q: "Does GA4's data-driven attribution model change the comparison?" a: "Yes. GA4's data-driven attribution (the new default for GA4 since 2023) credits revenue across all touchpoints proportionally rather than to a single last-click source. This typically reduces email's share of total revenue compared to last-click attribution. The Klaviyo number doesn't change; the GA4 number drops, widening the apparent gap."
  • q: "How do I reconcile Klaviyo, GA4, and Shopify total revenue?" a: "Treat Shopify total order revenue as the ground truth — it's the actual money that came in. Klaviyo's flow/campaign revenue and GA4's email source revenue are both attempts to credit portions of that total to specific touchpoints. They should each be a subset of Shopify total, and their sum across all sources should approximately equal Shopify total. If Klaviyo and GA4 added together exceed Shopify, you have double-attribution somewhere."
  • q: "Will Playbook detect attribution mismatches?" a: "Yes, to a point. We monitor Klaviyo's attributed revenue trends and flag when they diverge sharply from order-volume trends (suggesting an attribution-window or tracking change). We don't ingest GA4 data directly, so we can't compare Klaviyo to GA4 in our dashboard — but the symptom usually surfaces in Klaviyo-side metrics first." related:
  • klaviyo-revenue-attribution-missing
  • klaviyo-flow-stopped-generating-revenue
  • klaviyo-recharge-attribution
  • klaviyo-monitoring-tools-2026

Klaviyo and Google Analytics 4 attribute revenue to email differently, and the two numbers rarely match. For most ecommerce operators this isn't a bug — it's a feature of the two tools using different attribution models on the same underlying conversion data. The challenge is figuring out which gap is normal and which gap is signaling a real configuration problem.

This page covers the mechanics of the mismatch, the common configuration issues that widen the gap unnecessarily, and how to decide which number to trust when stakeholders ask "how much revenue did email drive last month."

Why the numbers don't match

The fundamental reason is that Klaviyo and GA4 are answering subtly different questions.

Klaviyo's question. "Of customers who clicked an email I sent, how many converted within the attribution window, and how much revenue did those conversions represent?"

GA4's question (default data-driven model). "Across all channels and touchpoints, what proportional credit does each source deserve for the conversion, weighted by historical contribution to conversion paths?"

These produce different numbers even with identical underlying data. A customer who clicks an email, then later searches Google for the brand, then clicks a Google ad, then converts — Klaviyo attributes 100% to email (the click happened within the window). GA4's data-driven model attributes maybe 30% to email, 20% to organic search, 50% to the paid ad.

For most accounts, Klaviyo's number is higher than GA4's. The size of the gap is informative: 5-15% suggests good configuration and normal model differences; 30%+ suggests a configuration issue worth investigating.

The five common configuration issues

1. UTM tags missing or inconsistent

Klaviyo doesn't depend on UTM tags for its own attribution — it tracks via click events directly. But GA4 attributes revenue based on what the visit's traffic source was, which it determines via UTM tags (or the natural referrer if no tags).

If your Klaviyo links aren't UTM-tagged, GA4 may see those visits as direct or referral traffic, not as email. Email's GA4 number drops; direct or referral's number rises.

Fix. Configure consistent UTM tagging on Klaviyo links. The default Klaviyo tagging is usually utm_source=klaviyo and utm_medium=email. Add a utm_campaign value that describes the specific send. For flows, use the flow name; for campaigns, use the campaign name. Klaviyo can apply these as defaults at the account level — Settings → Email → Default UTM parameters.

2. Attribution windows mismatched

Klaviyo's default attribution window is 5 days post-click for email. GA4's default attribution window is 30 days post-click (configurable in property settings). Same click, same conversion, different attribution depending on which tool you ask.

Fix. Decide on a single window for both tools where possible. 5-day or 7-day are common choices that match email's typical attribution decay. Configure both tools to the chosen window.

3. Attribution model mismatch

GA4 switched to data-driven attribution as the default in 2023. Last-click attribution is still available but no longer the default. If you haven't explicitly chosen, you're on data-driven, which credits email less than last-click would for cross-channel paths.

Klaviyo's attribution is effectively last-click within its window — if the customer clicked an email and converted, email gets the credit, regardless of what happened in between.

Fix. Decide whether you want last-click or data-driven for your reporting. There's no universally correct answer; last-click is simpler and matches what most ESPs report, data-driven is more sophisticated but harder to explain to stakeholders. Pick one and configure both tools accordingly where possible.

4. Conversion event definition

Klaviyo's standard conversion event is Placed Order (synced from Shopify). GA4's standard is the purchase event (fired by Shopify's tracking layer).

These should fire for the same underlying transactions, but in practice they may diverge — different timing (Klaviyo's Placed Order may fire on order creation; GA4's purchase may fire on thank-you page render), different filtering (test orders, refunds, draft orders), different deduplication.

Fix. Verify both events fire for the same set of transactions. Pull a sample of recent orders and confirm each appears as Placed Order in Klaviyo and as purchase in GA4. If a meaningful number of orders are missing from one or the other, investigate the tracking layer.

5. Currency conversion

For multi-currency stores, Klaviyo and GA4 handle currency conversion differently. Klaviyo records order revenue in the currency the order was placed in; GA4 may convert to your reporting currency.

For accounts selling in multiple currencies, this introduces a mechanical gap that has nothing to do with attribution.

Fix. If you sell in multiple currencies, configure both tools to report in the same currency consistently. Klaviyo's multi-currency support is via Shopify integration — make sure the conversion rates are set correctly.

What to do when stakeholders ask

The question "how much revenue did email drive" doesn't have a single answer. Different stakeholders need different answers.

For ESP performance evaluation (is the email program working). Use Klaviyo's number. It's measuring what your ESP actually drove via its own click events. This is the right number for "should we invest more in email."

For cross-channel marketing-mix evaluation (how does email compare to paid). Use GA4's number. It's measuring email's contribution against other channels using a consistent model. This is the right number for "should we move budget between channels."

For board-level total-revenue reporting. Use Shopify total revenue (or whatever your order-management ground truth is). Don't try to reconcile Klaviyo and GA4 at the top level — both are subsets of total revenue, and trying to make them sum cleanly creates accounting confusion.

For diagnosing whether something broke. Use Klaviyo's flow- and campaign-level numbers. If a specific flow's revenue dropped sharply, Klaviyo's view is the diagnostic ground truth because it's tied directly to the flow's click events.

How to reconcile the books monthly

A useful monthly reconciliation that takes about 30 minutes.

  1. Pull Shopify total order revenue for the month. This is your denominator.
  2. Pull Klaviyo's flow + campaign attributed revenue. Note what percentage of total this is.
  3. Pull GA4's email-source revenue. Note what percentage of total this is.
  4. Pull GA4's revenue by all source/medium combinations. Confirm everything adds up reasonably (paid + organic + direct + email + social + referral ≈ total).
  5. Compute the Klaviyo-to-GA4 gap. If it's 10-25%, you're fine. If it's larger, investigate.
  6. Note any month-over-month changes in the gap. Sudden changes suggest configuration drift or a tracking issue.

The reconciliation itself isn't the goal — it's the changes month-over-month that are diagnostic. A consistent 18% gap that's been stable for a year is fine. A gap that jumps from 18% to 35% in a month suggests something just broke.

The honest reality

Email attribution is harder than most stakeholders appreciate. Both Klaviyo and GA4 are approximations of an underlying truth that neither can fully measure. The gap between them is a normal artifact of two tools using different models on the same data.

The mistake to avoid is treating the gap as a problem to solve definitively. It's not solvable; the models are doing different things. The right posture is to understand the gap, configure both tools sensibly, and use each tool for the questions it's good at answering.

For most operators, the highest-leverage action isn't reducing the gap — it's setting up consistent UTM tagging and matching attribution windows where possible, then accepting the residual gap as a known property of using two attribution systems.

When something genuinely breaks (Klaviyo's number drops sharply while GA4's is stable, or vice versa), that's diagnostic and worth investigating. The day-to-day gap is normal.

Frequently asked questions

Why does Klaviyo report different revenue than Google Analytics?
Five common reasons. Different attribution windows (Klaviyo defaults to 5-day click, GA4 varies by model). Different attribution models (last-click vs last-touch vs data-driven). UTM tag hygiene issues (untagged Klaviyo links get attributed to direct or organic in GA). Currency conversion handling. Conversion event definition differences (GA4's purchase event vs Klaviyo's Placed Order). The two tools rarely match exactly; reconciling them is normal.
Which one is right, Klaviyo or Google Analytics?
Neither, exactly. Both are using attribution models that approximate reality. Klaviyo credits revenue based on email-click attribution within a window; GA4 uses its own attribution model that's typically based on session source. For email-specifically, Klaviyo's attribution is usually closer to reality because it has access to the actual send-and-click events. For cross-channel revenue, GA4's model is more complete.
How do I make Klaviyo and GA4 agree more closely?
Three changes help. Use consistent UTM tags on every Klaviyo link (utm_source=klaviyo, utm_medium=email, utm_campaign=[descriptive]). Match attribution windows where possible (configure both to 5-day or 7-day). Use the same conversion event definition (both pointing at Shopify's Placed Order, not a custom event). They still won't match exactly, but the gap narrows to 5-15%.
What's the typical gap between Klaviyo and GA4 revenue for email?
10-30% is common. Klaviyo typically reports higher because it credits any conversion within the attribution window after an email click; GA4 typically reports lower because it gives credit to the actual visit source at the time of conversion (which may not be email if the customer also clicked an ad or organic result on the way to converting). A gap larger than 40% suggests a tagging or configuration issue.
Are untagged Klaviyo links a problem for attribution?
Yes. Klaviyo automatically adds some UTM tagging via its link wrapper, but if you've configured custom tracking or if a link wasn't routed through Klaviyo's tracker, the click won't carry UTM tags. In GA4, an untagged click looks like direct or referral traffic depending on the link. Klaviyo's own attribution doesn't care about UTM tags (it tracks via the click event directly), so this asymmetry is a source of mismatch.
Does GA4's data-driven attribution model change the comparison?
Yes. GA4's data-driven attribution (the new default for GA4 since 2023) credits revenue across all touchpoints proportionally rather than to a single last-click source. This typically reduces email's share of total revenue compared to last-click attribution. The Klaviyo number doesn't change; the GA4 number drops, widening the apparent gap.
How do I reconcile Klaviyo, GA4, and Shopify total revenue?
Treat Shopify total order revenue as the ground truth — it's the actual money that came in. Klaviyo's flow/campaign revenue and GA4's email source revenue are both attempts to credit portions of that total to specific touchpoints. They should each be a subset of Shopify total, and their sum across all sources should approximately equal Shopify total. If Klaviyo and GA4 added together exceed Shopify, you have double-attribution somewhere.
Will Playbook detect attribution mismatches?
Yes, to a point. We monitor Klaviyo's attributed revenue trends and flag when they diverge sharply from order-volume trends (suggesting an attribution-window or tracking change). We don't ingest GA4 data directly, so we can't compare Klaviyo to GA4 in our dashboard — but the symptom usually surfaces in Klaviyo-side metrics first.