AboutAll ServicesFree EmailOur WorkGuidesFAQContact
Services
SEO ServicesEcommerce RankingSpeed OptimizationWebsite AuditGoogle Ads ManagementMeta Ads ManagementSocial Media ManagementAnalytics & TrackingShopify Catalogue SEO
Build & Solutions
WordPress DevelopmentEcommerce DevelopmentCustom EcommerceFlying CartFlying AdsFlying Blog
Dedicated Sites
ServicesCareFirstlightTruefeedWoo2ShopifyShopifyRealty LeadsAnkShakti

Guide

Why GA4 and Google Ads never show the same numbers

Why don't GA4 and Google Ads conversions match?

5 min read

Short answer

Because they count differently by design. Google Ads credits a conversion to the ad click and to the day of that click, and can include cross-device conversions. GA4 credits by its own attribution model on the day the conversion happened, and loses visitors who refuse consent or block scripts. A steady gap is normal. A growing or sudden gap is a tracking problem.

The differences that are supposed to be there

Which day. Google Ads reports a conversion against the date of the ad click. GA4 reports it on the date it happened. A shopper who clicks on Monday and buys on Thursday lands on different days in each tool.

Who gets credit. Google Ads only reports conversions its ads touched. GA4 splits credit across every channel in the journey. The same order can be fully Google's in one and partly Meta's or organic in the other.

Who is visible. GA4 depends on a script running in the visitor's browser. Ad blockers and consent refusals remove visitors that Google Ads can still count from its own click data.

Timing. Google Ads keeps restating recent days as attribution settles. We have seen a single day's figure move by more than 40% over 36 hours with nothing changed. Compare closed days, read at least a day later.

The differences that are faults

A second GA4 property. More common than it should be. We regularly find two GA4 properties collecting on one store, each partial, and reports being read from whichever someone opened first.

Server-side purchases that skip GA4. On one store with server-side tracking, purchases were being sent to Google Ads from the server but never to GA4, because the GA4 tag only fired for browser traffic. Google Ads was right and GA4 kept undercounting every order that came through the third-party checkout.

A third-party checkout. If the checkout completes the order off your theme, GA4's purchase event never fires in the browser. GA4 will show sessions and add to carts and almost no purchases.

Duplicate purchase events. A theme tag plus an app plus Tag Manager all firing purchase. GA4 then reports more revenue than Shopify.

What size of gap is normal

There is no universal figure, which is why the useful test is stability, not size. Put a few weeks side by side. A gap that holds roughly steady is the design differences above. A gap that jumps after a theme change, an app install or a checkout switch is a fault, and the date it started tells you where to look.

Which number to trust for what

Use the store's own orders as the truth for revenue. Use Google Ads for decisions inside Google Ads, because that is what its bidding learns from. Use GA4 for journeys, landing pages and cross-channel comparison.

What you should never do is judge a channel by GA4 purchases on a store whose checkout GA4 cannot see. Fix the collection first, then compare.

Quick checks

In GA4, Admin, Data streams: is there exactly one web stream, and is it the one your site tag uses?

In Tag Assistant, place a test order and count how many purchase events fire. The answer should be one.

Set GA4 data retention to 14 months. It defaults to 2, and the history you lose cannot be recovered.

GA4 & GTM setupServer-side trackingAnalytics & tracking

Want free stats on your site first?

Send us the URL. We pull the numbers from your own accounts and tell you what is wrong before there is any quote, and before there is any contract.

No pitch deck, no obligation. Bring your URL and we will look at it together.