
I hit this one on a client project last week, and every search I ran while stuck pointed at the wrong fixes. So here is the real mechanism, and the fix that actually works.
The setup
You have a GA4 property collecting clean events. You mark the ones that matter as key events. You link the property to the client's Google Ads account. Then you open the Ads import wizard (Goals, then Conversions, then New conversion action, then Import, then Google Analytics 4 properties) expecting to pick your key events off a list.
The list is empty. No error, no explanation. Just nothing to import.
You re-check the link. You re-check the key events. You wait 24 hours because a forum post told you to. Still nothing.
What actually happened when you linked GA4 to Ads
Here is the part nobody tells you: on the setup we hit, linking the GA4 property had already created the conversion actions automatically. They existed the whole time. They were just created with status HIDDEN, which means they do not appear in the Conversions summary, and the import wizard will not list them because, as far as it is concerned, there is nothing left to import. The import already happened.
I could even prove the auto-sync was live: when I marked one more GA4 event as a key event later that same day, a matching conversion action appeared in the Ads account on its own, with a newer ID than the others. Nobody clicked anything.
So the wizard and the auto-sync are two doors into the same room, and the auto-sync got there first. The wizard shows you an empty room and shrugs.
Why the UI cannot fix this
There is no button in the Google Ads interface that lists hidden conversion actions and un-hides them. The wizard only shows importable events that do not have a conversion action yet. The Conversions summary only shows enabled and removed actions. HIDDEN is a real status in the API, but the UI simply has no surface for it.
Which means the fix lives in the Google Ads API, even if you have never touched it before.
The fix: query for hidden actions, then enable them
Two steps. First, find the hidden conversion actions with a GAQL query (the API's SQL-ish query language). You can run this in the API without writing an app by using the interactive query builder or a one-off script:
sqlSELECT
conversion_action.resource_name,
conversion_action.name,
conversion_action.status
FROM conversion_action
WHERE conversion_action.status = 'HIDDEN'Ours came back with the exact key events we had been hunting for, named like example.com (web) book_appointment_click.
Second, flip each one from HIDDEN to ENABLED with a mutate call:
json{
"operations": [
{
"updateMask": "status",
"update": {
"resourceName": "customers/XXXXXXXXXX/conversionActions/NNNNNNNNNN",
"status": "ENABLED"
}
}
]
}That is the whole fix. The moment they are enabled, they show up in the Conversions summary and start recording. Do not re-run the import wizard afterward; there is nothing for it to do, and you risk creating duplicates.
The gotcha that bites you a week later
Conversion actions have a primary or secondary setting: primary conversions drive automated bidding, secondary ones are recorded but do not steer the algorithm. If you are enabling these mid-flight on an account with live campaigns, you probably want them secondary first, so you can watch data quality before handing them the steering wheel.
Here is the trap: that setting is governed at the goal level, not just the action level. If your new conversion actions land inside one of Google's account-default goals, the goal's configuration wins, and your carefully applied secondary setting on the action quietly does not take effect. They run as primary, they enter the Conversions column, and your campaigns' learning phase restarts.
After you enable, open the Conversions summary and read the actual columns: Action optimization, and Included in account-level goals. Believe the UI over whatever you set in the API call. If they are primary and you did not want that, the choice is to demote at the goal level (and accept a second learning-phase reset) or leave them and wait out the first one. Neither is free. Decide deliberately, not by default.
Verifying data is landing
Give it about a day. Then check Conversions summary with segmentation off and a window that covers the change. Two things to remember while you stare at small numbers:
- Ads only counts ad-attributed conversions. GA4 counts everything. If GA4 shows hundreds of events and Ads shows a handful, that is not a bug, that is attribution scope.
- A conversion action showing "No recent conversions" with an active tracking status is fine for low-volume events. Give it time before declaring it broken.
If you run into conversion tracking problems on a single-page app specifically, that is a different failure mode, and I wrote up that fix separately: Fix Google Ads conversion tracking on a React SPA.
The takeaway
When the GA4 import wizard shows nothing, stop treating it as a sync failure. The sync probably worked too well: your conversion actions already exist, hidden where the UI cannot show them and the wizard will not mention them. Query for HIDDEN, enable what you find, then go read the primary and secondary settings at the goal level before your campaigns' bidding does something you did not sign off on.
One list, one mutate call, and a settings page most people never open. That is the whole repair.
Your digital website sherpa: practical web tips for small businesses, straight to your inbox
Join the Digital Website Sherpa newsletter. No spam, just practical, actionable advice to help you grow your business online. Unsubscribe anytime.
Paul Mulligan
Freelance Web Developer
Paul Mulligan is a freelance web developer based in Baltimore, MD with 10+ years of experience building WordPress and Webflow sites for small businesses. He focuses on clean design, fast performance, and real results.
Support My Open Source Work
I build free, open-source developer tools like Flavian and Aurelius. If you find my work helpful, consider supporting me on Patreon.
Support on PatreonRelated Articles
Google Ads Tag Inactive? The Exact Fix (React & SPA) — 2026
Read ArticleReady to Transform Your Business's Website?
Let's discuss how I can create a website that attracts and converts more customers.
Get a Free Consultation