← All articles
TRACKING

GA4 conversion tracking: the setup guide most sites get wrong

Jul 8, 2026 · 10 min read · by Tufayel Hossain

GA4 conversion tracking is the foundation everything else stands on — bidding, attribution, budget decisions. It's also the thing most sites get subtly wrong, which is worse than getting it obviously wrong, because subtly wrong data still looks like data.

The mental model: everything is an event

GA4 has no "goals," no session-based conversions — just events with parameters. A key event (the artist formerly known as "conversion") is any event you've flagged as one. The whole game is: fire the right events, with the right parameters, exactly once, and flag the right ones as key events.

The setup, in order

  • 1. One data stream per site. Multiple streams for one site (a classic migration leftover) fragments users and double-counts sessions.
  • 2. Fire events through GTM, not hardcoded snippets. One management layer, versioned, debuggable. Mixed hardcoded + GTM tags are the #1 source of double-fires.
  • 3. Name events deliberately. Use recommended names where they exist (purchase, generate_lead, sign_up) — GA4 attaches special reporting to them. Invent names only for genuinely custom actions.
  • 4. Send parameters that matter: value, currency, transaction_id on purchases. No value = Smart Bidding treats a $500 order like a $5 one. No transaction_id = refresh-duplicates inflate revenue.
  • 5. Mark key events sparingly. Three to five that map to money. Marking scroll-depth as a key event is how agencies report success while businesses lose money.

The step everyone misses: the Google Ads link

GA4 tracking and Google Ads optimization are separate systems until you connect them properly:

  • Link GA4 ↔ Google Ads (admin panel, two clicks, frequently forgotten after migrations).
  • Import GA4 key events into Google Ads — or better, tag conversions directly with the Google tag and use GA4 for analysis. Pick ONE as the bidding source. Importing both = double-counted conversions = Smart Bidding optimizing toward fiction.
  • Turn on Enhanced Conversions and consent mode if you serve EU/UK traffic; without them, modeled conversions vanish and your data develops holes exactly where iOS users live.
Test with real money on the line: place a real order, submit a real lead. DebugView is nice; a reconciled bank statement is truth.

The five failure modes I find weekly

  • Double-counting — GTM tag + hardcoded tag + GA4 import all firing. Symptom: platform reports ~2x backend reality.
  • Thank-you-page tracking on a page users can bookmark/refresh — fire on the transaction event, dedupe with transaction_id.
  • Cross-domain leaks — checkout on a different domain without cross-domain config = every purchase attributed to "referral," your ads get zero credit, and someone concludes ads don't work.
  • Consent banner blocking all tags for all users regardless of choice — check fire rates before vs after banner deploys.
  • Nobody reconciles. Platform vs backend, monthly, in a spreadsheet. A stable 15% gap is fine (that's the modern web — shrink it with server-side tracking). A gap that changed suddenly is a broken tag screaming quietly.

The 30-minute monthly ritual

Check: key event counts vs backend, any new "(not set)" spikes, tag fire rates by browser, and whether anyone added rogue tags. Thirty minutes a month keeps the textbook your bidding AI learns from honest — and honest data is the entire ballgame.

Want this fixed in your account?

30 minutes, zero corporate small talk. Bring what's broken — or what's about to be great.

Book a free strategy call