Skip to main content

I've untangled this mess on dozens of accounts, and it's almost never one problem. Someone linked GA4 to Google Ads months ago, imported a conversion, renamed the event in GTM, and now Ads is bidding on an action that's been dead since March. The bridge has more joints than people realize. Every one fails silently. Let's walk them in order.

Nine times out of ten it's permissions: you need Editor or Administrator on the GA4 property and Admin on the Google Ads account, on the same Google login. Missing either side, and the other account won't appear in the linking screen — agencies hit this constantly. More traps:

  • Wrong property. Companies with multiple GA4 properties link the old one, or a test property. Confirm the property in the link (GA4 Admin → Product links → Google Ads links) is the one your site tag actually sends to.
  • MCC (manager account) confusion. You can link at the manager-account level or to individual client accounts. Both work, but if the client account later leaves that MCC, the bridge quietly dies. When in doubt, link directly to the account running campaigns.

While you're there, check two toggles: Enable personalized advertising in the link, and Google signals under GA4 Admin → Data collection. Personalized advertising off means your GA4 audiences won't flow to Ads at all; signals off means no cross-device data feeding them.

Five-stage chain from a site event through GA4 collection, the key event toggle and the Ads import to a primary conversion action feeding Smart Bidding.
Every joint fails silently, and Ads only ever sees the last link. Check them in this order.
  1. Event fires on site — Container published, consent granted
  2. GA4 records it — Linked property matches your site tag
  3. Marked key event — Ads can only import key events
  4. Imported in Ads — Goals > Conversions > Import > GA4
  5. Set primary — Only primary actions feed Smart Bidding

Why aren't my GA4 conversions importing into Google Ads?

Because the import has a strict order of operations, and skipping a step gives you nothing, with no error message. The sequence that works:

  1. Mark the event as a key event in GA4 first. Admin → Events → toggle "Mark as key event" (Google renamed GA4 conversions to "key events" — same thing, new label). Ads can only import key events, not plain events.
  2. Then import it in Google Ads. Goals → Conversions → New conversion action → Import → Google Analytics 4 properties. If your event isn't in the list, it's not a key event yet, or the link is broken.
  3. Set it primary or secondary deliberately. Primary feeds Smart Bidding; secondary is observation-only. If you import a GA4 purchase and also run a native Ads purchase tag, make ONE primary. Both primary means double counting.
  4. Wait. New conversion actions can take a day or more to start showing data. Zero conversions six hours after setup is normal. Zero after a week is a real problem.

Why does my imported conversion action show "Inactive" or stop recording?

Because the GA4 event underneath it changed, and Google Ads has no idea. The import is a reference by event name. Rename generate_lead to lead_form_submit in GTM and the imported action keeps pointing at the old name, records nothing, and eventually flips to "Inactive." I've seen accounts spend for weeks on Smart Bidding with a dead primary conversion. The algorithm doesn't pause; it optimizes toward noise.

Same failure if the event stops firing entirely: a GTM container change, a Shopify theme update, a consent banner blocking the tag. The chain is website → GA4 event → key event → imported action, and Ads only sees the last link. Check the first link (GA4 Realtime, or GTM preview) before touching anything in Ads.

Currency has its own surprise. GA4 converts event revenue into the property's reporting currency, then Ads converts into the account currency. Mixed-currency stores end up with imported values that don't match their platform reports — two exchange-rate hops, not a bug in your tag.

Why do imported GA4 conversions look different from my native Google Ads tag?

Because they count differently by design. Imported GA4 conversions inherit GA4's attribution model and session logic. A user clicks your ad, comes back through organic search three days later, and buys: GA4's data-driven attribution may share that credit across channels, so Ads receives a fraction of a conversion or none. The native Ads tag claims that same purchase for the ad click. Other differences stack on top:

BehaviorNative Ads tag + Enhanced ConversionsGA4 import
AttributionAds' own model, ad-click focusedGA4's model, cross-channel
TimingNear real-timeDelayed by GA4 processing, then import
Signal for biddingDirect, with hashed first-party data (Enhanced Conversions)Second-hand, filtered through GA4 sessions
View-through and engaged-viewSupportedNot carried through the import

So when the import shows 60 purchases and the native tag shows 85, neither is lying. They're answering different questions with different clocks.

Two-column comparison of the native Google Ads tag with Enhanced Conversions against imported GA4 key events, covering attribution, timing, match data and view-through.
When the import shows 60 purchases and the native tag shows 85, neither is lying. Different clocks.
Native tag + Enhanced ConvGA4 key event import
Ads' own ad-click attributionGA4's cross-channel model
Near real-timeDelayed by GA4 processing
Hashed first-party match dataSecond-hand, filtered by sessions
View-through carried throughNo view-through or engaged-view
Bid on this oneKeep it secondary, for observation

