TRACKING SPECIALIST — BARIS ASA · LONDON
Synctag
Start the check → TRACKING SPECIALIST — BARIS ASA · LONDON
F-104
F-104 · COLLECTION & DUPLICATION · FILED 29 OCT 2026 · REVISED 2 NOV 2026 · FREQ ▮▮▮▮▯

Why does GA4 show more key events than Google Ads conversions?

GA4 usually shows more because it counts key events (the actions GA4 treats as conversions) from every channel, dated to when they happen, while Google Ads counts only conversions from its own ads, dated to the ad click. That gap is normal, and the note on why GA4 and Google Ads numbers don't match lists the causes.

It is a setup fault, filed here as F-104, when a setting widens the gap. A non-sale, such as a scroll, marked as a key event inflates GA4. A purchase with no Google Ads tag and no GA4 import never reaches Ads at all. A purchase set to count only one conversion per ad click (Count: One) drops repeat orders. These last two leave Ads short.

The check: compare purchases for a closed month, using the Conv. (by conv. time) column in Google Ads, which dates sales to the purchase rather than the click. A gap that is an exact multiple, matches a second event's total, or appeared the day someone changed the settings is F-104.

Filed as F-104 · Key events & counting mis-set · How to catch it ↓ · The fix ↓

Seeing this on your account? Send me GA4 purchases, Google Ads conversions and real orders for one closed month →

