Skip to main content
Growth

Klaviyo vs GA4 vs Shopify: Which Email Revenue Is Right?

Klaviyo, GA4 and Shopify give different email revenue for the same orders. How each attributes a sale, which to trust, and a weekly UTM check to reconcile them.

November 4, 2026 18 min read Talha Butt.
Share

Klaviyo vs GA4 vs Shopify: Which Email Revenue Is Right?

Quick answer: All three numbers are correct answers to different questions, and none of them is true email revenue. On the defaults for new accounts, Klaviyo credits an order to email if the shopper opened or clicked a Klaviyo message in the previous 5 days. GA4’s Traffic acquisition report and Shopify’s marketing report credit it only if an email click was the last non-direct source, and both need that click to be tagged or identified. Use Shopify for total orders and revenue, read Klaviyo as email-touched revenue and GA4 and Shopify as click-led revenue, and track the gap each week with consistent UTM tags instead of trying to make the three match.

You open Klaviyo after a big send and it says the campaign made A$X. GA4’s Email channel shows a fraction of that, and Shopify’s marketing report shows a third figure. Then someone asks which one is right, and you cannot answer.

None of them is wrong. Each tool decides what counts as “email revenue” using its own evidence (opens, clicks or tagged visits), its own lookback window and its own way of treating direct visits. This post puts those rules side by side using each platform’s own documentation, checked as at 31 October 2026. It then walks one clearly labelled illustrative week of five orders through all three tools, and ends with a weekly routine to reconcile them.

The scope is email and SMS revenue only. If your question is why GA4 purchases do not match Shopify orders, that is covered in GA4 vs Shopify Analytics. If it is why an ad platform claims more sales than Shopify, start with why Meta shows more sales than Shopify. For the wider argument about which numbers a founder can defend, see Attribution Is Broken. Here Is What We Actually Trust.

Prism3 does not run email, SMS or ads. We cover this because tracking is part of what we check in the CRO audit, and a founder who cannot trust the email number cannot judge what email is worth.

Three tools, three definitions of “email revenue”

Here is the short version. The sections after the table give the detail and the source for each row.

ToolCredits an order to email whenDefault lookback (as at 31 October 2026)
KlaviyoA qualifying open or click on a Klaviyo email (or a click or delivery for SMS) falls inside the window, and it is the most recent eligible Klaviyo touchNew accounts: 5 days for email opens and clicks; 5 days for SMS clicks; 12 hours for SMS deliveries
GA4The visit that led to the purchase traces back to a visit tagged as email or SMS, under the model the report uses90 days for key events such as purchase (30 or 60 selectable)
ShopifyIn the marketing reports, the last non-direct click before the order was from an email or SMS linkTouchpoints up to 30 days before the order, or since the customer’s previous order

The windows alone explain a lot. A shopper who clicks an email on Monday, then types your address and buys eight days later, is a Shopify and GA4 email order, and not a Klaviyo one.

Klaviyo: it counts opens, and it only sees its own messages

Klaviyo’s help centre says new accounts use a last-touch model, where 100% of the conversion credit goes to the last eligible touchpoint before the order. The default lookback windows for new accounts are 5 days for email opens, 5 days for email clicks, 5 days for text message clicks and 12 hours for text message deliveries. Your account may differ, so check Settings, then Attribution.

Four details change how you read the number:

  • Opens count. Klaviyo describes an open as a message interaction used for attribution, not an order, so a shopper who opened an email and bought two days later without clicking can be credited to it.
  • Opens are less reliable than they look. Klaviyo’s Apple Mail Privacy Protection guide says an Apple privacy open is recorded whether or not the subscriber actually opened the email, and that Klaviyo has no way of telling a human open from an automated one. You can exclude these opens from attribution, but that does not remove them from open reporting. Bot clicks are excluded from attribution and reporting by default for new accounts.
  • Texts can earn credit without a click. Klaviyo says a text can be credited without a click when delivery attribution is enabled, and the default for new accounts includes a 12-hour window for deliveries. A delivery does not prove anyone read the text.
  • On the defaults, Klaviyo sees Klaviyo. It gives credit to eligible activity inside an enabled window. With last touch and those windows, it does not weigh a Google result or a Meta ad that the shopper clicked between your email and the purchase.

Klaviyo does link activity across devices when both belong to the same profile. It also dates results by the day you sent the message. Its own help page says reports grouped by send date can include conversions that happen later, within the window, and that selecting a single send date does not shorten that window.

