You checked Google Ads and it said your campaign returned 4x. You opened GA4 and the same campaign looked like it barely broke even. One of them has to be lying, right?
No. Both are counting correctly against their own rules. The mismatch is structural, and understanding it stops you from either killing a winner or scaling a loser. This is one branch of a broader problem — why your ecommerce numbers never reconcile across tools — and Google Ads versus GA4 is one of the widest gaps you'll see.
The short version: two tools, two questions
Google Ads is a credit-claiming system. Its job is to show you which conversions its ad clicks and impressions plausibly influenced, so its algorithm can optimize toward them. It counts generously by design.
GA4 is an observation and modeling system. It records what its client-side tags actually captured, then splits credit across touchpoints with its own attribution model. It counts conservatively.
Feed those two philosophies the same week of sales and you get two ROAS numbers. A gap of 20–30% between GA4 and Google Ads conversion tracking is considered normal, and you should only start investigating configuration when it exceeds 40%. Below that, chasing a perfect match is wasted effort.
Why Google Ads ROAS runs higher than GA4
The gap almost always points the same direction: Google Ads high, GA4 low. Here's what drives each piece of it.
View-through and modeled conversions
Google Ads credits itself for view-through conversions — someone saw your ad, didn't click, then bought later — and for modeled conversions, statistical estimates it fills in when cookies are blocked or consent is declined. GA4 counts almost none of these. Google Ads is reported to over-attribute by 15–20% once Enhanced Conversions or Consent Mode is active, inflating the numerator of your ROAS.
Conversion counting: every conversion vs. one per click
Google Ads lets you count every conversion from a click; GA4 typically counts one converting user. So if one customer buys three times after a single ad click, Google Ads can log three conversions while GA4 logs one. On stores with repeat buyers or subscriptions, this alone widens the ROAS gap.
Attribution models: data-driven vs. last-click
The two tools rarely run the same model. Google Ads often defaults to data-driven attribution while GA4 sits on a paid-and-organic last-click model. Data-driven attribution spreads fractional credit across touchpoints; last-click hands 100% to the final channel. Same sale, different credit, different ROAS. The same split drives the Google Ads sessions that don't match GA4 in your traffic reports.
Click date vs. purchase date, plus GA4's lag
Google Ads books a conversion on the date of the click, not the purchase. A Monday click that converts Friday shows up in Google Ads on Monday and — if it shows at all — in GA4 nearer Friday. Layer on GA4's 24–48 hour processing latency and same-day comparisons are meaningless. Always compare on trailing 7- to 14-day windows.
GA4's client-side blind spots
GA4 runs on browser JavaScript, so ad blockers, tracking prevention, and consent declines quietly delete events. Field estimates put affected traffic at 25–40% of visitors, and GA4 is reported to underreport paid conversions by 18–35% when cookies are rejected or blocked. That shrinks GA4's numerator while Google Ads backfills its own with modeling.
A worked example: 4.2 vs. 1.8 on the same $1,000
Say you spend $1,000 on Google Ads in one week. Documented cases show Google Ads reporting a 4.2 ROAS against GA4's 1.8 on the identical account, so let's reconstruct that gap with round numbers.
Google Ads reports 42 conversions worth $4,200 → ROAS 4,200 ÷ 1,000 = 4.2.
GA4 reports 18 conversions worth $1,800 → ROAS 1,800 ÷ 1,000 = 1.8.
Where did the 24 "missing" conversions and $2,400 go? Roughly:
- 8 were view-through — the buyer saw the ad, never clicked, so GA4 credits their last real click (often organic or direct) instead.
- 6 were modeled — Google Ads estimated them; GA4 never saw the event because a blocker or consent decline killed the tag.
- 4 were repeat purchases from single clicks — Google Ads counted every order, GA4 counted one user each.
- 4 were cross-device — ad on mobile, checkout on laptop — stitched by Google, lost by GA4.
- 2 were timing — clicked in-window last week, purchased this week, booked on different dates.
None of that is fraud. It's five counting rules applied to one pile of real orders. The truth sits between the two: your ads influenced more than 18 sales but drove fewer than 42 incremental ones.
Which number should you trust?
For directional optimization — is this campaign trending up or down week over week — trust Google Ads, because its algorithm optimizes toward its own conversions and its click-based view is more complete.
For a conservative floor on directly observable, on-site behavior, GA4 is the sanity check. If GA4 shows near-zero from a campaign Google Ads calls a hero, you may have a tracking break or a pure view-through mirage worth auditing — start with your GA4 conversion tracking setup checklist for Shopify.
But here's the uncomfortable part: for the decision that actually matters — do I keep spending on this campaign — you should trust neither. ROAS is a revenue ratio, and revenue is not profit.
The number both tools hide: profit
Both a 4.2 and a 1.8 ROAS can describe a campaign that loses money, because ROAS ignores your cost of goods, payment fees, and shipping. This is the profit angle every attribution article skips.
Say your average order is $50. Walk the real per-order math:
- Revenue: $50.00
- Product cost (your Printify or Printful blank + print): −$18.00
- Payment processing at about 2.9% + 30¢ on Shopify's Basic plan: −$1.75
- Shipping you eat: −$5.00
- Gross profit before ad cost: $25.25 per order
Now bring in the ad spend. At $1,000 across 42 orders, your true cost per order is 1,000 ÷ 42 = $23.81. That leaves $25.25 − $23.81 = $1.44 profit per order — razor thin, and a 4.2 ROAS made it look like a gusher.
Run the same math on GA4's stingier count and it looks like you're deep underwater, which would panic you into pausing a campaign that's actually just barely green. Both ROAS numbers pointed you wrong, in opposite directions. This is the same trap behind Klaviyo revenue that doesn't match Shopify — every tool reports a revenue figure, and none of them nets out what the order actually cost you.
That's the gap PodVector closes. It connects Shopify, Meta Ads, Google Ads, Printify, and Printful, then computes true per-order profit from your live data — the blank cost, the processing fee, the shipping, and the ad spend, netted per order instead of guessed at the campaign level. Victor, its AI employee, reads that ad and order data and proposes moves on the profit picture, executing the approved changes on your Shopify side. He does not touch your ad account, and he's not a dashboard — he's the employee that tells you the $1.44, not the 4.2. Connect your stack and see real per-order profit.
How to narrow the gap (and when to stop)
You can tighten the two numbers, but you can never make them equal — the methodology gaps are permanent. Reasonable steps:
- Match attribution models where you can, so both tools use comparable credit rules.
- Deploy server-side tracking and Enhanced Conversions to recover blocked events and shrink GA4's client-side loss.
- Compare on trailing 7- to 14-day windows, never single days, to defuse the click-date-versus-purchase-date and processing-lag effects.
- Tag every paid link with consistent UTMs so both GA4 and Shopify classify the source the same way.
Then stop. Once the gap sits inside the normal 20–30% band, more plumbing buys you nothing. The remaining difference is two tools doing their jobs — and your real answer was never in either ROAS to begin with.
FAQs
Why is my Google Ads ROAS so much higher than GA4?
Google Ads counts view-through, modeled, cross-device, and every-conversion credit that GA4 drops, and it books conversions on the click date rather than the purchase date. That structurally inflates its numerator versus GA4's. A 20–30% gap is considered normal; only a gap above 40% suggests a real tracking or configuration problem.
Which is more accurate, Google Ads or GA4?
Neither is "more accurate" — they measure different things. Google Ads measures influence for optimization and reads high; GA4 measures directly observed, model-attributed behavior and reads low. Use Google Ads for directional trends and GA4 as a conservative floor, but use neither as your profit signal.
Can I make Google Ads and GA4 ROAS match exactly?
No. Even with flawless tracking, different attribution models, view-through counting, modeled conversions, and click-date reporting keep them apart. Aim for a stable, explainable ratio inside the normal band, not equality.
Does GA4's 24–48 hour delay cause the mismatch?
Partly. GA4 has a 24–48 hour processing latency while Google Ads reports near real time, so same-day checks always look mismatched. The gap usually narrows after a couple of days — but processing lag only explains a slice of it; the attribution and counting differences remain.
Is Shopify a better source of truth than either?
For how many orders happened and how much revenue came in, yes — Shopify records completed checkouts server-side and isn't fooled by blockers. But Shopify's last-click attribution still won't match either platform's channel credit, and even Shopify's revenue isn't profit until you subtract product cost, fees, and shipping.