Most Shopify owners meet their tracking for the first time when something looks wrong. For example, Meta might report 40 sales last week while Shopify shows 31 orders and GA4 shows 26 purchases. All three are “right” by their own rules, and none of them is the number you should run the business on. This guide explains the moving parts in plain terms, so you can tell normal differences from real problems.

The four pieces you are probably running

Ad pixels

A pixel is a small script from an ad platform (Meta, Google Ads, TikTok, Pinterest) that runs in your visitor’s browser. When someone views a product, adds to cart or buys, the pixel sends an event such as Purchase back to the platform, with details like order value and currency. The platform uses those events for two jobs. It reports conversions to you, and it feeds its bidding system so it can find more people like your buyers. If the events are wrong, both jobs suffer.

GA4

Google Analytics 4 is your analytics tool, not an ad platform. It records sessions, pages, traffic sources and e-commerce events like view_item, add_to_cart and purchase. Its job is to show you how people find and use your store across every channel, including email, organic search and direct visits. GA4 can share conversions with Google Ads, but its reports follow its own attribution rules.

Google Tag Manager

Google Tag Manager (GTM) is a container for other tags. Instead of pasting each script into your theme, you install GTM once and manage GA4, Google Ads and other tags inside it. GTM sends nothing on its own. It is a delivery system, and it is only as accurate as the triggers and data you give it. On Shopify, GTM can run on storefront pages through the theme. Inside checkout it can only run within Shopify’s customer events sandbox, which limits what it can see and do.

Shopify customer events (Web Pixels)

Shopify has retired the old “additional scripts” box that once ran on the order status page. Tracking in checkout now runs through customer events, built on Shopify’s Web Pixels API. There are two kinds:

  • App pixels are added by apps such as Google & YouTube or Facebook & Instagram. You switch them on in the app and see them under Settings, Customer events.
  • Custom pixels are code you or a developer paste into Settings, Customer events. They run in a sandbox and listen for standard events such as page_viewed, product_added_to_cart, checkout_started and checkout_completed.

A script that worked in your theme years ago may not see the same data inside checkout.

Why the numbers never match

Some gaps are healthy. Others mean money is being spent on bad data. These are the usual causes.

Cause What it does to your numbers
Attribution rules Meta counts a sale if someone clicked or viewed an ad within its window, even if they bought days later through email. GA4 gives credit by its own model. Both can claim the same order.
Consent refusals Visitors who decline tracking are not recorded in full, so GA4 and pixels see fewer orders than Shopify.
Ad blockers and browser limits Some browsers and extensions block tracking scripts or shorten cookie life, so sales go missing or lose their ad click.
Duplicate tags Two tools sending the same purchase event will count one order twice.
Time zone and currency A store set to Toronto time and a GA4 property set to Los Angeles time will split days differently. Mixed currencies make revenue look wrong.
Revenue definitions Shopify’s total sales may include tax and shipping and subtract returns. GA4 shows whatever value your tag sends.
Orders outside the browser Draft orders, POS sales and subscription renewals often never touch a pixel.

Shopify is your source of truth for orders and revenue. GA4 is your source of truth for how people behave and where they came from. Ad platforms are best read as their own view of their own influence. You compare them to find problems, not to make them agree to the dollar.

If an ad platform reports more purchases than Shopify recorded orders, treat that as a warning sign. Attribution can explain some of it, but duplicate events are the more common cause.

What to check first

These checks take an afternoon and tell you whether you have a small gap or a real leak.

1. Compare order counts, not revenue

Pick a recent week. Write down the number of orders in Shopify, the number of purchases in GA4 and the number of purchases in Meta Events Manager. Order counts are easier to compare than revenue because they do not depend on tax, shipping or currency settings.

GA4 will usually be lower than Shopify. If it is higher, or if any tool shows more purchases than orders, you probably have duplicates.

2. List everything that sends data

Open Settings, Customer events, and note every app pixel and custom pixel. Then check your theme for hardcoded scripts, look at which apps have tracking features switched on, and ask whether anyone added GTM in the past. Stores that have changed agencies or apps a few times often find two or three tools all sending purchase.

3. Place a test order and watch it arrive

Open GA4’s DebugView or Realtime report and Meta’s Test Events tool, then buy something cheap on your own store (you can refund it afterward). Watch for one purchase in GA4 and one Purchase in Meta, each with the right value and currency. Two of anything is a duplicate. None means the event is broken or blocked.

4. Check that every purchase carries an order ID

GA4 expects a transaction_id on each purchase, and Meta uses an event_id to match browser and server events. Without them, duplicates slip through and you cannot trace an order from one tool to another.

If you have a cookie banner, decline everything and browse your store with your browser’s developer tools open. Requests to Google or Meta that still go out before or after a “no” are a privacy problem as well as a data one. If you have no banner at all and sell to Canadians, read our guide to Consent Mode v2, PIPEDA and Law 25.

When the gap is worth fixing

A small, steady gap between GA4 and Shopify is normal and mostly explained by consent and blocked scripts. These signs mean something is broken:

  • An ad platform or GA4 shows more purchases than Shopify has orders.
  • Revenue in GA4 is a round multiple of Shopify’s, such as roughly double.
  • The gap jumped on a specific date, often when an app was installed or the theme changed.
  • Purchases arrive with a value of zero or the wrong currency.
  • Ad platforms show conversions but almost none are linked to a click.

Any of these means your ad platforms are optimizing on bad data. Google and Meta will put budget behind whatever signal you send, so a duplicated or missing purchase quietly shapes who sees your ads.

What to do next

Run the order count comparison for last week and write the three numbers down. If they are close and nothing above sounds familiar, your setup is probably fine for now. If you see more purchases than orders, a sudden jump, or tools you cannot account for, send us your store URL through the free tracking check and we will tell you where the gap is coming from. For a full trace with test orders and a ranked fix list, see the Tracking Audit.