The revenue figure has its own rules. Klaviyo’s Placed Order value for Shopify is the order total Shopify reports, including shipping, taxes and tips, with discounts applied. Klaviyo says it does not subtract cancelled or refunded orders, and it does not re-sync an order after the first event.

You can change attribution settings, but not freely. Klaviyo allows 3 saved attribution updates in 30 days, changes can take up to 36 hours to apply, and they apply to historical data as well as future data.

GA4: it needs a tagged click, and each report answers a different question

GA4 knows about email only through what the link tells it. Google’s default channel group rules put a visit in Email if the source or medium matches email, e-mail, e_mail or e mail, and in SMS if the source or medium is exactly sms. Matching is not case sensitive. A visit that matches no rule goes to Unassigned, and Direct means a source of “(direct)” with a medium of “(not set)” or “(none)”.

That has a practical consequence. A link tagged with a source of “klaviyo” and a medium of “newsletter” matches neither the Email rule nor any of the medium rules on that page, so it should land in Unassigned. It is a visit your email sent, and GA4 cannot tell. Google keeps its lists of search, social, shopping and video sites in a separate download that I have not checked against “klaviyo”, so confirm in your own report.

Which model GA4 uses depends on the report, and this is the source of many arguments:

  • Session and first-user channel dimensions use paid and organic last click. Google’s traffic-source scopes page puts session-scoped dimensions in the Traffic acquisition report, and says changing the attribution model does not affect them.
  • The event-scoped Default channel group uses the attribution model set for the property. Google’s Default channel group page says that defaults to data-driven, which spreads fractional credit across the touchpoints on the path. Google’s reporting-model page says you can choose data-driven or last click for paid and organic channels.
  • Direct visits do not take credit. Google says paid and organic last click ignores direct traffic, and that all attribution models exclude direct visits unless the whole path is direct.

The lookback is long. Google’s key event lookback page says the default is 90 days for key events other than acquisition events (30 or 60 days can be selected) and 30 days for acquisition events. Google’s own example shows what that does: if a user first arrives from Google and later returns by typing the address, those return sessions stay credited to Google while they fall inside the lookback window, and show as “(direct)” once they fall outside it. Email works the same way.

GA4’s revenue can differ from Klaviyo’s on the same order. Google’s purchase event guidance says value should be the sum of price times quantity for the items, and not to include shipping or tax. If your tag follows that guidance, GA4 shows lower revenue than Klaviyo for identical orders before any attribution difference applies. What your own set-up sends depends on how it was built, so check it. Consent choices and ad blockers also shrink GA4’s counts; the GA4 vs Shopify post covers those.

One more rule from Google: UTM values are case sensitive, so “Email” and “email” show as separate rows in source and medium reports, even though the channel rule treats them the same. Missing parameters produce “(not set)” in reports.

Shopify: last non-direct click by default, and more than one report

Shopify’s marketing reports default to the last non-direct click model. Shopify’s help centre defines it as giving full credit to the last channel before purchase, excluding direct visits, and says that if a customer’s journey contains only direct traffic the order is attributed as direct. Last click, first click and linear include direct visits, and “any click” credits each channel the customer clicked, so it can add up to more than your orders. Shopify’s marketing performance page says touchpoints count from up to 30 days before an order, or from the customer’s previous order if that was more recent.

Four things to know:

  • Only trackable marketing counts. “Sales attributed to marketing” covers sales that can be attributed to trackable marketing, such as UTM-tagged campaigns. Shopify says its totals can differ from other Shopify reports, and that your marketing results in Shopify might not match the reports in the platforms where you run your marketing, because each platform applies its own crediting rules and one sale can be counted by several of them.
  • Klaviyo can be recognised. Shopify says that when the tool that sent an email or SMS can be identified, such as Klaviyo or Shopify Messaging, that tool is the marketing channel. If the sender cannot be identified, the referring channel can list the tool from the link’s UTM parameters instead.
  • A recent change. Shopify’s marketing reports page says Referring channel, Referring medium and Traffic type use updated values from 18 October 2026. Email visits can now list the app where the message was opened, such as Gmail, instead of the tool that sent the email. Marketing channel classification stays the same when a messaging tool is identified, and Shopify says total sales and orders are not affected. If you built a view, a filter or a Campaigns auto-match rule on the old referring-channel values, check it.
  • Shopify can disagree with itself. Shopify’s customer and session discrepancies page says conversions in its analytics reports are based on the last click attribution model, credited to the session where the order happened, so a visit that began from a marketing link may show as Direct there. Its marketing reports include cancelled, pending and unpaid orders, while its sales reports subtract returns and refunds, dating the reversal to the day it was processed.