Should I bid on GA4 imports or a native Google Ads conversion tag?

Bid on the native tag; keep the GA4 import as a secondary, observation-only action. The native tag with Enhanced Conversions gives Smart Bidding fresher, fuller, ad-focused signal — what you want feeding tCPA or tROAS. The GA4 import earns its keep as a cross-channel sanity check, and it's a fine primary only when you can't run the Ads tag at all. Just know you're then bidding on delayed, model-filtered data.

Why aren't my GA4 audiences showing up in Google Ads?

Usually one of three switches. Google signals must be on in GA4. "Enable personalized advertising" must be on in the Ads link. And audiences must meet minimum size thresholds before they're usable — a brand-new abandoned-cart audience with 40 users sits idle until it grows. Audiences only fill from creation day, so build them well before the campaign that needs them.

Why does first-party server-side tracking fix the whole bridge?

Because every failure above sits downstream of one fragile thing: a browser tag that has to fire perfectly for GA4 to even have the event. Ad blockers stop it. Safari's ITP caps its cookies. Consent banners suppress it. Every blocked pageview is a purchase GA4 never saw and a conversion never imported into Ads.

Server-side tracking, in plain language: instead of the browser sending data straight to Google, events go to a small server you control, on your own subdomain (like track.yourstore.com), which forwards clean data to GA4, Google Ads, Meta, wherever. Because it's first-party — your domain, your server — cookies live longer and ad blockers mostly leave it alone.

For this problem, that means three things. Your GA4 key events are complete, so what Ads imports reflects reality instead of whichever browsers cooperated. Your Enhanced Conversions go out server-side with reliable first-party data, so the native tag matches more conversions back to clicks. And one server pipeline feeds GA4 and Ads from the same events, so the two stop drifting apart — while you control exactly what's shared, per consent.

Frequently asked questions

Why is my GA4 conversion not showing in Google Ads?

Check four things in order: the GA4–Ads link points to the right property, the event is marked as a key event, the key event was imported in Ads, and a day or more has passed since the import.

How long does it take for GA4 conversions to appear in Google Ads?

Expect up to 24 hours after importing, sometimes longer, because GA4 processes events first and Ads pulls them afterward. Nothing after a full week of ad clicks means the bridge is broken, not slow.

Yes, on both sides: Editor or Administrator on the GA4 property and Admin on the Ads account, under the same login. Missing either one is the top reason the linking screen shows nothing.

Why does my imported GA4 conversion say inactive?

The underlying GA4 event stopped firing or was renamed. Ads references the event by name, so a rename in GTM or GA4 orphans the imported action. Fix the event or re-import under the new name.

Should I use the Google Ads tag or GA4 import for conversion tracking?

Use the native Google Ads tag with Enhanced Conversions as your primary bidding conversion, and keep the GA4 import as a secondary action for cross-channel observation. The native tag is faster and gives Smart Bidding a stronger signal.

Why are GA4 and Google Ads showing different conversion numbers?

Different attribution models, counting windows, and timing. GA4 shares credit across channels and processes with delay; Ads credits its own clicks in near real-time. The numbers will never match exactly, and that's expected.

Why is my GA4 audience list too small to use in Google Ads?

Audiences must meet minimum size thresholds before they're eligible for targeting, and they only collect members from creation day. Turn on Google signals, enable personalized advertising, and give the audience time to fill.

  • ga4
  • google ads
  • linking
  • fix it
SETUP GUIDES

Guides for this topic

How accurate is your conversion tracking?

PLATFORM-REPORTEDconversionsdivided byBACKENDreal orders or leadsequalsaccuracy
TRY IT · YOUR NUMBERS
68%Broken. Something is missing entirely. Worth a free audit.
Reading guides because something is broken?Book 30 minutes with Ariful. We'll find it on the call and send a written fix list within 24 hours.
Get my free audit →
Ariful Islam
WRITTEN BYAriful IslamFounder of Tracking Consulting and a computer engineer (Diploma, BSc, MSc in CSE). 300+ clients and 1,000+ tracking projects since 2019.
About Ariful →
FREE · 30-MIN CALL · WRITTEN AUDIT IN 24H

Want us to check your accuracy for you?

We look at your setup together on the call. Within 24 hours you get a written audit and a prioritized fix list you can hand to any developer. Not a fit? We'll say so.