Every month, the same conversation happens. The agency shows the Google Ads report. The analytics team shows GA4. The numbers are different. Sometimes by 20%. Sometimes by 300%. Everyone spends an hour trying to reconcile, the meeting ends with "it's just attribution differences," and nobody fixes anything.
It is almost never attribution.
In the vast majority of accounts we audit, the discrepancy comes from how conversions are configured, not how they are attributed. The platforms are counting different things, using different rules, and nobody set them up to agree.
Here is what is actually causing the mismatch and how to fix each one.
The 6 most common causes
1. Conversion counting method: MANY vs ONE
Google Ads defaults to "Every" (MANY_PER_CLICK) for most conversion actions. This means if one user clicks an ad and submits a form three times, Google Ads counts 3 conversions. GA4 counts 1 session with a conversion event.
For e-commerce (purchases), MANY_PER_CLICK is correct - you want to count every transaction. For lead generation (form submissions, phone calls), it inflates your numbers. A user who rage-clicks the submit button gives you 5 "conversions" in Google Ads but 1 real lead.
The fix: In Google Ads, go to Goals > Conversions and check the counting method for every lead gen action. Switch to ONE_PER_CLICK. This single change often closes 30-50% of the discrepancy.
2. Conversion windows don't match
Google Ads' default click-through conversion window is 30 days. If someone clicks an ad today and converts 29 days later, Google Ads credits the ad. GA4's default attribution lookback window may be different depending on your settings.
Google Ads also has view-through conversions (someone saw your display ad but did not click, then converted later). GA4 does not track view-through the same way.
The fix: Align the windows. Go to Google Ads > Conversions > Settings for each action and note the click-through and view-through windows. Then check GA4's attribution settings under Admin > Attribution Settings. They do not need to be identical, but you need to know the difference so you can explain the gap.
3. GA4 imported conversions are broken
Many accounts import GA4 conversions into Google Ads (instead of using Google Ads' native conversion tag). This creates a dependency: if the GA4 to Google Ads link breaks, conversions stop flowing. We see this constantly - the link was set up during UA to GA4 migration, something changed, and nobody noticed the conversions went to zero.
Signs this is happening:
- GA4-imported conversion actions in Google Ads show zero for recent weeks
- The conversion action status shows "No recent conversions" or "Inactive"
- Google Ads reports rely on a "key event" import that no longer maps to anything in GA4
The fix: Check Google Ads > Goals > Conversions. Look for any action with "GA4" or "Import" in the source column. Verify each one is still receiving data. If not, either fix the link or replace with a native Google Ads conversion tag via GTM.
4. Auto-tagging and UTM conflicts
Google Ads uses auto-tagging (gclid parameter) to track clicks. If your URLs also have manual UTM parameters (utm_source=google, utm_medium=cpc), GA4 may attribute the session differently depending on which parameter it processes.
The classic symptom: GA4 shows conversions under "google / cpc" from UTMs, but the Google Ads linked report shows different numbers because it uses gclid. Some conversions get counted in one view but not the other.
The fix: Enable auto-tagging in Google Ads (it should be on by default). In GA4, ensure "Allow manual tagging (UTM values) to override auto-tagging (gclid values)" is set correctly under Admin > Data Streams > Google Ads Linking. Generally, you want auto-tagging to win.
5. Cross-domain tracking gaps
If your paid traffic starts on your main domain but converts on a subdomain (checkout.yoursite.com) or a third-party booking platform, the session may break. GA4 sees it as two separate sessions - one from Google Ads, one direct. The conversion credits "direct" instead of the ad.
This is especially common with:
- Separate checkout domains
- Third-party booking systems (reservation platforms, scheduling tools, etc.)
- Multi-brand sites with different subdomains
The fix: Configure cross-domain tracking in GA4 for all domains in the conversion path. Verify with real-time reports that the session maintains continuity across domain transitions.
6. Different definitions of "conversion"
This is the simplest cause and the most overlooked. Google Ads counts a conversion when the conversion tag fires (or when a GA4 event is imported). GA4 counts a "key event" when the event is triggered.
But are they measuring the same thing? If Google Ads has a conversion tag on the thank-you page and GA4 tracks a form_submit event, they may fire at different points. The tag fires on page load (including refreshes). The event fires on form submission. A user who refreshes the thank-you page gives Google Ads 2 conversions but GA4 only 1.
The fix: Audit what exactly triggers each conversion. Map the Google Ads conversion action to the GA4 key event and confirm they fire at the same moment, under the same conditions.
How to diagnose the gap
Step by step:
- Pull a Google Ads campaign report for the last 30 days showing conversions by conversion action.
- Pull a GA4 key events report for the same period filtered to Google Ads traffic (source/medium = google/cpc).
- Compare at the conversion action level, not the total. The totals will never match - you need to see where the gap is.
- For each action, check: counting method, conversion window, source (native tag vs GA4 import), and trigger condition.
- Fix the largest gap first. Usually it is counting method or a broken GA4 import.
In one audit, we found that switching 4 lead gen conversions from MANY_PER_CLICK to ONE_PER_CLICK reduced reported Google Ads conversions by 62% - but the real lead count in the CRM did not change at all. The previous numbers were fiction.
When the gap is actually attribution
After fixing configuration issues, there will still be a gap. This is normal and expected. The real attribution differences:
- Credit window: Google Ads takes credit for conversions within its attribution window. GA4 uses its own model (data-driven, last-click, etc.).
- Touchpoint logic: Google Ads credits the campaign that drove the click. GA4 may credit the last touchpoint before conversion.
- View-through: Google Ads includes view-through conversions by default. GA4 does not.
A 10-20% gap after fixing configuration is normal. A 200% gap is not attribution - it is broken tracking.
What to do about it
- Fix the configuration issues first. Do not try to explain attribution until the data is clean.
- Agree on a source of truth with your team. For lead gen, the CRM is the truth. Match both platforms against CRM data, not against each other.
- Accept that the platforms will never show identical numbers. The goal is to get them within 10-20% and understand why the remaining gap exists.
- Audit quarterly. Configuration drift is real - what is aligned today may not be aligned after the next platform update.
Want to know how your conversion tracking compares? Run a free Digital Maturity Index scan at rawsoft.com/dmi - we score your implementation across 5 dimensions including conversion health and attribution.