One illustrative week: five orders, three answers

This example is invented to show the mechanics. It is not from any store, client or Prism3 account, and none of the figures are benchmarks.

The assumptions, so you can check my reasoning:

  • Amounts are order totals in Australian dollars. GA4’s tag is assumed to send the same total, although a tag that follows Google’s guidance would report less.
  • Klaviyo uses new-account defaults (5-day window, Apple privacy opens not excluded, last touch).
  • GA4 is read in the session-scoped Traffic acquisition report with the 90-day lookback. An event-scoped data-driven view could split credit differently.
  • Shopify is read in the marketing report with last non-direct click, and is assumed to identify Klaviyo as the sender in orders B and E.
  • Each shopper uses one browser, accepts cookies and does not clear them. Email links carry UTM tags that GA4’s Email rule recognises, except order D.

Order A, A$120. On day 0 the shopper finds the store from a Google search and leaves. On day 1 a Klaviyo campaign email is delivered and opened on an iPhone, with no click. On day 3 she types the address and buys.

  • Klaviyo: email, A$120 (an open inside 5 days, last touch).
  • GA4: Organic Search. The day 3 visit is direct, direct is ignored, and the Google visit is inside the lookback.
  • Shopify: Google organic, for the same reason.

If that open was an Apple privacy open and you have excluded those from attribution, Klaviyo drops this order too.

Order B, A$80. On day 0 the shopper clicks a tagged SMS link and leaves. On day 2 she clicks a tagged Klaviyo email and buys in the same session.

  • Klaviyo: email, A$80. Under last touch the later email click takes the whole order and the SMS gets nothing.
  • GA4: Email, A$80, because the purchase session began with an email click. An event-scoped data-driven view might give the SMS a share, by an amount you cannot predict.
  • Shopify: email, via Klaviyo, A$80.

All three agree here, which is the case people assume is normal.

Order C, A$60. On day 0 the shopper clicks a Klaviyo email and leaves. On day 4 she returns from a Google search and buys.

  • Klaviyo: email, A$60. The click is inside 5 days and Klaviyo never sees the Google visit.
  • GA4: Organic Search. The purchase session began with the search.
  • Shopify: Google organic.

Order D, A$100. The shopper clicks a campaign email and buys in the same session. Someone customised that campaign’s tracking, with a source of “klaviyo” and a medium of “newsletter”.

  • Klaviyo: email, A$100.
  • GA4: Unassigned, because neither the source nor the medium matches a channel rule (confirm in your own report).
  • Shopify: uncertain. If Shopify identifies Klaviyo as the sender, the order counts under email; if not, the referring channel can list the tool from the UTM parameters instead. Check your own report.

Order E, A$90. On day 0 the shopper clicks a Klaviyo email and leaves. On day 8 she types the address and buys.

  • Klaviyo: nothing. Day 8 is outside the 5-day window.
  • GA4: Email, A$90. The direct visit is ignored and the email click is inside 90 days.
  • Shopify: email, via Klaviyo, A$90. The click is inside 30 days and the direct visit is skipped.

The totals

ToolEmail revenue reported for the five ordersWhy it differs
Shopify, all five ordersA$450The actual orders, regardless of source
KlaviyoA$360 (A, B, C, D)Counts an open (A) and clicks inside 5 days; misses E
GA4 Email channelA$170 (B, E)Needs a recognised tag and a click; D is Unassigned, A and C go to Organic Search
Shopify marketing reportA$170 to A$270B and E, plus D if the sender is identified

What the example shows

  • Klaviyo is not guaranteed to be the highest. Here it is, because it counts an open (A) and ignores the Google visit in C, but order E shows GA4 and Shopify crediting email after Klaviyo’s 5 days have expired.
  • Klaviyo cannot tell you your tags are broken. In order D it credited itself while GA4 filed the visit as Unassigned.
  • Orders A and C may or may not have been caused by email. None of the three tools can say. Only a holdout can, and the two-week incrementality test in the attribution post is a simple version a founder can run.
  • You cannot add the tools together. Klaviyo’s A$120 for order A and GA4’s A$120 for Google organic are the same sale counted twice.

Which number should you trust?

It depends on the question. This is my own rule of thumb, not platform guidance:

QuestionUseWhy
How many orders and how much revenue did the store make?Shopify’s sales reportsThe store records the order itself, and subtracts refunds
How much did people we emailed or texted go on to spend?KlaviyoThe only tool that sees sends, opens and profiles. Generous by design, so read it as “email-touched”
How much came from visits that began with an email or SMS click?GA4 session-scoped Email and SMS channels, checked against Shopify’s marketing reportNeeds a click and a working tag. Closer to “email-led”, and it only sees what you tag
Did this flow beat that flow, or this subject line beat that one?Klaviyo, with the same settings throughoutThe same rules apply to both, so the comparison is fair even if the totals are generous
Did email cause the sale?None of the threeNeeds a holdout or a send-versus-no-send test

Two warnings that follow from this.

Flows near the point of purchase look best under open-based credit. An abandoned-cart email goes to someone who has already started checkout, and some would have bought anyway, yet last touch gives the email the order (my reading, not platform guidance). That does not make the flow useless (the abandoned cart flow guide covers building one), but Klaviyo’s revenue for it is an upper reading.

Do not quote the Klaviyo number as profit. It is revenue at the order total, including shipping and tax, with discounts already applied and refunds not subtracted. It says nothing about product cost, shipping cost or what you paid to get the customer.

A weekly routine to reconcile the three

The aim is not to make the numbers equal. It is to know the gap and notice when it changes, because a changing gap is the earliest sign that a tag, a setting or a template has broken.

Step 1: Fix the tags before you compare anything

In Klaviyo, UTM tracking is under Settings, then Other, then UTM tracking, and utm_source and utm_medium are required once it is on. Klaviyo’s help centre says that as of 2 June 2025 the default utm_medium changed to “Message type”, unless you had customised and saved your own settings, and that messages with custom UTMs or with tracking switched off keep their own settings. That last point is how order D happens: one message that does not follow the account default.

Also check two link rules from Klaviyo: email and text links must start with http:// or https:// to be tracked, and for SMS the “Automatically shorten links” setting has to stay on to use UTM parameters.

Then do a live test. Send yourself a campaign and a flow email and click each link. Read the address bar for the utm_ values, then check the next day that GA4’s Traffic acquisition report puts those sessions under Email (and SMS for a text). Klaviyo’s UTM page says that if utm_medium is set to Message type, links in emails carry utm_medium=email and links in texts carry utm_medium=sms, which match Google’s Email and SMS rules. That only holds for messages that follow the account setting, so test each message type you send.

Keep every UTM value you control lowercase, because Google treats them as case sensitive.

Step 2: Choose a closed period and wait for the window

Use the same dates and the same time zone in all three tools. Then wait. Klaviyo results grouped by send date can still gain conversions until the window closes, so record a week only once the longest default window has passed: at least 5 days after the period ends.

Step 3: Count orders first, then revenue

Order counts compare cleanly, whereas revenue carries different definitions (shipping and tax in Klaviyo, items only in GA4 if the tag follows Google’s guidance, refunds subtracted in Shopify’s sales reports but not in Klaviyo). Pull these into a simple sheet:

ColumnSourceWatch for
Store orders and total salesShopify sales reportsYour denominator. Refunds are subtracted, so note the date they are processed
Klaviyo attributed conversions and revenueKlaviyo, for messages sent in the periodIncludes later conversions inside the window
GA4 Email and SMS channel purchases and revenueGA4 Traffic acquisition, session default channel groupAdd Unassigned beside it, so a tagging fault shows up
Shopify email and SMS marketing channel ordersShopify performance by marketing channel, last non-direct clickIncludes cancelled, pending and unpaid orders

Step 4: Track two ratios, not the totals

  1. GA4 email purchases divided by Klaviyo attributed conversions. This is your “tag health” ratio.
  2. Klaviyo attributed revenue divided by Shopify total sales. This is your “how generous is the model” ratio.

Neither platform publishes a correct value for either ratio, so use your own history. Record eight weeks, then treat the range you have seen as your baseline. A reading far outside it deserves an explanation before you act on any email result.

Step 5: When a ratio moves, check these first

What movedLikely causesWhere to look
GA4 Email falls, Klaviyo steadyA template or new flow without UTMs, a custom medium, SMS link shortening switched off, a consent banner or tracking changeKlaviyo message-level tracking settings, then GA4 Unassigned
Unassigned risesA typo or unusual medium in custom trackingSource and medium rows, where “Email” and “email” show separately
Klaviyo jumps, Shopify total flatAttribution settings changed (they re-write history), a heavy send week, a change to the setting that excludes Apple privacy opensSettings, then Attribution, and the change log you keep
Shopify email shows differently from 18 October 2026The referring-channel rename, so views or rules built on old valuesFilters and Campaigns auto-match rules built on referring channel
Everything moves togetherA store-wide event: a sale, a stock-out or a tracking migrationMigrating tracking pixels if you changed set-ups recently

