14 April 2026 , Blackgate

If your conversions are wrong, every downstream decision is wrong - budget shifts, “winning” creatives, and SEO priorities included. For lead generation, the hard part is not firing “form_submit” - it is one conversion per true lead, no double fire on thank-you pages, and agreement between GA4, ad platforms, and your CRM or pipeline where possible.

Name the outcomes that matter

Separate macro (qualified lead, booked call) from micro (scroll depth, chat open) in reporting. Micros are diagnostic; macros are what you optimise to once volume allows. If Google Ads and GA4 use different definitions of the same label, you will never reconcile ROAS or CPA.

GA4 events - keep the model boring

The failure mode to picture is a stakeholder comparing Google Ads, Meta, and GA4 on Monday morning, each showing a different “leads” number—and everyone defending their own definition. Boring, explicit event names and one agreed “conversion” for optimisation prevent that week from happening.

  • form_submit or a server-side equivalent when the server accepts a lead - better than only client-side, which can miss ad blockers and double-count.
  • Thank-you page views as backup only if the URL is unique and not reloaded; prefer dataLayer on successful submit with deduplication keys where your stack allows.
  • Phone and chat as distinct events, not lumped with forms, unless the business truly treats them identically in reporting.

Use GTM (or gtag) with a versioned container, naming conventions, and staging test triggers before production publish.

QA checklist (repeat after each site change)

  1. Test in debug mode: one submit → one conversion in GA4 Realtime.
  2. Block or filter internal IP / dev traffic from production reporting where policy allows.
  3. Cross-check a sample day: CRM lead count vs GA4 vs ad platform - explain deltas (spam, test leads, cut-off timezones).
  4. Consent mode (where applicable) - unconsented modelling vs gaps in data - document what leadership sees in GA4 when consent is denied for ads.

Account structure for paid search without measurement chaos: Google Ads Search, brand, and PMax structure.

Why “more conversions” in the UI can be a lie

When the count goes up after a “fix,” pause before you celebrate. Often you have simply started counting twice, or a single success path now fires in both the form iframe and the parent page. The list below is the short tour of how that happens; treat it as a debug checklist, not a judgment.

  • Double tags (GA + legacy UA leftovers, or two GTM triggers).
  • iFrame forms firing parent and child events.
  • SPA route changes re-counting the same “page view as conversion.”
  • Session-scoped misconfiguration in GA4 - fixed with clear event parameters and audience definitions.

CRM handoff (optional but powerful)

If marketing automation or CRM is the source of truth for a lead, consider importing offline conversions or using CAPI-style patterns where the platform supports it, so quality of lead can feed bidding over time. That is advanced - start with one true online conversion.

CRM and automation hygiene for list quality: duplicates, consent, deliverability.


Frequently asked questions

GA4 vs Google Ads conversion import?

Different roles - align definitions; Ads often imports from GA4 when configured, but test the same event or document differences.

Server-side GTM?

Valuable for reliability and ad blockers; add when client-side is consistently under what the business knows is real.

What about assisted conversions?

Use path and MCF as context, not a second optimisation target until macros are clean.

How often to audit?

Quarterly minimum; after any form, replatform, or GTM publish - immediately smoke test.

We only care about phone calls

Use CallRail-class or native call events with the same QA rigour; do not pretend form_submit is the business.

Have a Project for Us?

Tell us where you're headed, and we'll show you how we can help you get there.

Let's chat