Why GA4, Meta, and Google Ads Never Show the Same Number

April 21, 2026
by Cherry Rose

Your GA4, Meta Ads Manager, and Google Ads dashboards will never report the same conversion number for your WooCommerce store — and roughly a third of the gap is a structural fact of how each platform defines “conversion” that no configuration will close. The other two-thirds is the data-collection gap — ad blockers, Safari’s cookie cap, consent denials — and that part IS fixable with first-party server-side tracking. For a store with 80 real orders in a week, the typical spread looks like this: Meta reports about 101 (26% over), Google Ads about 96 (15-20% over), GA4 about 52 (18-35% under). Same store. Same week.

The Three-Number Problem Is Universal

Every WooCommerce operator running Meta and Google campaigns has seen the same Monday-morning scene: three dashboards, three different numbers, no idea which one to tell the CFO. The instinct is to keep reconfiguring until they match. That instinct is wrong. The numbers don’t match because they are not measuring the same thing.

The worked example numbers above are averages from published industry benchmarks: Meta reports 26% higher conversions on average than analytics tools (Varos Industry Benchmark, 2024), Google Ads over-attributes by 15-20% when Enhanced Conversions or Consent Mode V2 triggers modeled conversions (Google Ads documentation, 2024), and GA4 underreports paid-campaign conversions by 18-35% when cookies are rejected or blocked (Cardinal Path analysis, 2024). For 80 real orders, that’s Meta claiming ~101, Google Ads claiming ~96, GA4 claiming ~52. Ginny Marvin, formerly Google’s Ads Liaison, has pointed out publicly that even when stores import GA4 purchases directly into Google Ads as the same event, the counts still diverge — the two platforms simply don’t add up identically.

There is no configuration that makes three different measurement systems produce the same integer. The productive question is which part of the gap is solvable and which part you should stop fighting.

The Unsolvable Third: Attribution Philosophy

Roughly a third of the discrepancy comes from each platform defining “a conversion” differently. This part will never close. The correct response is to understand it, not to fix it.

  • Meta uses last-event attribution. Meta counts any purchase within 7 days of an ad click or within 24 hours of an ad view (Meta Attribution Settings, 2024). If a shopper saw your ad on Tuesday, visited from a Google search on Thursday, and bought on Friday, Meta still claims the conversion. GA4, by default, credits the Google session as the source.
  • Google Ads gives credit to any Google touchpoint in the path. That produces an overlapping claim. The same Friday purchase above can be simultaneously claimed by Meta (7-day view window) and Google Ads (data-driven attribution to the Google click). Both numbers are “right” inside their own models. Neither matches.
  • Meta sees logged-in identity; GA4 sees browser cookies. More than 65% of conversions start on one device and finish on another (Meta / Facebook Business, 2023). Meta’s Facebook ID follows the shopper from phone to laptop. GA4’s cookie doesn’t. This alone produces a systemic 15-25% Meta-over-GA4 variance before anything else is miscounted.

Himanshu Sharma of Optimize Smart has noted on LinkedIn that even when a WooCommerce merchant imports GA4 purchase events directly into Google Ads as the conversion source, Google Ads still frequently records a lower number than GA4 — because Google Ads’ own attribution layer then re-filters the imported events against its click window. Two platforms reading the same source data can still produce two different totals.

The honest answer to “which number should I trust” is: none of them, for ground truth. Your WooCommerce admin has the ground truth.

The Solvable Two-Thirds: The Collection Gap

The other — larger — portion of the discrepancy is pure data loss in the browser. Every platform depends on a client-side tracking signal firing correctly. That signal fails in predictable ways:

  • Ad blockers kill the pixel. Global ad blocker usage sits at roughly 31.5% (Statista, 2024). For those visitors, GA4’s gtag never fires, the Meta Pixel never fires, and the Google Ads conversion tag never fires. The order still happens on your server. None of your dashboards see it.
  • Safari ITP and Firefox ETP cap cookie lifespan. Safari limits third-party cookies to 7 days, which means GA4’s attribution window can silently expire mid-funnel.
  • Consent denials remove the signal entirely. In consent-heavy regions, a visitor who rejects cookies produces no trackable client-side event. Google and Meta fill the gap with modeled conversions — machine-estimated purchases when the signal was lost — which is exactly what produces the 15-20% Google over-attribution and a meaningful portion of Meta’s 26% overshoot.

The collection gap is what makes your dashboards wrong in a fixable way. It’s also the portion where first-party server-side tracking closes the distance.

For small and mid-sized stores, modeled conversions are actively worse than a real signal, and for the smallest stores they simply don’t work at all — Google’s Consent Mode modeling requires 700 ad clicks a week to kick in, a threshold most WooCommerce stores never hit. When the modeling fails, the undercount becomes permanent.

The Worked Example, Fixed at the Collection Layer

Imagine the same 80-order store with a first-party server-side pipeline in place. Every confirmed WooCommerce order fires one canonical server event. That event is then delivered in parallel to GA4 via Measurement Protocol, Meta via the Conversions API, Google Ads via Enhanced Conversions, and BigQuery via streaming insert. Same event_id. Same timestamp. Same hashed user data. No ad blocker in the path.

