GA4 → Google Ads Conversion Import: A One-Click Bridge

Forest Liu · Data Marketing Lead for Multiple Companies#ga4#google-ads#conversion-import

Summary

We found contact_us fired on page load (126 events across 117 sessions, ~1 per session) and imported only generate_lead from GA4 into Google Ads, so optimization now runs on real submission signals — ad-blocker-proof via server-side Measurement Protocol.

Quick answer

Audit your GA4 events before importing: verify what each event fires on, exclude page-load events like contact_us (roughly one per session, not a real submit), import the genuine submission event such as generate_lead as an Ads conversion action, and add it to campaign optimization goals. Server-side Measurement Protocol events flow through the same import, closing the loop end to end.

Every Ads manager has been there: the Google Ads interface shows almost no conversions, yet our own GA4 dashboard clearly records real form submissions. Two systems, two stories. The result is an optimizer that has nothing reliable to bid toward.

The problem: Ads and GA4 told different stories

For one of our lead-gen accounts, the Ads conversion actions were missing or stale. Meanwhile GA4 had been collecting the real signal all along — form submissions tracked as generate_lead. We were essentially telling Google Ads to optimize blind, while the truth was sitting in GA4.

Step one: audit which GA4 events really represent a lead

Before importing anything, we audited our GA4 events to find which ones actually mean a lead. This is where we caught our ghost. The event contact_us was firing on page load, not on submission. In our data it showed roughly 126 occurrences across 117 sessions — about one per session, the signature of a page-load trigger rather than a genuine submit. Had we imported it, Google Ads would have counted nearly every visitor as a conversion.

The real submission event was generate_lead, and that is what we decided to import.

Step two: import and wire it into optimization

With the right event identified, we imported generate_lead from GA4 into Google Ads as a conversion action, then added it to the campaign optimization goals. From that point the optimizer started bidding toward the signal that actually pays.

Step three: close the loop with server-side events

A final piece made the loop complete. Our key events are also sent directly to Google via server-side Measurement Protocol, which survives ad blockers. Because GA4 import consumes the GA4 data set, those server-side events flow into Google Ads automatically — the conversion signal becomes ad-blocker-proof end to end.

The audit is worth repeating. Events change whenever tags are refactored, and a once-valid event can quietly become a page-load ghost. We recheck trigger timing whenever the site or the tag manager changes, and we treat the event-to-session ratio as a cheap smoke test: if an event approaches one occurrence per session, assume it is firing too early.

The reusable checklist

  • Confirm the real key event in GA4. Verify when each candidate event actually fires.
  • Audit for ghost events. Anything that fires on page load — roughly one per session — is not a submission.
  • Import it as a conversion action. Use GA4 import so Ads optimizes on the same data you trust.
  • Watch the optimization follow. Give it a few days and check that conversion counts and bidding behavior now track reality.

This exact workflow — audit the event, import it, close the loop — is what our marketing analytics module automates at iport, so the bridge between GA4 and Google Ads stops being a manual chore.

Note on system details: The iport platform is under active development. Any product features, interfaces, or workflows described in this article reflect the version in use at the time of writing and may differ from the latest release. For the most current capabilities, refer to the official platform documentation.

Frequently asked questions

How do I tell a ghost event from a real one in GA4?

Check when the event fires. A real submission fires only after the user completes the form; a ghost event fires on page load or page view. The signature is roughly one occurrence per session — exactly what we saw with contact_us at 126 events across 117 sessions.

Does importing a GA4 event into Google Ads change my GA4 reports?

No. The import is read-only from GA4's side — you are simply telling Google Ads to treat that event as a conversion action. Your GA4 reports and event counts stay exactly as they were.

How do server-side Measurement Protocol events end up in Google Ads?

They are written into the same GA4 data set that conversion import reads from, so once imported as a conversion action they flow into Google Ads automatically — including events that browsers with ad blockers never sent client-side.

Keep reading