F-104 (key events and counting mis-set) is Google Ads bidding on the wrong number because the switches that decide what counts as a conversion are set wrong. The tags fire correctly, but the business outcome was never marked as a key event (GA4's current name for a conversion), is counted on the wrong method, or reaches Ads through two primary conversion actions. It is not the normal gap between GA4 and Ads, where GA4 usually shows more: GA4 credits every channel and dates to the conversion, Ads credits its own clicks and dates to the click.

Also filed as “Google Ads conversions doubled after linking GA4”“GA4 shows more conversions than Google Ads”“GA4 key events count more conversions than Google Ads”“conversion action primary or secondary”“once per event vs once per session in GA4”“Google Ads count one vs every”“lead form counted more than once”

Symptom and cause

Symptom
The event fires, but the count is wrong: GA4 inflated by a non-sale marked as a key event, Google Ads missing a second order from the same ad click on Count: One, or a conversion counted twice or never imported.
Cause
The event was never marked as a key event, its GA4 counting method is wrong (Once per event where it should be Once per session, or the reverse), or its Google Ads Count is wrong (Every where it should be One, or the reverse). Either way, Ads imports the wrong set.
Where it's caught
GA4 Admin: the key-events list not matching what the business calls a conversion; the Ads conversion column disagreeing with GA4 for the same event.

How a correct fire becomes the wrong count

Four switches sit between a correct event and the number Google Ads' automated bidding (Smart Bidding) optimises on, and each one is set by hand. The first is the GA4 key-event flag: only key events can be imported into Google Ads (choosing a plain event in the import flow marks it as a key event on the way), so a purchase or lead that was never marked or imported never reaches it, and a scroll or file_download that was imported inflates it.

The second is the GA4 counting method. Once per event (the recommended default) counts every fire; Once per session (labelled Legacy) counts one per session, and it is the default for key events created from Universal Analytics goals, so migrated properties often still carry it on events where it is wrong.

The third is the Google Ads Count setting on the conversion action: Every counts each conversion after an ad interaction and suits sales, One counts a single conversion per ad click and suits leads. When the GA4 link shares conversions on Paid and organic channels attribution, that count is managed in GA4, not Ads.

The fourth is the goal status. In standard goals, only primary actions feed the Conversions column and bidding; secondary actions report in All conv. only (a secondary action inside a custom goal is still bid on). Google sets conversion actions based on GA4 key events to secondary to prevent counting the same event twice for bidding, but anyone can switch them to primary in Google Ads, and if the Google Ads tag is also primary for the same sale, every order is counted twice in the column the bid strategy reads.

None of this is the normal gap between GA4 and Ads. Ads dates a conversion to the ad click, GA4 to the moment it happened; Ads credits only its own ad interactions while GA4 credits every channel; Ads adds modelled and cross-device conversions on top of what it observed. Those differences are expected and do not need fixing. F-104 is the part of the gap someone configured.

Google Ads · Goals → Conversions → Summary · one outcome, last 30 days · reconstructed · client data anonymised
Conversion action · sourceStatusCountConv.
Purchase · Google Ads tagPrimaryEvery412
purchase · GA4 importPrimaryEvery398
Conversions column (bidding reads)810
Store orders · back office405

How to catch it

  1. Write down what the business actually calls a conversion (a paid order, a qualified lead, a booked call) before opening any tool. Then open GA4 Admin → Data display → Events, Key events tab, and set the list against it. Every business outcome should be there once, and nothing else should be: page_view, scroll, file_download or a generic form_start marked as a key event inflate whatever they are shared into.
  2. On the same Key events tab, read each key event's counting method. A purchase on Once per session (Legacy) under-counts a second order in the same visit; a generate_lead on Once per event counts a double-submitted form as two leads. If the property was migrated from Universal Analytics, expect the Legacy method on the old goals and check each one.
  3. In Google Ads, open Goals → Conversions → Summary and list every conversion action with its source and its status (Primary or Secondary), then open each action's settings to read its Count. Two primary actions measuring the same outcome, typically the Google Ads tag purchase and a GA4-imported purchase, is the core tell. Add the Conversions column and the All conv. column to the campaign view: if Conversions runs at roughly double the real orders, that is the pair being summed.
  4. Check the Count on each primary action against its job: Every for sales, One for leads. If the GA4 link shares conversions on Paid and organic channels attribution, read the count in GA4 instead, because Ads defers to it there.
  5. Separate the fault from the expected gap before calling it. Compare the same outcome over a closed window that ended long enough ago for late conversions to land, using Conv. (by conv. time) and All conv. (by conv. time) in Ads so both tools are dated to the conversion, not the click. A modest, stable gap is attribution scope and modelling, and is normal in either direction. A gap that is an exact multiple, an exact sum of two actions, or that appeared on the day someone touched the link or the goals, is F-104.
  6. Finish against the back office. Set the Conversions column for a window against real orders or CRM-qualified leads for the same window. The store and the CRM are the only counts that are not a setting.

What putting it right involves

  1. Fix the list first. Mark exactly one key event per business outcome in GA4 and unmark the rest. Engagement signals can stay as plain events, or be shared to Ads as secondary for observation, but they should not sit in the set that bidding reads.
  2. Set each counting method on purpose. Purchases on Once per event in GA4 and Every in Ads, with a stable transaction_id stopping the same order counting twice (that dedup work is F-101 and F-102, not this). Leads on Once per session in GA4 where a repeat submit is the same lead, and One in Ads. Changes apply to future data only, so note the date you made them.
  3. Keep one primary action per outcome. Choose either the Google Ads tag or the GA4 import as the primary source for each sale or lead and set the other to secondary, where it still reports in All conv. without feeding the bid, and check that no custom goal pulls the secondary one back into bidding. Which source you pick matters less than having exactly one. Make the switch in a quiet week and expect bidding to recalibrate for a while, because the number it optimises on has just changed.
  4. Check the GA4 link settings. In GA4 Admin → Product links → Google Ads links, confirm the right Ads account is linked, then in Advertising → Conversion management confirm which key events are shared and on which attribution setting, so you know whether counting is managed in GA4 or in Ads.
  5. Verify after a full cycle. Re-run the closed-window comparison: one primary action per outcome, the Conversions column tracking real orders or qualified leads within the normal attribution gap, and the change date written down so the next person reading the account knows why the line moved.
How I'd fix this

Sources on file

Cited in these case files

F-104 turns up as evidence across the archive. It is cited in:

Questions on this file

Should Google Ads bid on the Google Ads tag or on the GA4 import?

On one of them, never both as primary for the same outcome. Both are valid sources. What breaks bidding is having the tag and the import both set to primary, because the Conversions column then sums them and every sale counts twice. Pick one per outcome, set the other to secondary so it still reports in All conv. (and keep it out of any custom goal), and write the choice down so nobody flips it back.

Should a key event count once per event or once per session?

It depends on what one occurrence means to the business. A purchase is worth counting every time, so Once per event, with a transaction_id to stop the same order counting twice. A lead form submitted twice in one visit is usually one lead, so Once per session fits. Google recommends Once per event and labels Once per session as Legacy, but the right answer is the one that matches how the business counts the outcome. The method applies to future data only.

Should my Google Ads conversion count be One or Every?

Every for sales, where one ad click can genuinely lead to several orders. One for leads, where three form submits from one click are still one prospect. Count One on ecommerce under-reports repeat buyers; Count Every on lead generation rewards the campaigns that attract double-submitters. If GA4 shares conversions on Paid and organic channels attribution, the count is managed in GA4, not in Ads.

Why did my Google Ads conversions double overnight?

Look first for a second primary action. The usual cause is a GA4-imported conversion being switched to primary while the Google Ads tag for the same sale was already primary, or a fresh GA4 link that brought key events in alongside an existing tag. Open Goals → Conversions → Summary, filter to primary, and look for two actions measuring the same outcome. If you find only one, it is likely a double fire at the tag instead, which is F-101.