GA4 and Shopify order gap: check your orders before Black Friday

Partner · Strategy, advertising and measurement
GA4 counts fewer orders than your store. That is normal up to a point: visitors who refuse cookies, ad blockers and payments that leave the site stop the purchase event from firing. What is not normal is a gap that changes from one month to the next. An audit published on October 28, 2026 shows a store whose GA4 recorded 81% of web orders in fall 2024, 41% in fall 2025 and 32% over the holidays, without a single alert going off. The method for measuring your own gap takes three steps and a spreadsheet. It is done before Black Friday on November 27, 2026, not after.
- The store (Shopify, WooCommerce) is the source for orders and revenue. GA4 explains behaviour and trends. Ad platforms report their own claims.
- A stable gap of 15% to 25% is common. A gap that moves, a week at zero or a week above 100% signals a tracking problem.
- The leading cause is refused consent. GA4 only fills that hole through modelling from 1,000 denied events per day for 7 days.
- Server-side tagging does not recover an event that never left the browser. Only sending it from the store itself, when the order is created, does.
- A five-minute weekly check (GA4 against Search Console) detects a tracking outage the week it starts.
On this page
GA4 capture rate
The GA4 capture rate is the share of your store's web orders that GA4 records: the number of purchases counted in GA4 (the distinct transaction IDs on the purchase event) divided by the store's number of web orders for the same weeks. It is calculated week by week. Its stability matters more than its level.
Why there is a gap between GA4 and Shopify
Shopify and WooCommerce record an order on their server when the payment is accepted. GA4 only records a purchase if its code runs in the customer's browser, on the confirmation page, to send the purchase event. Anything that stops that code from running creates a gap. Shopify puts it in black and white: Google can only count visitors who have JavaScript and cookies enabled. A customer can also install a browser extension that blocks Google Analytics.
Six causes explain nearly all the gaps we come across.
1. Refused consent
In Quebec, Law 25 requires cookies that are not needed for the site to work to be turned off by default. Every visitor who clicks "Refuse" buys without GA4 seeing it. In Christian Goodrich's audit, two stores show exactly this profile: one captured 76% of its web orders in fall 2024 and again in fall 2025, the other between 72% and 84% every week. The gap is stable because the share of people who refuse is stable.
Google offers to fill that hole through modelling, but it is only available to properties that receive at least 1,000 events per day with consent denied for at least 7 days, plus at least 1,000 daily users with consent granted for at least 7 of the last 28 days. Most Quebec SMEs do not reach those thresholds. And even when it applies, modelling does not touch event counts: it models users and sessions, not purchases. The limits of this mechanism are covered in Consent and measurement: understanding Google Consent Mode's limits.
2. Browsers and blockers
In September 2026, Safari held 55.49% of the mobile browser market in Canada. Its tracking protection limits cookie lifetime, which does not stop the purchase from being counted but often attaches it to a new session, without its source. Ad blockers, for their part, stop the event from being sent at all.
3. Payment that leaves the site
Shopify's checkout_completed event, the one that feeds the purchase in GA4, fires only once per order, normally on the thank-you page. If that page does not load, the event does not fire at all. That is what happens when a customer pays with PayPal on their phone and comes back to a tab they close right away, or when an upsell page comes in between: in that case, Shopify fires the event on the first offer, not on the thank-you page. An audit of 27 American Shopify stores found that 78% of them send checkout to a Shopify domain (shop.app, pay.shopify.com or checkout.shopify.com) rather than their own, which makes it harder to tie the order to the visit.
4. The consent banner that goes down
This is the most insidious cause in Goodrich's audit. At retailer A, sessions disappeared in blocks. Each block ended on the 14th of the month. The store had changed consent banner providers in 2025. Its plan included a set number of page views. The quota ran out and the banner stopped showing until the next billing cycle. No one could consent any more. On December 1, 2025, the quota ran out; GA4 recorded nothing until December 15. At retailer B, the same mechanism with blocks ending on the 20th: 94% of orders captured in fall 2024, 36% in fall 2025, then revenue shown down 69% in GA4 while net sales had climbed 18.5%.
5. Duplicates
At retailer C, 657 of the 3,365 order numbers recorded in GA4 in fall 2025 carried more than one purchase event, for 735 extra purchases. For the quarter as a whole, GA4 showed 4,100 purchases against 4,501 orders: the errors almost cancelled each other out. The total looked plausible. We described this mechanism in Conversion tracking: spotting actions counted twice.
6. Bots
Retailer D received 23,187 sessions on September 27, 2026 and 25,622 the next day, against 300 to 900 a day in mid-September: direct visits, on Chrome, lasting about a second, with no orders to match. GA4's known-bot filter does not catch them when they run the site's code like a browser. The countermeasure is described in GA4 spam traffic: how to spot and block it with the hostname filter.
What gap between GA4 and Shopify is normal
The published benchmarks are all rough orders of magnitude; none comes from an independent study. Littledata, quoted by Clickport, estimates that 20 Shopify orders out of 100 never show up in GA4. Ruler Analytics describes a 5% to 10% revenue gap as normal. For WooCommerce, Clickport considers capture of 85% or more a normal gap and says that below 75%, something is broken. In Goodrich's audit, healthy stores captured 72% to 84% of orders.
Our reading: the level matters less than the stability. A store that captures 75% of its orders every week has tracking that works and a share of customers who refuse cookies. A store that goes from 81% to 41% has broken tracking, even if 41% still looks like "a lot of data."
The three-step method for measuring your gap
Goodrich's method fits in a spreadsheet and is repeated every week during peak season.
Export your web orders by week
Take fall 2024 and fall 2025, removing orders that do not go through the site: marketplaces, subscriptions, orders entered by hand.
Pull GA4 purchases for the same weeks
Count distinct transaction IDs on the purchase event. Do not use the "Transactions" metric, which also counts refunds.
Divide GA4 purchases by store orders
You get your capture rate, week by week.
Reading your capture rate
| What you see | What it means | What to do |
|---|---|---|
| Between 70% and 90%, stable week to week | Working tracking, normal share of refusals | Nothing to fix; note the level as your baseline |
| A step: the rate changes suddenly and stays there | A change of theme, app, consent banner or payment broke tracking | Find the date, then what was changed that day |
| One or more weeks close to zero | Consent banner down or purchase code missing | Check the banner's plan and the thank-you page |
| A week above 100% | Duplicates or late catch-up of events | Count purchase events per transaction ID |
| Blocks that always start or end on the same date of the month | Consent banner quota | Change plans before peak season |
Two checks round out the method. In a GA4 exploration, list the number of purchase events per transaction ID: anything above one is a duplicate. And look for days with sessions but no purchases at all, followed by a burst of purchases classified as "Unassigned": that is the signature of a late catch-up, as at retailer C, which saw 1,261 orders arrive on December 9, of which 1,000 carried an order number several weeks old.
The weekly alarm
A tracking outage does not show up in GA4, since GA4 is the tool that is down. It shows up when you compare GA4 with a source that does not depend on your code. Every week, divide GA4's "Google organic" sessions by Search Console clicks. The ratio should stay roughly constant. At retailer C, Google sent 4,244 clicks in the week of November 3, 2025 while GA4 recorded 57 organic sessions: Search Console had not moved; GA4 had gone silent. This check takes five minutes and detects the outage the week it starts.
The Shopify case
Since the old integration was retired, Shopify recommends installing GA4 through the Google & YouTube channel to get "the most accurate tracking." Old GA4 code left in place is converted into a custom pixel, which runs in a sandbox with reduced functions: Shopify warns that data may change or, in some cases, be lost. Cross-domain measurement may also not work. Two pieces of Shopify's advice are worth following to the letter. First, do not compare event counts between different services, even between Google Analytics and GA4, which process data differently; to compare, run a pixel in parallel. Second, connect your consent banner to Shopify's Customer Privacy API, otherwise consent given on the store is not passed on to pixels.
Also watch out for two systems running side by side: the Google & YouTube channel plus a Tag Manager container that also sends the purchase is the most common recipe for duplicates.
The WooCommerce case
On WooCommerce, the purchase event fires from the thank-you page, once, from the browser. In an audit of 75 stores conducted in May 2026, 100% of the 52 stores that used GA4 or Tag Manager tracked purchases from the browser only, with no server-side fallback. Two pitfalls specific to WooCommerce add to this: a cached thank-you page can serve empty or stale order data. A custom thank-you page or a block-based checkout can prevent the code from firing. A business whose WooCommerce site was sped up with aggressive caching should check that the confirmation page is excluded from it.
Fixing it: what works and what does not
Server-side tagging recovers nothing. A server-side Tag Manager container relays events the browser has already sent. If the purchase event never fired, there is nothing to relay. We wrote as much in Server-side tagging: benefits, limitations and costs: it protects against blockers and extends cookie life; it does not replace a missing event.
Sending from the store does. The lasting fix is to send the purchase to GA4 from the store's system, when the order is created, with the order number as the key, through Google's Measurement Protocol or through server-side tagging fed by the store. You need to capture GA4's client ID and session ID at checkout so the purchase ties back to the visit. On WooCommerce, the reliable hook is the moment the payment is confirmed, not the thank-you page. The browser code stays in place to measure behaviour.
Not in November. If you are starting from scratch, Goodrich recommends sending server-side data to a separate GA4 property for the whole peak season, then switching over in January, rather than changing methods in the middle of Black Friday.
Size your consent banner for the peak. Check your plan's page-view quota against last year's November and December traffic. Have limit alerts sent to the marketing team, not only to developers.
Server-side tagging and sending from the store change nothing about the consent requirement. A customer who refused cookies must not be tracked through another door. The gap caused by refusals stays: that is intended. This text is not legal advice.
What the gap does to your ad budget
A gap that moves does more than distort a chart: it moves money. At retailer A, fall web orders went from 5,874 to 7,686, while GA4 showed them down by a third. GA4 showed a Google Ads return on ad spend that had fallen from 8.07 to 4.79 and organic search revenue nearly cut in half. An attribution tool reconciled with actual orders showed the opposite: a Google Ads return that rose from 4.42 to 7.93 with 20% less spend. Attribution models differ, but they should not point in opposite directions. At retailer C, GA4 showed revenue from Google down 86% while net sales had grown 4.8%. A team reading those numbers cuts the budget of the channel that sells best.
Hence the rule we apply in our reports: orders and revenue come from the store; GA4 explains where visitors come from and what they do. Each ad platform reports what it claims. When the three disagree, the capture rate is the first number to look at. The sentence to say to the leadership team sounds like Goodrich's: "GA4 recorded 41% of our web orders this quarter, against 81% last year." Our method for connecting campaigns to actual sales is described in Conversion tracking: connecting your campaigns to actual sales.
If you are not sure what your GA4 is counting, that is exactly what our GA4 audit checks.
Frequently asked questions about the gap between GA4 and Shopify
GA4 shows fewer sales than Shopify: which one is right?
Shopify. The store records the order on its server when the payment goes through. GA4 only sees customers whose browser ran its code on the confirmation page. Use GA4 to understand where buyers come from, never to count sales.
Is a 25% gap between GA4 and Shopify serious?
Not if it is stable. Some visitors refuse cookies or block scripts. A gap of 15% to 25% is common. What should worry you is a gap that changes: a step, a week at zero or a week above 100%.
GA4 counts more orders than my store: how is that possible?
Those are duplicates. The purchase event fires twice for the same order, often because two systems send it (the Google & YouTube channel and a Tag Manager container, for example) or because the customer reloads the confirmation page. Count purchase events per transaction ID in a GA4 exploration.
Does server-side tagging fix the gap between GA4 and Shopify?
No. It relays what the browser sent; it does not create the missing event. To recover orders, you need to send them from the store itself, when the order is created, with the order number as the key. And refused consent stays refused.
How can I tell whether my consent banner has stopped showing?
Look at your daily GA4 sessions: empty blocks that always start or end on the same date of the month point to an exhausted page-view quota. Also compare GA4 organic sessions with Search Console clicks every week: if clicks hold steady and sessions drop, GA4 has gone silent.
- Shopify, Analytics discrepancies, accessed October 31, 2026. Source for the general causes of discrepancies (JavaScript and cookies, browser extensions, time zones, tracking methods).
- Search Engine Journal, GA4 Missed Two-Thirds Of One Retailer's Holiday Orders: Check Yours Before Peak Season, Christian Goodrich (SOZO), October 28, 2026. Source for the audit of eight British stores, all figures for retailers A to D, the three-step method, the Search Console check and the fix recommendations. The author works for an agency that worked with all eight stores; two of the accounts include phone or financing orders.
- Google Analytics Help, Behavioral modeling for consent mode, accessed October 31, 2026. Source for the eligibility thresholds (1,000 denied events per day for 7 days; 1,000 consenting daily users 7 days out of 28) and the modelled metrics.
- StatCounter, Mobile Browser Market Share Canada, September 2026 (Safari 55.49%, Chrome 38.13%).
- Shopify.dev, checkout_completed, Web Pixels API, accessed October 31, 2026. Source for the single firing on the thank-you page, the upsell case and the missing event when the page does not load.
- Clickport, Shop Pay, Apple Pay, PayPal: Why GA4 Misses Revenue (2026 Audit), David Karpik, updated July 14, 2026. Source for the audit of 27 stores (78% with checkout on a Shopify domain), the Littledata benchmark (20 orders out of 100) and the limit of server-side tagging. The author sells a tracking tool.
- Ruler Analytics, Shopify vs Google Analytics: Understanding the Data Discrepancies, Katie Rigby, March 25, 2026. Source for the 5% to 10% benchmark. The author sells an attribution tool.
- Clickport, WooCommerce Sales Not Tracking in GA4? We Audited 75 Stores, David Karpik, updated May 31, 2026. Source for the audit of 75 WooCommerce stores (100% of the 52 with browser-only tracking), the 85% and 75% thresholds, thank-you page caching and the hook on payment confirmation. The author sells a tracking tool.
- Shopify, Migrating pixels to the Google & YouTube app and custom pixels, accessed October 31, 2026. Source for the recommendation of the Google & YouTube channel, the limits of custom pixels, the advice not to compare event counts between services and the Customer Privacy API.

Gabriel almost always takes your first call and carries out your audit. He builds the strategy starting from your growth goal: where to put your budget, which market to test and how to connect each lead to a real sale in your CRM. He mainly leads engagements for three goals: Optimize the profitability of your digital campaigns, Develop a new market, and Generate demand and growth. With Geneviève, he also works on organic search (SEO), AI visibility (GEO) and conversion rate optimization (CRO). The sales a Google Ads or Meta Ads campaign brings in depend on the page that receives the click. He writes mainly about marketing strategy, paid advertising and measurement.
About Falia →