Skip to content

Conversion Tracking  ·  Reconciliation

Why don't my GA4 and Meta conversion numbers match?

GA4 and Meta will never match exactly, and they are not supposed to. Meta credits conversions back to the click within its own attribution window and models the iOS gap. GA4 uses last-non-direct attribution and counts only what its tag observed. A 10 to 30 percent gap is normal. Wider than that points at a tracking problem.

They count different things on purpose

GA4 and Meta both report conversions, but they answer different questions. Meta answers “how many of these orders can I credit back to an ad someone saw or clicked.” GA4 answers “which channel got last-non-direct credit for the session that converted.” Those are two different definitions, so the totals will not line up. Expecting them to is the mistake, not the gap itself.

I treat Shopify as the ledger. The order count inside the Shopify admin is the number no platform can overrule. Meta and GA4 are both attempting to attribute those orders, and each uses its own rules to do it. So the first move is never to ask which platform is right. It is to ask how far apart they are and whether that distance is explainable.

A normal gap is 10 to 30 percent depending on your iOS share and how much of your traffic Meta has to model. Inside that band, the numbers are doing their job. Outside it, something is broken.

The three reasons the numbers diverge

Attribution windows

Meta’s default is a 7-day click, 1-day view window. A person clicks your ad Monday, comes back through a Google search Thursday, and buys. Meta still claims that order inside its 7-day window. GA4 gives the credit to organic search, because that was the last non-direct touch before the purchase. Same order, two different owners. Multiply that across a few hundred orders and the totals drift apart with nothing actually wrong.

View-through conversions widen the gap further. Meta counts a conversion when someone saw the ad and did not click, then bought within a day. GA4 has no concept of that order being Meta’s. So Meta will almost always report more conversions than GA4 credits to paid social.

Modeling and the iOS gap

Since iOS 14.5, a large share of Meta conversions are modeled rather than directly observed. When the pixel and Conversions API cannot confirm an order against a real user, Meta estimates it from aggregate patterns. That modeled number runs optimistic against Shopify’s actual order log, usually by 10 to 40 percent depending on how much of your audience is on iOS. Meta is not lying. It is filling in what tracking restrictions took away. Read Meta conversions as directional, not as ledger truth.

GA4 does some modeling too, in the conversion paths and the attribution report, but it is far more conservative. It mostly counts what its tag observed. So GA4 tends to undercount where Meta tends to overcount, and the two errors push in opposite directions.

Deduplication and double firing

This is the one that signals a real problem. If your Meta pixel and your Conversions API both fire a purchase and they are not deduplicated by a shared event_id, Meta counts the same order twice. The same thing happens in GA4 when a purchase event fires on both the thank-you page and a server-side tag without a transaction_id to dedupe against. I have seen accounts reporting 130 paid conversions on 100 actual orders for exactly this reason. When the platform total is higher than your Shopify order count for the period, double firing is the first thing to rule out.

How to read the gap in 15 minutes

Pull five numbers for the same date range and put them in one row of a spreadsheet:

  1. Meta reported conversions
  2. GA4 paid-social conversions
  3. GA4 total paid conversions, both channels
  4. Shopify paid-source orders
  5. Shopify revenue

Now check two relationships. Meta should run higher than GA4’s paid-social number, and the gap should sit inside that 10 to 30 percent band. GA4’s total paid conversions should land within roughly 20 percent of Shopify’s paid orders. If both hold, your tracking is healthy and the divergence is just the platforms doing their jobs differently. Stop there.

If either relationship breaks, you have a tracking problem, not a performance problem, and chasing it through bid changes will waste budget. The two failure shapes are the platform reporting more than Shopify (double counting or undeduplicated events) and the platform reporting far less than Shopify (a tag that stopped firing, a consent banner blocking the pixel, or a checkout the tag never sees).

When the gap is a real problem

A few patterns tell me to stop reading and start auditing:

  • The platform total exceeds the Shopify order count for the same period. That is double counting, not strong performance.
  • The gap is widening week over week with no change in iOS share or channel mix. Something in the tracking stack drifted.
  • GA4 paid conversions collapsed after a theme update, an app install, or a consent-banner change. The tag is firing in fewer sessions than it used to.
  • Meta conversions are flat while Shopify orders climb. The Conversions API may have lost its match quality, and Meta is modeling blind.

The fix lives in the deduplication contract between the pixel, the Conversions API, and the GA4 tag, plus the reconciliation back to Shopify. My Tracking Stack reference covers both. The free 25-page audit is where I check this against a real account, and the Wasted Spend Calculator anchors what a tracking gap is costing in misallocated budget.

The honest read

GA4 and Meta not matching is the normal state of a healthy account. Two platforms, two attribution definitions, two amounts of modeling. The job is not to force them into agreement. It is to know the size of the gap you should expect, watch it over time, and treat Shopify as the number that settles every argument. When the gap stays inside the band, leave it alone. When it breaks the band, fix the tracking before you touch a single bid. The hub at /wasted-ad-spend/ walks through the rest of the leaks.

Want this diagnosed in your account?

Same diagnosis,
run on your account.

Thirty minutes on the phone. I look at your spend, your tracking, and your search-term reports before the call. You walk out with a clear list of what is leaking and what to fix first.

Book a Call