PostlytixGuidesWhy Klaviyo, GA4 and Shopify all report different revenue
Guide

Why Klaviyo, GA4 and Shopify
all report different revenue.

Three tools, three totals, same thirty days. The gaps are not bugs. Each system is answering a different question, and only one of them is answering the question your P&L asks.

Open three tabs for the same thirty days. Shopify shows $1,850,000 in net sales. GA4 shows $1,743,400 in purchase revenue. Klaviyo shows $412,000 attributed to email, which would be 22 percent of the business.

Every one of those numbers is correct. They disagree because each system defines a conversion differently, applies a different attribution window, and cuts the month at a different hour. Once you can name which mechanism is producing which part of the gap, the numbers stop being confusing and start being useful.

Shopify is the only one recording an order

Shopify writes an order server-side the moment payment authorizes. No browser is involved, so nothing can block it, and the record survives a closed tab, a dead battery, or a customer who switched devices mid-checkout.

The one trap in Shopify is that it reports several different totals and people quote them interchangeably. Gross sales is before discounts and returns. Net sales subtracts both. Total sales adds shipping and taxes back on. Those can differ by six figures on a brand this size, so a Shopify-to-Shopify discrepancy is usually two people quoting two different rows.

GA4 is counting browser sessions, and it will always be short

GA4 records a purchase when a tag fires in the customer's browser on your confirmation page. That means it structurally misses:

For Crestline the GA4 shortfall is $106,600, or 5.8 percent. That is normal. Expect GA4 to land 3 to 8 percent under your commerce platform, permanently. If your gap sits in that band, there is no bug and no work to do. A gap above 10 percent, or one that jumps between two consecutive months, is worth investigating as a genuine tagging fault.

Klaviyo is the number that misleads people most

Klaviyo's default attribution window credits email with a conversion if the customer clicked within five days or merely opened within five days.

The open half is where it falls apart. Since Apple introduced Mail Privacy Protection, Apple Mail pre-fetches images on the recipient's behalf, which registers as an open whether or not a human ever looked at the message. On a typical DTC list, well over half of opens now come from Apple Mail. Klaviyo dutifully counts those as engagement, then credits email for any order that follows within five days.

The result is that a customer who was already going to buy, who received a campaign they never read, generates an order that email takes full credit for. Multiply that across a large list and email appears to drive a fifth of your revenue.

The one-setting test. In Klaviyo, switch attribution to click-only and re-run the same date range. On most DTC accounts the attributed number falls somewhere between 30 and 60 percent. The difference is the portion that was resting entirely on opens that Apple manufactured.

Timezones, the boring one that moves five figures

Crestline runs on America/Chicago in Shopify. The GA4 property was left on the setup default. Klaviyo has its own account setting.

Each system therefore starts and ends the month at a different hour. At roughly $60,000 a day, a two-hour boundary offset moves about $5,000 between months, every month, in the same direction. It never averages out, and it quietly corrupts every month-over-month comparison anyone makes.

This takes about ten minutes to fix and nobody ever does it.

The whole gap, accounted for

Here is Crestline's month with every piece of the difference named.

LineAmountMechanism
Shopify gross sales$1,982,000Every order placed
Less discounts($84,000)Codes and automatic discounts
Less returns($48,000)22.4% return rate, refunds settled in-month
Shopify net sales$1,850,000The figure your P&L should use
Consent declines and ad blockers($71,200)Tag never fired
Cross-device and early exits($29,700)Purchase attributed elsewhere or lost
Timezone boundary offset($5,700)GA4 property not aligned to the store
GA4 purchase revenue$1,743,4005.8% under, entirely expected

And the email number, once you separate the two halves of the window:

Klaviyo attribution basisAttributedShare of net sales
Default: 5-day click or 5-day open$412,00022.3%
Click-only, same 5 days$198,00010.7%
Resting on opens alone$214,00011.6%

Crestline Co. is a simulated DTC brand used for demonstration. These figures are illustrative and are not a client result.

That $214,000 is the number that matters. It is not fake revenue, those orders happened. But it is revenue that email is claiming on the strength of an open that Apple performed automatically, and if you are deciding how much to invest in email against paid social, you are working from a figure that is roughly double what email can defend.

What to do

  1. Set every timezone to match your commerce platform. Ten minutes, removes a permanent recurring error.
  2. Re-run Klaviyo on click-only attribution and use that as your planning number. Keep the default view if you like, but do not budget against it.
  3. Establish your normal GA4 gap over three months. Once you know it runs at, say, 5.8 percent, you can spot a real tracking break immediately instead of investigating noise.
  4. Decide which number is the revenue number, write it down, and hold the line. It should be Shopify net sales reconciled to Stripe settlements.
  5. Never add channel-attributed figures together. Klaviyo, Meta and Postscript all claim the same orders.

The expensive part is not the discrepancy. It is the decision made on top of it: budget shifted toward email because it looked like a fifth of the business, or a campaign scaled on attributed ROAS while its contribution margin ran negative. Postlytix reads your commerce, email, ads, support and finance data together and flags where a measurement artifact is quietly steering real money.

Common questions

Why is Klaviyo's revenue number so much higher than I expect?
Klaviyo's default attribution window credits a conversion to email if the customer clicked within five days or merely opened within five days. Open-based attribution is the aggressive part. Apple Mail Privacy Protection pre-fetches images and registers opens the recipient never performed, so orders get credited to emails nobody read. Narrowing to click-only attribution usually removes a large share of the number.
Should GA4 match Shopify exactly?
No. A 3 to 8 percent shortfall is expected. GA4 measures browser sessions and loses every purchase where the tag did not fire: consent declined, ad blocker active, tab closed early, or checkout completed on a different device. Shopify records the order server-side, so it does not miss any of them.
How much of the gap is just timezones?
More than most people expect. If your Shopify store is set to America/Chicago and your GA4 property was left on the default, the two are cutting the month at different hours. On a brand doing $60,000 a day that shifts a meaningful figure between months, and it repeats every month in the same direction.
Which number do I report to my board?
Shopify's net sales, reconciled against what actually settled in Stripe. Klaviyo and GA4 answer channel questions, not accounting questions.