TroubleshootingGoogle Ads
Google Ads Conversions Not Matching GA4: Why
Google Ads and GA4 conversion counts rarely match exactly. Learn which gaps are structural and which ones signal a real tracking problem.
- Published
- Reviewed
Diagnosis
- Platform Google Ads
- Usual cause Wrong conversion action, missing hashed data, or double counting with GA4 import.
- Causes, ranked 6
- How to diagnose it 7
First answer free, within one working day. Describe your case
Sounds familiar?
The symptom
The short version
Direct answer
Google Ads and GA4 aren’t built to report identical conversion counts, even when both are correctly configured. Different attribution windows, conversion-time-versus-click-time accounting, and two entirely separate matching pipelines produce some baseline gap.
The diagnostic question isn’t whether the numbers match exactly — structurally, they won’t — it’s whether the gap is stable and explainable, or growing and erratic. A gap that shrinks once the attribution window fully closes is structural and not a problem. A gap driven by lost gclids or an incomplete Enhanced Conversions setup is real, and it’s costing you attributed conversions you actually earned.
Where to look
Causes, ranked
Google Ads ≠ orders6 causes
-
Attribution window mismatch
Google Ads’ conversion window (commonly 30–90 days depending on the action) counts a purchase on the date of the click, even weeks later. GA4 counts it on the date of the transaction. Compare a date range before that window has fully closed, and the two will disagree by design. -
Click-through vs. view-through counting
Google Ads can count view-through conversions — an impression with no click that later converts — which have no equivalent session in GA4 at all. -
Conversion time vs. click time
Related to the window issue but worth checking separately: switching a conversion action’s reporting between “by conversion time” and “by conversion date” can shift totals for the same underlying data. -
gclid loss
The same redirect, consent, or cross-domain issues that cause GA4’s Unassigned traffic can also strip thegclidparameter before it reaches Google Ads’ matching logic — meaning a real ad-driven purchase never gets credited to the ad at all. -
Enhanced Conversions gaps
If hashed customer data isn’t being sent, or is incomplete, conversions that could have matched via Enhanced Conversions fall back to weaker cookie-based matching, or don’t match at all. -
Structural counting-model differences
Even with everything else correct, GA4 and Google Ads use separate attribution models to credit conversions across their own data. Identical underlying orders can still produce two different, both-legitimate counts.
7 steps
How to diagnose it
Work through them in this order.
- In Google Ads → Goals → Conversions → Summary, open the specific conversion action and check its attribution model and status.
- Check the conversion window settings on that action — click-through and view-through windows are set independently and both affect the count.
- Compare totals only for a date range where the attribution window has already closed (for example, a 60–90 day old month) rather than the trailing 7 or 14 days, where the numbers are still settling.
- In the conversion action’s settings, check whether it’s reporting by conversion time or by conversion date, and note how much the total shifts between the two views.
- Confirm auto-tagging is on (Google Ads → Account settings), then manually click through a real ad-tagged URL to checkout to verify the
gclidparameter survives every redirect. - In Google Ads → Tools → Conversions, check the Enhanced Conversions status column for a “needs attention” flag or a visible match-rate indicator, and confirm hashed customer data is actually present in the network request on the purchase page.
- In GA4 → Advertising → Attribution → Model comparison, compare GA4’s own conversion counts for the Google Ads channel under different models, to see how much the choice of model alone moves the number independent of any tracking issue.
Signal and fix
Decision table
| Cause | Signal you’ll see | Fix |
|---|---|---|
| Attribution window mismatch | The gap shrinks the further back you look, and converges for fully closed date ranges | No fix needed — compare only closed windows, and document the expected lag for stakeholders |
| View-through inflation | Google Ads includes conversions with no matching click or session in GA4 | Check the view-through window setting; decide deliberately whether to include it in comparisons |
| gclid loss | Click-based conversions run consistently below actual paid orders, tracing to a redirect or consent path | Fix the parameter-stripping redirect; confirm auto-tagging is on and gclid persists through checkout |
| Enhanced Conversions gap | Match rate is low or partial in the Ads UI; hashed data missing from the network payload | Complete the Enhanced Conversions data flow (email, phone, address) on the purchase page |
| Structural counting-model difference | The gap is stable and roughly consistent month to month, and doesn’t trend toward zero | Document it as expected; treat stability, not size, as the health signal |
A note from Daniilbefore you decide
Should you fix it yourself or bring in help?
Checking attribution window and conversion-timing settings, confirming auto-tagging is on, and comparing only fully closed date ranges is something you can do directly in the Google Ads and GA4 interfaces.
What usually needs a specialist is implementing or debugging Enhanced Conversions’ data flow, tracing gclid loss through a redirect or consent chain you don’t fully control, or building a repeatable reconciliation process across Ads, GA4, and Shopify rather than eyeballing two dashboards each month.
If the gap is growing rather than converging, or shows up right after a checkout or consent change, that’s worth scoping through Google Ads conversion tracking work rather than assuming it’s just structural noise.
— Daniil
Next
If the self-check does not settle it.
The checks above find the cause in most stores. When two or more overlap, an order-level reconciliation is faster than another afternoon spent comparing dashboards.
Tracking Health Check
- Price
- USD 395
- Access
- Read-only
- Timeline
- verdict two working days after the kickoff
What the reconciliation shows for this symptom.
A Health Check reconciles this symptom order by order against your Shopify orders, so the cause is a fact from your own data, not a guess from a dashboard. Real numbers for this symptom are not published yet — ask for the sample report.
Follow the order. Then compare the evidence.
- Real orderOrder ID, amount, currency
- Browser / server eventsConsent, event ID, delivery
- GA4 / advertising platformsReceived events and reporting
- Reconcile the recordsMatch IDs, time windows and definitions
Questions
Questions this symptom raises
Why do Google Ads and GA4 never show the exact same conversion count?
They're two separate crediting systems reading overlapping but not identical data. Google Ads attributes a conversion to the day of the click and uses its own attribution model and conversion window; GA4 attributes based on session data and its own model. Even with perfect tracking, these two systems are structurally unlikely to land on the same number.
Should I trust Google Ads' number or GA4's number for budget decisions?
Neither is 'more correct' in isolation — they answer different questions. Google Ads' number is what its own bidding algorithm is optimizing against, so it matters for in-platform decisions. GA4's number is useful for cross-channel comparison. Reconciling both against actual Shopify orders is what tells you which one, if either, needs fixing.
What is Enhanced Conversions and do I need it?
Enhanced Conversions sends hashed first-party customer data (email, phone, address) alongside a conversion so Google can match it even when a cookie or click ID wasn't captured. It generally improves match rates, especially on longer or cross-device paths, but it isn't a fix for a fundamentally broken purchase event — it enriches good data, it doesn't create it.
Why did my conversion count for last week change when I checked again today?
This is normal and expected, not a bug. Conversions are attributed to the click date, so a purchase completing several days after the click gets added to that earlier date once it's processed — meaning any date range within your conversion window can still be updating.
Read more, or check a neighbouring symptom.
All symptoms- Service Google Ads Conversion Tracking Fix & Enhanced Conversions
- Article Why GA4 Revenue Doesn't Match Shopify Orders
- Troubleshooting GA4 Unassigned Traffic on Shopify: Diagnosis
- Troubleshooting GA4 Revenue Doesn't Match Shopify: Full Diagnosis
- Troubleshooting Google Ads Conversions Doubled After a Tracking Change: Diagnosis
Tried it and still stuck?
Describe your taskThe first answer is free, within one working day. Or write directly: next@taskfordaniel.com