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.
Why won't GA4 and Google Ads link in the first place?
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.
- Event fires on site — Container published, consent granted
- GA4 records it — Linked property matches your site tag
- Marked key event — Ads can only import key events
- Imported in Ads — Goals > Conversions > Import > GA4
- 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:
- 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.
- 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.
- 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.
- 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:
| Behavior | Native Ads tag + Enhanced Conversions | GA4 import |
|---|---|---|
| Attribution | Ads' own model, ad-click focused | GA4's model, cross-channel |
| Timing | Near real-time | Delayed by GA4 processing, then import |
| Signal for bidding | Direct, with hashed first-party data (Enhanced Conversions) | Second-hand, filtered through GA4 sessions |
| View-through and engaged-view | Supported | Not 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.
| Native tag + Enhanced Conv | GA4 key event import |
|---|---|
| Ads' own ad-click attribution | GA4's cross-channel model |
| Near real-time | Delayed by GA4 processing |
| Hashed first-party match data | Second-hand, filtered by sessions |
| View-through carried through | No view-through or engaged-view |
| Bid on this one | Keep 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.
Do I need admin access to link GA4 and Google Ads?
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