The collection gap effectively closes. GA4 now sees 80 purchases instead of 52, because the event reached it from the server rather than a browser where it could be blocked. Meta’s CAPI event arrives reliably, so the platform stops imputing as many modeled conversions and the 26% overshoot narrows sharply. Google Ads’ Enhanced Conversions receives hashed customer data from the server, tightening attribution instead of filling gaps with estimates — and for stores auditing their Enhanced Conversions setup before Google’s mid-2026 auto-migration, the collapsed single-toggle flow assumes you already have a clean server-side source.

The attribution-model gap is still there. It’s just honest now. Meta may still claim 90 conversions against GA4’s 80, because Meta’s window is wider and its identity graph is cross-device. That’s a real business fact about Meta, not a tracking failure. You can stop reconfiguring and start optimizing.

Transmute Engine™ is the first-party Node.js server that makes this architecture work on WordPress — it runs on your own subdomain (e.g. data.yourstore.com), receives real WooCommerce events from the inPIPE plugin, and fans them out to GA4, Meta CAPI, Google Ads, TikTok, Klaviyo, and BigQuery from a single source of truth. Because the event originates on your server, ad blockers and ITP are no longer in the signal path.

What This Means for Your Reporting

The reporting discipline to adopt, once the collection layer is fixed:

  • Ground truth lives in WooCommerce, not in a dashboard. Your admin order count is the real number. Everything else is a modeled perspective on that number.
  • Use each platform’s number only for that platform’s decisions. Meta’s conversion count is correct for Meta bidding. Google’s is correct for Google bidding. Stop comparing them directly.
  • Pick one downstream warehouse for cross-channel truth. BigQuery fed by the same server-side event is the only view that lets you answer “how many sales did we actually get from each channel” without platform inflation or undercount.
  • Expect remaining variance of 10-15%, not 40-50%. If your dashboards are still showing a 2x spread after server-side tracking is in place, the problem is configuration — usually duplicate events or misaligned attribution windows — not the architecture.

Meta’s event-volume thresholds are a separate downstream concern worth checking once the collection layer is clean — Meta Advantage+ requires 50 purchase events a week, and an inflated pixel count can quietly hide the fact that your store isn’t producing enough real events for the system to optimize against.

Key Takeaways

  • GA4, Meta, and Google Ads will never report the same number for the same store in the same week, by design.
  • About a third of the discrepancy is attribution philosophy — Meta’s last-event model, Google’s credit-any-touch model, GA4’s session model. This part is permanent.
  • The other two-thirds is collection loss — ad blockers (31.5% of users), Safari ITP, consent denials, and the modeled conversions platforms generate to fill the gap.
  • First-party server-side tracking closes the collection gap by sending the same canonical event to every platform from your own subdomain, bypassing browser-level blocking.
  • Ground truth is WooCommerce admin or BigQuery, not any ad platform dashboard. Use each dashboard only for decisions about that platform.

Frequently Asked Questions

Which platform should I trust when Meta shows 120, Google Ads shows 85, and GA4 shows 60?

None of them are the source of truth for your business. Your WooCommerce admin order count is. Use Meta’s number to optimize Meta campaigns, Google Ads’ number to optimize Google Ads campaigns, and GA4 to understand cross-channel user behavior. The reconciliation you’re looking for lives in your WooCommerce database, or downstream in a warehouse like BigQuery that receives a canonical server-side event from every purchase.

Can server-side tracking make my GA4, Meta, and Google Ads numbers match?

It can close the collection gap — the portion of the discrepancy caused by ad blockers, Safari ITP, consent denial, and client-side data loss — by sending the same event from your server to every platform simultaneously. It cannot close the attribution-model gap, because Meta’s last-event model, Google’s credit-to-any-touch model, and GA4’s session-based counting are philosophical, not technical. After server-side tracking, the numbers are closer and the remaining gap is explainable instead of mysterious.

Why does Meta over-report conversions compared to Google Analytics?

Three structural reasons. First, Meta uses logged-in Facebook identity, which follows users across devices — GA4 relies on browser cookies that reset between devices. Second, Meta’s default attribution window is 7-day click plus 1-day view, which is wider than GA4’s paid default. Third, Meta’s modeled conversions estimate purchases where the signal was lost. All three push Meta’s number up relative to a cookie-based analytics tool.

How do I reconcile GA4 purchases with Google Ads conversions for my WooCommerce store?

The first reconciliation is the direction of error. GA4 undercounts when cookies are blocked; Google Ads overcounts when Enhanced Conversions and Consent Mode V2 fill gaps with modeled data. Use your WooCommerce admin — or a server-side pipeline streaming to BigQuery — as the ground-truth order count, then expect Google Ads to read higher and GA4 to read lower. Trying to force them to match means reconfiguring one platform until it stops telling you the truth.

Should I stop using GA4 if it underreports so badly?

No. GA4 is still the strongest tool for understanding user behavior across your site — pages per session, funnel drop-off, traffic source mix. It’s a bad source of truth for conversion counts, which is a separate problem. Use it for behavioral analysis and use your WooCommerce admin or a warehouse for conversion accounting.

Close the collection gap at the source — start with first-party server-side tracking at seresa.io.

Share this post
Related posts