You have ads running, you have sales happening, and GA4 insists almost nothing is going on — while Google Ads itself reports the conversions just fine. It's one of the most common frustrations we see, and it almost always comes down to one of seven specific causes.
1. GA4 and Google Ads were never linked
Sounds obvious, but it's by far the most common cause. GA4 and Google Ads are two separate systems — the link between them has to be set up manually. It doesn't happen automatically when you create an account.
How to check: GA4 → Admin → Product Links → Google Ads. If it says "Not linked," or the account isn't listed at all, that's your answer. For the full setup process — GA4, GTM, and the Ads link — see our GA4 setup guide.
2. The conversion event isn't marked as a "key event"
GA4 tracks a lot of events automatically — clicks, scrolls, page views — but only events explicitly marked as key events (formerly "conversions") get exported to Google Ads.
How to check: GA4 → Admin → Key Events. If your "form submit" or "purchase" isn't listed there, GA4 is tracking it, but it's never being sent to Ads.
3. It's genuinely too early
Import between GA4 and Google Ads isn't instant — it typically takes 3 to 24 hours. A lot of people check the next morning and panic prematurely.
4. Cookie consent is blocking measurement
This is a nuance that gets missed constantly — and one we ran into building our own site. If a site uses a cookie banner (required under most privacy regulations), GA4 doesn't fire until the visitor clicks "Accept." If only part of your traffic consents — commonly 40-70% — GA4 will systematically show fewer conversions than Google Ads records from its own click data. That's not a bug, it's expected behavior once you understand what's happening underneath.
How to check: Compare your cookie consent rate (if you track it) against the gap between Ads and GA4 numbers. A large gap usually correlates with a low consent rate, not a technical failure.
5. Filters are accidentally excluding real visitors
GA4 lets you set up filters, typically to exclude internal company traffic. Occasionally a filter gets set too broadly and starts excluding real customers too — an entire office-building IP range shared by multiple companies, for example.
How to check: Admin → Data Filters. Check whether the filter is in "Testing" mode (logs but doesn't exclude anything) or "Active" (actually removes data).
6. Data is going to the wrong property
If a business has multiple GA4 properties (commonly a test one and a production one), the tracking code on the live site can end up pointing at the wrong one. You end up looking at a property that's simply not receiving real traffic.
How to check: Compare the Measurement ID in your site's tracking code against the property you're actually viewing in GA4.
7. Tag firing order in Google Tag Manager
If you're using GTM, the conversion tag needs to fire after the base GA4 configuration tag loads — otherwise GA4 has no session to attach the conversion to. This is one of the most common mistakes we see in newly set-up accounts.
How to actually diagnose it
- GA4 DebugView (Admin → DebugView) — shows in real time what events your browser is actually sending
- Realtime report — visit your own site and watch whether the visit shows up
- Tag Assistant (Chrome extension) — shows whether tags fire at all, and in what order
If you've gone through this list and you're still not sure, that's usually a sign multiple causes are stacking on top of each other — worth having someone check the account directly rather than guessing further.
Dealing with this across multiple accounts regularly? This kind of diagnosis is exactly what we're automating in MARLY — join the waitlist.
