Google Ads conversions don't match GA4 because the two tools count the same sale in structurally different ways — different attribution models, click-date versus conversion-date timing, different counting rules, and different modeling. A gap is normal and expected, not a bug. Neither number is your source of truth for profit. Google Ads tells you how much credit its clicks earned; GA4 tells you how it splits credit across every channel. To make spend decisions, you need a third number: true per-order profit after product cost, fees, and shipping.

You open Google Ads and see 100 conversions. You open GA4 and see 74. Same store, same week, same customers. The instinct is that something is broken — a tag misfired, a pixel is double-firing, someone changed a setting.

Usually nothing is broken. The two platforms are answering two different questions, and the gap between them is baked into how each one works. This guide walks through every reason the numbers diverge, what counts as a "normal" gap, and — the part every other article skips — why chasing a perfect match wastes time you should spend on profit.

This is one piece of a larger reconciliation problem across your stack. If you're also seeing Google Ads revenue that doesn't match GA4 or order counts that don't line up, the same mechanics below explain those too.

The methodology gaps (these can't be "fixed")

Some of the mismatch comes from real data loss. Most of it comes from the two systems measuring the same reality differently. Start with the structural gaps, because no amount of tag surgery closes them.

They use different attribution models

Google Ads credits conversions to the ad interaction it can see — historically last-click, now often its own data-driven model within the ad account. GA4's default is data-driven attribution (DDA), which splits a single conversion's credit fractionally across every touchpoint in the path.

So one real sale can show as a full 1.0 conversion in Google Ads (all credit to the paid click) and only 0.4 of a conversion in GA4 (its modeled share to paid search, with the rest going to organic, email, or direct). Two systems, one sale, two different counts — both internally correct.

Google Ads reports a conversion on the date of the click that earned it. GA4 reports it on the date the purchase actually happened.

A customer who clicks your ad on Monday and buys on Thursday shows up in Google Ads on Monday and in GA4 on Thursday. Compare a single day and the numbers will never agree. This is why you should always reconcile on trailing 7-to-14-day windows, never day-by-day.

They count conversions differently

Google Ads lets you count "every" conversion or "one" per click. If a buyer clicks once and orders three times inside the window, the "every" setting logs three conversions. GA4 counts each purchase event but then runs it through fractional attribution. The counting rule alone can move the totals apart before any tracking loss enters the picture.

You're probably comparing the wrong GA4 number

This is the single most common self-inflicted mismatch. Google Ads only shows conversions it can attribute to Google Ads clicks. GA4's top-line conversion count includes every channel — organic, direct, email, social, referral.

Comparing all of GA4 against Google Ads is apples to oranges by definition. Before you conclude anything is wrong, filter GA4 to the Google / paid (cpc) traffic source. Half the "discrepancies" merchants panic about disappear at this step.

The tracking gaps (better setup narrows these)

When Google can't directly observe a conversion — a blocked tag, a declined cookie, an iOS opt-out — it estimates the conversion with a model and reports the estimate. GA4 also models, but with different inputs and thresholds. The two models rarely land on the same number, so even genuinely tracked sales get counted differently.

GA4 leans on browser-side JavaScript, which fails when a customer runs an ad blocker, rejects analytics cookies, or closes the tab before the confirmation page loads. Field estimates put ad-blocker-and-consent-affected traffic at roughly 10–25% of users. Every one of those buyers can still complete a purchase your server records while GA4 sees nothing.

Data latency and timezone drift

GA4 can take up to a day or two to fully process events, while Google Ads updates faster. If your GA4 property and your Google Ads account sit in different timezones, orders near midnight land on different calendar days in each tool — another quiet source of daily-level mismatch.

What counts as a "normal" gap

A gap is expected. The question is how big is too big.

Across the platforms, a 20–30% variance is generally considered normal, according to Galicki Digital's breakdown. GA4 specifically tends to under-report, with industry estimates suggesting it can track roughly 15–40% fewer conversions than actually happen, depending on how privacy-conscious your audience is.

Use that as a rule of thumb: a gap inside the low-20s percent range is healthy and needs no action. A gap that suddenly widens past 40%, or that appears overnight after a change, is your signal that a tag, consent banner, or import genuinely broke.

A worked example — and why the profit angle is what matters

Here's the part the ranking articles never do: connect the mismatch to money.

Say you sell a print-on-demand hoodie at $60. Over a month you spend $2,000 on Google Ads. The two tools report:

  • Google Ads: 100 conversions → 100 × $60 = $6,000 revenue → reported ROAS of $6,000 ÷ $2,000 = 3.0
  • GA4 (filtered to Google / cpc): 74 conversions → 74 × $60 = $4,440 revenue → reported ROAS of $4,440 ÷ $2,000 = 2.22

Same campaign, two ROAS figures, and merchants burn hours arguing over which one is "real." Both are beside the point, because neither includes a single cost.

Your Shopify order record — the server-side truth — shows 90 actual orders. Now build true per-order profit:

  • Revenue per order: $60.00
  • Less product cost (Printify): −$28.00
  • Less payment processing at about 2.9% + 30¢ on the Basic plan: −$2.04
  • Less ad cost per order ($2,000 ÷ 90 orders): −$22.22
  • True profit per order: $60 − $28 − $2.04 − $22.22 = $7.74

Across 90 orders that's $7.74 × 90 = $696.60 in actual monthly profit. The 3.0 ROAS looked like a win; the 2.22 looked like a warning; the real answer is that you're making about eight dollars an order and any rise in product cost or ad cost per order flips it negative.

That's the whole lesson. The Google-versus-GA4 conversion gap is a distraction from the number that actually governs whether you should scale, hold, or cut a campaign: profit per order after every cost. The same trap shows up when Google Ads ROAS doesn't match GA4 — two ratios, neither of them profit.

How to actually reconcile them

You won't make the two counts equal, and you shouldn't try. Aim for a stable ratio and a single source of truth for each question:

  1. Filter GA4 to Google / cpc before comparing anything. This alone resolves most surprises.
  2. Compare trailing 7-to-14-day windows, never single days, to cancel out click-date-versus-conversion-date drift.
  3. Treat your store's order record as the truth for how many sales happened. Google Ads and GA4 are attribution opinions layered on top of it.
  4. Track the ratio over time. A steady 25% gap is healthy. A jump is the real alert.
  5. Anchor every spend decision to per-order profit, not to either conversion count.

For the full framework across every tool in your stack — Shopify, ad platforms, and analytics — see the hub on reconciling your ecommerce data.

Where a profit layer fits in

Reconciling dashboards by hand is exactly the work that eats an operator's week. This is the gap PodVector is built to close.

PodVector connects Shopify, Meta Ads, Google Ads, Printify, Printful, and Stripe, then computes true per-order profit after product cost, processing fees, and shipping — so the number you actually decide on isn't a conversion count from any single platform. Victor, its AI operator, reads that connected data and proposes moves; he analyzes your Google Ads numbers but does not touch your ad account, and any writes he executes are Shopify-side, with your approval. It's not another dashboard to reconcile — it's the profit view underneath the dashboards.

If you're consolidating a scattered stack — for example, migrating from Etsy to Shopify to get server-side order truth in one place — that's the moment a single profit layer earns its keep.

FAQs

Should Google Ads and GA4 conversions ever match exactly?

No. They use different attribution models, count on different dates, apply different counting rules, and model unobserved conversions differently. A gap in the low-20s percent range is normal; exact agreement would actually be suspicious. Aim for a stable ratio, not equality.

Which number should I trust — Google Ads or GA4?

Neither, for the decision that matters. Google Ads is the best source for how much credit its own clicks earned. GA4 is the best source for how credit splits across all your channels. But for deciding whether to scale or cut spend, trust your store's server-side order count and your true per-order profit, which sit underneath both tools.

Why does GA4 show fewer conversions than Google Ads?

GA4 relies on browser-side tracking that ad blockers, cookie-consent declines, and closed tabs quietly defeat, so it structurally under-reports. Industry estimates put GA4's undercount at roughly 15–40% depending on audience. Google Ads also models conversions it can't directly observe, pushing its count higher.

I imported my GA4 key event into Google Ads — why still different?

Even an imported GA4 key event gets re-processed under Google Ads' own attribution, counting, and click-date reporting once it's inside the ad account. Import changes the source of the event, not the rules Google Ads applies to it, so the totals still diverge.

How big a gap means something is actually broken?

A stable gap up to about 20–30% is considered normal. Investigate when the gap jumps suddenly, exceeds 40%, or appears right after you changed a tag, consent banner, or conversion setting. A steady large gap is methodology; a sudden change is a break.

Does fixing my tracking make the numbers match?

It narrows the tracking-loss portion — recovering ad-blocked and consent-declined events. It does nothing for the methodology gaps: attribution models, click-date timing, and counting rules remain different by design. Even flawless tracking leaves a structural gap between the two counts.