Step 6: Be careful about changing Klaviyo’s settings to match

It is tempting to shorten Klaviyo’s windows or switch off open-based credit until the number looks like GA4. I would not, unless you have a reason beyond the gap. Changes rewrite your historical data, you get three saved updates in 30 days, and past reports you shared stop matching. A sensible exception is Apple privacy opens, if open-based credit looks inflated for your list. Klaviyo’s “Compare model” button previews a change, though Klaviyo notes the preview may not match your reporting. If you change anything, write down the date, the change and the reason in the same sheet.

Where this fits in the wider system

Email revenue feeds repeat purchase rate, customer lifetime value and how much you can afford to pay for a first order. Overstate the email share and lifetime value looks better than it is. Let broken tags make GA4 under-report it and you may under-invest in email. How email lifts customer lifetime value shows where email fits, and the three numbers founders should watch keeps the dashboard small.

Key takeaways

  • Klaviyo, GA4 and Shopify each answer a different question. None reports true email revenue.
  • On new-account defaults, Klaviyo credits the last eligible Klaviyo touch within 5 days, opens included. GA4 and Shopify need an email click that was the last non-direct source.
  • Apple privacy opens are recorded whether or not the subscriber opened the email, and you can exclude them from attribution.
  • GA4’s Email channel only works if source or medium matches Google’s rules. A custom medium such as “newsletter” should land in Unassigned.
  • GA4 (90 days for purchases) and Shopify (up to 30 days) look back further than Klaviyo’s 5, so they can credit email after Klaviyo has stopped.
  • Use Shopify for total orders and revenue, Klaviyo to compare messages with each other, and GA4 and Shopify for email-led revenue. Never add them together.
  • Reconcile weekly on a closed period, count orders before revenue, and track two ratios against your own baseline.
  • Shopify’s referring-channel values changed on 18 October 2026, so check any view or rule built on them.

FAQs

Why is Klaviyo’s revenue higher than GA4’s?

Klaviyo counts opens as well as clicks, only looks at its own messages, can link activity across devices on one profile and values the order at the full order total including shipping and tax. GA4 needs a tagged click and, if the tag follows Google’s guidance, reports item value without shipping or tax. Klaviyo’s own help centre says Klaviyo and Google Analytics can report different conversion totals.

Which should I trust: Klaviyo, GA4 or Shopify?

Shopify for orders and total revenue. Klaviyo to compare your flows and campaigns with the same settings. GA4 and Shopify’s marketing report for revenue from visits that began with an email or SMS click. None of them shows whether the email caused the sale.

Should I change Klaviyo’s attribution window to match GA4?

Not just to close the gap. Changes apply to historical data, you can save 3 updates in 30 days, and they can take up to 36 hours to apply. A narrower change, such as excluding Apple privacy opens, can be reasonable. Preview it with Klaviyo’s comparison tool and record the date.

Why does GA4 show my Klaviyo traffic as Unassigned or Direct?

Unassigned means no channel rule matched. The Email rule needs the source or medium to match email (or e-mail, e_mail, e mail) and the SMS rule needs sms. A custom medium such as “newsletter”, set on a message with its own tracking, should land in Unassigned. Direct means GA4 recorded a source of (direct) with a medium of (not set) or (none), which usually points to a link without UTM tags. Click a live test link and read the utm_ values.

Do Apple Mail opens inflate Klaviyo’s revenue?

They can. Klaviyo says it cannot tell a human open from an automated one under Apple Mail Privacy Protection. Opens count toward attribution unless you exclude them, and excluding them from attribution does not remove them from open reporting.

Is SMS attributed the same way as email?

Not quite. Klaviyo’s defaults for new accounts credit SMS for clicks within 5 days and deliveries within 12 hours, so a text can earn credit without a click when delivery attribution is enabled. GA4 only credits SMS when the source or medium is exactly sms, and SMS links need automatic link shortening switched on to carry UTM parameters.

Keep reading

Not sure which email number to believe?

Which email number is right is a measurement question, and measurement is where our work starts. Book a free 30-minute diagnostic: we look at where your store loses buyers after the click, using your own numbers, and tell you what to fix first. We do not run ads or email. No pitch. No email gate.

Tracking is where our Shopify CRO service starts: the six-phase audit includes a tracking check, so you know which numbers to decide from.

Free 30-min diagnostic

Seen enough?
Book a free diagnostic.

We'll look at where your store loses buyers after the click and what to fix first. No pitch. No email gate. 30 minutes.

More from Prism3