CRO Diary · a conversion specialist's working notebook entries reviewed weekly
CRO Diary

More sales from the traffic you already have

Notes

Conversion Rate Meaning and Formula: Why GA4 Never Matches Shopify

The formula is one line of arithmetic, orders divided by sessions. Yet GA4 and Shopify Analytics run it on the same store and print two different numbers every single day. Here is exactly where the two counters diverge.

From the diary · CRO Diary  ·  August 2, 2026  ·  5 min read  ·  AI-drafted from sourced data

Two vintage desk calculators showing different totals side by side on printed analytics reports next to an open notebook
Photo via Openverse (CC0)

A store owner once showed me two dashboards for the same week and asked which one was lying. Shopify said 2.1%, GA4 said 1.6%, and both were produced by billion-dollar companies from the same visitors. The answer I gave then is the answer of this note: neither is lying, they are counting different things with different tools in different places, and once you can name the exact points of divergence, the gap stops being scary and starts being useful.

The formula everyone agrees on

Conversion rate is orders divided by sessions, times 100. Not revenue, not add to carts, not visitors: completed orders over sessions. A session is one visit, and both platforms close it after 30 minutes of silence. That is the whole formula. Which makes it stranger that the two reports never match, until you look at where each platform gets its two inputs.

Where the counters diverge

ONE VISITOR, TWO COUNTERS WHY THE SAME STORE PRINTS TWO CONVERSION RATES VISITOR SHOPIFY: SERVER SIDE + EVERY SESSION REACHES THE COUNTER + ORDERS = THE ACTUAL ORDER TABLE + NOTHING FOR A BLOCKER TO BLOCK GA4: BROWSER SIDE - AD BLOCKERS AND ITP DROP TAGS - CONSENT DECLINES DROP VISITORS - SESSIONS ESTIMATED VIA HLL++ - PURCHASE EVENT CAN MISFIRE RATE A: MONEY-FACING RATE B: BEHAVIOR-FACING SAME VISITORS, SAME FORMULA, DIFFERENT COLLECTION. SOURCES: GOOGLE ANALYTICS HELP, SHOPIFY HELP CENTER, JULY 2026
The gap is not an error. It is two instruments pointed at the same street from different windows.

Shopify counts where the money lives. Its session counter runs on the platform serving the pages, so a visitor cannot opt out of being a session, and its order counter is the order table itself. If the money arrived, the order is in the numerator. This is why I treat the Shopify number as the system of record: both inputs are complete by construction.

GA4 counts through a tag in the browser. Every session and every purchase must survive the trip: the gtag must load, the visitor must not be running a blocker, the consent banner must be answered generously, and the confirmation page must fire its purchase event before the customer closes the tab. Each failure thins the data. On top of collection, Google documents that since October 2021 GA4 counts sessions with HyperLogLog++, an estimation algorithm that trades exact counting for speed, which alone guarantees small disagreements with any exact counter.

The result is systematic, not random: GA4 usually sees fewer sessions than Shopify and misses a slice of purchases, and because the two losses are different sizes, the computed rate lands somewhere else entirely.

The mismatch map

InputShopify AnalyticsGA4Effect on the printed rate
Session countingServer side, completeBrowser tag, thinned by blockers and consentGA4 denominator smaller
Session arithmeticCountedEstimated with HLL++ (documented)Small drift either way
OrdersThe order table itselfpurchase event, can misfire on confirmationGA4 numerator smaller
Bots and internal trafficPlatform filteringProperty settings, often unconfiguredEither denominator inflated
Time zone and week startStore settingsProperty settingsSame day, different buckets

Two rows in that table are pure configuration. I have watched a “conversion crisis” dissolve when someone noticed the GA4 property lived in UTC while the store lived in New York, so every evening’s orders were falling into different days on the two dashboards.

Methodology: what this note is based on

The GA4 mechanics here, session_start, the 30 minute inactivity timeout, sessions spanning midnight, and HyperLogLog++ estimation applied since October 2021, are taken directly from Google’s own documentation page on Analytics sessions, read in July 2026. The Shopify side reflects the Shopify Help Center’s definitions of sessions and online store conversion in its analytics documentation, read in July 2026: conversion rate there is the share of sessions that resulted in an order, with sessions expiring after 30 minutes of inactivity. No client data appears in this note; the two-dashboard anecdote is included as an illustration of configuration drift, with no numbers attached beyond the publicly typical direction of the gap.

What I actually do about it

First, I appoint Shopify as the official scoreboard and say so out loud, in writing, so nobody quotes GA4 in the Monday meeting. The benchmarks I compare against, like Littledata’s 1.4% Shopify average, are Shopify-measured, so like meets like.

Second, I use GA4 only for questions Shopify cannot answer: which channel’s sessions convert, where the funnel narrows, what mobile does differently. Ratios inside GA4 are fine, because the thinning applies roughly evenly to both sides of an internal comparison.

Third, I never chase a gap smaller than the tools’ own noise. The two counters will disagree every week of their lives, for the documented reasons above. The day worth investigating is the day the gap suddenly changes size, because that means something real broke: a consent banner update, a broken purchase event, a new app injecting sessions. The steady disagreement is just physics. My GA4 funnel walkthrough picks up from there.

Questions I get about this

What is the formula for ecommerce conversion rate?

Orders divided by sessions, multiplied by 100. If your store had 20,000 sessions last month and 300 of them included a completed order, your conversion rate is 1.5%. Every platform uses this arithmetic; the disagreements come from how each platform defines and collects the two inputs, not from the math.

Why is my GA4 conversion rate different from Shopify Analytics?

Four structural reasons. GA4 collects in the browser and loses visitors who block or decline tracking, while Shopify counts server-side. GA4 estimates session counts with the HyperLogLog++ algorithm rather than counting exactly, as documented by Google. The purchase event in GA4 can fail to fire on the confirmation step even though the order exists. And settings like time zone, internal traffic filters and bot handling rarely match between the two properties.

Which conversion rate should I trust, GA4 or Shopify?

For the question 'what share of visits end in an order', trust Shopify: its numerator is the actual order table and its denominator is not thinned by blockers. For the question 'where in the funnel do people leave, on which device, from which channel', use GA4, because that is what it is built for. The mistake is not choosing either one, it is mixing them mid-analysis.

Do Shopify and GA4 at least define a session the same way?

Close but not identical. Both end a session after 30 minutes of inactivity. GA4 starts one with a session_start event when a page is viewed and no session is active, and a GA4 session can span midnight. The practical differences come less from the timeout and more from which visitors ever get counted at all.

Sources & data

  1. Google Analytics Help, [GA4] Analytics sessions: session definition, 30-minute timeout, session_start, HyperLogLog++ session counting (accessed July 2026)
  2. Shopify Help Center, Reports and analytics: sessions and online store conversion definitions (accessed July 2026)
  3. Littledata, Shopify benchmark of 2,800 sites: average conversion rate 1.4%, checkout completion 45% (2023 benchmark, accessed July 2026)
Cite this entry: CRO Diary (2026). “Conversion Rate Meaning and Formula: Why GA4 Never Matches Shopify.” https://crodiary.com/notes/conversion-rate-meaning-and-formula-ga4-vs-shopify/