The short answer
Do not begin by asking, “Why do the totals differ?” Begin by asking, “Am I comparing the same business action, for the same traffic, on the same date basis, with the same counting rules?”
Google Ads is built to measure and optimize advertising outcomes. GA4 is built to measure behavior across channels. Even when a GA4 key event is used to create a Google Ads conversion, the two reporting views can diverge because of date attribution, counting, conversion windows, time zones, reporting delays, invalid-click filtering, and modeling.
The practical goal is not to force every number to match. It is to explain the difference well enough that you know which number should guide bidding, which should guide on-site analysis, and whether anything is actually broken.
Why Google Ads and GA4 conversions differ

Google now uses key event for an important action measured in Analytics, while conversion refers to an action used to measure and optimize advertising. Google Ads conversions created from GA4 events appear in the Advertising area of GA4, not in GA4’s standard behavioral reports.
That distinction matters. A GA4 report of all generate_lead key events can include credit from paid search, organic search, direct, referral, and other channels. A Google Ads conversion report answers a narrower advertising question.
Before diagnosing tracking, align these seven comparison dimensions.
Comparison dimension | Google Ads side | GA4 side | What to align |
|---|---|---|---|
Business action | A specific conversion action | The equivalent event or key event | Confirm both represent the same completed outcome, not adjacent funnel steps |
Traffic scope | Google Ads-attributed conversions | All channels or a Google Ads-attributed slice | Do not compare paid-only conversions with property-wide key events |
Reporting column | Conversions or All conversions | Key events or an Ads conversion view | Include the same primary and secondary actions |
Date basis | Ad interaction date by default; conversion-time columns are also available | Event or conversion occurrence date in many reports | Use conversion time when comparing daily totals |
Counting | One or Every for the action | Every recorded event unless your design deduplicates it | Check repeated leads, purchases, reloads, and transaction IDs |
Attribution and window | Action-level attribution and conversion windows | Analytics attribution settings and key-event lookback | Compare eligible channels and lookback periods |
Processing and modeling | Ads reporting, invalid-click filtering, modeled conversions | Analytics processing, thresholding, and modeling | Exclude immature dates and document residual differences |
A reliable reconciliation workflow
Use a complete date range that is old enough to be stable. For an initial diagnosis, 28 complete days ending yesterday is usually more useful than “this month,” because today is partial and recent conversions can still arrive or receive updated attribution credit.
1. Define one business outcome
Choose one outcome at a time: purchase, qualified lead, booked demo, signup, or another event that matters to the business.
Record the exact Google Ads conversion-action name and the exact GA4 event name. Similar names do not prove equivalence. “Lead,” “form_submit,” and “qualified_lead” may represent three different points in the funnel.
Also record how each signal is produced:
a native Google Ads website conversion
a Google Ads conversion created from a GA4 key event
an offline conversion upload
a GA4 event measured separately from the Google Ads tag
If the two platforms are not using the same underlying signal, an exact match is unlikely. That does not make either dataset useless, but it changes the question from reconciliation to measurement design.
2. Confirm the account, property, and link
Verify that you are comparing the intended Google Ads customer and GA4 property. Then confirm the property is linked to the Ads account and that auto-tagging is enabled.
Google says newly linked Ads data can take up to 48 hours to appear in Analytics. Imported GA4 conversion data can take up to 24 hours to appear in Google Ads, and historical data before the import is not added retroactively. A missing recent row can therefore be a synchronization issue rather than a tracking failure.
For manager accounts, confirm who owns conversion tracking. A client account can inherit cross-account conversion tracking, so the action visible in the client may be owned elsewhere.
3. Inventory the conversion configuration
On the Google Ads side, capture:
action name, ID, source, owner, status, and category
primary or secondary status
counting method
attribution model
click-through and view-through windows
default-value behavior
recent conversion count and value
On the GA4 side, capture:
the key-event name and whether it is currently marked as a key event
data streams that can send the event
linked Google Ads accounts
relevant custom definitions
property time zone
Do not treat a zero in a short period as proof of a broken action. First check whether the action is new, secondary, seasonal, low volume, or simply absent from the chosen reporting column.
4. Pull three comparable cuts
For the same complete date range, retrieve:
Google Ads conversion-action performance. Keep the action ID and source visible. Use All conversions when the equivalent action is secondary. When comparing daily timing, prefer the conversion-time version of the metric.
GA4 total event or key-event volume. Filter to the exact event name. This shows what the property recorded across channels.
GA4 Google Ads-attributed volume. Break the same key event down by Google Ads campaign ID or campaign name when compatible. This removes much of the paid-versus-all-channel mismatch.
Keep raw totals and daily rows. A monthly total can hide a date-shift pattern: Ads may assign a conversion to the earlier click date while GA4 shows it on the later completion date.
5. Calculate the gap without hiding the denominator
Show both the absolute and percentage difference:
Absolute gap = Google Ads conversions − GA4 comparison count
Percentage gap = Absolute gap ÷ GA4 comparison count
If the GA4 count is zero, do not calculate a percentage. Label it undefined and investigate the missing denominator.
Compare the total period and each day. Then split the result by conversion action, campaign, device, or landing page only when that cut helps isolate the cause. More segmentation is not automatically more insight.
6. Classify the explanation
Use the pattern in the data to choose the next check.
Pattern | Likely explanation | Next check |
|---|---|---|
Totals are close, but conversions appear on different days | Click-date versus conversion-date reporting | Compare Google Ads using All conversions by conversion time |
GA4 is higher across the period | GA4 includes other channels, repeated events, or activity outside the Ads window | Filter to Google Ads-attributed traffic; inspect event duplication and windows |
Google Ads is higher across the period | All conversions includes more sources, Ads modeling contributes, or the GA4 signal is incomplete | Match the exact action, isolate observed versus modeled context, and validate GA4 collection |
The gap begins on one date | Configuration, tagging, consent, link, or naming change | Review change history and test the journey before and after that date |
Only one campaign or landing page diverges | Missing parameters, redirect behavior, cross-domain issue, or campaign-specific goal scope | Check GCLID persistence, landing-page tagging, and campaign goals |
The difference is limited to the newest days | Processing delay or conversion lag | Re-run after the data matures before changing anything |
Two actions rise together for one outcome | Duplicate measurement or overlapping definitions | Trace both actions to their source and decide which outcome should guide bidding |
A percentage alone cannot tell you whether a discrepancy is acceptable. A stable, explainable difference can be operationally safe. A small but sudden difference concentrated on a high-value action can be urgent.
7. Validate tracking only when the evidence points there
If the report comparison cannot explain the gap, move from configuration evidence to runtime evidence.
Use Tag Assistant or your browser tools to test the real conversion journey. Confirm the event fires once, carries the expected parameters and value, preserves the Google click identifier through redirects, respects consent behavior, and reaches the intended destination.
Then compare the platform evidence again after the relevant processing window. Reading configuration can tell you what should happen. It cannot prove what happened in a user’s browser.
For the broader implementation workflow, use How to Audit Conversion Tracking Across Your Marketing Stack with AI.
The exact prompt
Copyable prompt
Connect to my Google Ads and GA4 data. First list the Google Ads accounts and GA4 properties I can access, and wait for me to select the intended account and property.
Then reconcile one business outcome for the last 28 complete days, ending yesterday. Do not make changes.
Ask me for the exact Google Ads conversion-action name or ID and the exact GA4 event name if I have not supplied them.
Inspect the GA4 property configuration. Confirm the key event, Google Ads link, data streams, and property time zone. Report failed or inconclusive sections separately.
Review Google Ads conversion tracking. Show the action’s source, owner, status, primary or secondary state, counting rule, attribution model, lookback windows, and available recent performance. Flag possible duplicates.
Pull Google Ads performance for the exact action. Use All conversions if the action is secondary. For daily comparison, use a conversion-time metric where available; if that is unavailable, state the date-basis limitation rather than hiding it.
In GA4, check compatible fields and pull two reports for the exact event: total key-event volume and the Google Ads-attributed slice. Keep the property, dates, filters, matching rows, collected rows, and truncation status visible.
Produce a table with Google Ads count, GA4 total, GA4 Google Ads-attributed count, absolute gap, percentage gap, and date basis.
Classify each likely cause as confirmed, plausible, ruled out, or still unverified. Separate legitimate reporting differences from possible tracking defects.
End with a prioritized review queue. If a setting change may be needed, show the current value, proposed value, reporting or bidding impact, and the human validation required. Do not apply it.How HireOtto helps with this workflow
HireOtto can keep the reconciliation inside the AI client where you already work.
On the GA4 side, it can discover properties, inspect data streams, key events, Google Ads links, and custom definitions, search the property’s reporting metadata, check Core-report field compatibility, run filtered reports, and export the resulting rows. The GA4 connection is read-only.
On the Google Ads side, it can review auto-tagging and conversion-tracking setup, identify GA4 events that Ads exposes as imported or available to import, list conversion actions with recent performance, and retrieve campaign-level conversion metrics. Agency accounts can use custom GAQL when an exact conversion-time metric or report cut is needed.
HireOtto can then compare the evidence and produce a review queue. It cannot prove browser firing from configuration reads. It also should not change primary status, counting, attribution, value behavior, or lookback windows merely to make two reports look alike. Those settings can affect reporting and automated bidding. Any supported Google Ads change should be shown as an exact proposal, approved by a practitioner, applied deliberately, and read back afterward.
Use the GA4 tools reference, custom GA4 reporting guide, Google Ads reporting guide, and conversion-action management guide for the exact workflows. To start from a new AI client, follow Connect a HireOtto server.
What a useful reconciliation should produce
The output should not be a verdict such as “tracking is wrong.” It should be an evidence packet:
the precise account, property, action, event, date range, and time zones compared
aligned totals plus daily rows
the reporting column and date basis used on each side
confirmed configuration differences
plausible runtime issues that still need browser validation
a prioritized next action with an owner and review gate
This makes the result reusable. A PPC operator can decide whether bidding inputs need attention. An analytics owner can inspect event design. A developer can test the specific journey instead of receiving a vague “numbers do not match” ticket.
Frequently asked questions
Should Google Ads and GA4 conversions match exactly?
Not always. The totals can differ even when the implementation is healthy because the platforms can use different traffic scope, date attribution, counting, windows, time zones, filtering, and modeling. They should be close enough to explain for the same action and comparable reporting settings.
Why does GA4 show more key events than Google Ads shows conversions?
The GA4 total may include every channel, while Google Ads counts only outcomes attributable to eligible ad interactions. GA4 can also record repeated events that Google Ads counts once, or events that occur outside the Ads conversion window.
Why does Google Ads show more conversions than GA4?
You may be comparing Google Ads All conversions with a narrower GA4 slice, including multiple conversion sources, or seeing modeled conversions in Ads. It can also indicate incomplete GA4 collection. Match the exact action and scope before investigating the tag.
Which platform should be the source of truth?
Use Google Ads for the conversion signal that guides Google Ads bidding and campaign reporting. Use GA4 for on-site behavior and cross-channel analysis. Use your backend or CRM for accepted business outcomes such as paid orders or qualified pipeline. Reconciliation connects those jobs; it does not make the systems interchangeable.
Can AI fix the discrepancy automatically?
AI can gather evidence, compare definitions, calculate gaps, and prepare a prioritized diagnosis. It should not automatically change conversion settings or tags to force agreement. The practitioner still decides which outcome matters, validates the real journey, and approves changes that could affect bidding.
About Me
I’m Suyash – badminton junkie, ex‑GroupM ad‑ops grunt, first marketer at a B2B SaaS startup, and creator of Hiretto: MCP servers for performance marketers.
My mission: less clicking, more thinking.
Let’s build leverage together.

