By Prakhar KirsaliPublished Topic: GA4
Short answer
A GA4 conversion tracking setup for lead generation works in this order: define the outcomes sales actually cares about, name events for each (generate_lead, phone_call_click, booking_confirmed), implement form and call tracking on real success signals rather than button clicks, mark only those outcome events as key events in GA4, link the property to Google Ads and import the one or two events bidding should optimise toward, then validate every number in DebugView and against your CRM. Everything else — scrolls, page views, form starts — stays an ordinary event.
A lead-generation site lives or dies on a handful of numbers: how many enquiries came in, which channel produced them, and whether any of them turned into revenue. GA4 can answer all three, but only if the setup was designed around those questions. Most aren't — they inherit a default event stream, mark a thank-you page as a key event, and wonder why the reported leads never match what the sales team counts.
This guide walks through the complete setup in build order: what to measure, how to structure events, how to track forms and calls reliably, what deserves key event status, how attribution and CRM feedback fit in, and how to validate the whole thing before trusting it. For the tag-level implementation itself — data layer pushes, GA4 tags in Google Tag Manager, DebugView debugging — see the companion piece on GA4 conversion tracking through GTM; this article covers the measurement architecture that build sits inside.
Terminology first: key events, conversions and what GA4 actually calls things
In 2024 Google renamed GA4 "conversions" to "key events", and kept the word "conversion" for what Google Ads bids on. The distinction matters more than it sounds: a key event is an outcome important to you in analytics; a conversion is an action you are telling an ad platform to buy more of. A lead-generation site typically has two or three key events and one or two Google Ads conversions — not the other way round.
Current terminology you'll meet in the interface: events (everything the site sends), key events (the marked subset, configured under Admin → Events), the Google tag (the GA4 tag loaded on the page, usually via Google Tag Manager), and attribution settings (Admin → Attribution, where the reporting attribution model and acquisition events live). Nothing in this guide uses the old "conversions in GA4" phrasing, because the interface no longer does either.
Start from the outcomes, not the events
Before touching any tag, write down the physical outcomes a lead-generation business cares about. For most sites the list is short and looks like this: a completed enquiry form, a phone call started from the site, a booked consultation or call, an email started from the site, and — on some sites — a live-chat conversation that reaches a sales question.
Each of these gets exactly one event. Everything that is merely a step toward those outcomes — landing on the contact page, opening a form, clicking a field, scrolling halfway — is diagnostic data. It's worth collecting as ordinary events because it explains drop-off, but none of it should ever be marked as a key event. The single most common GA4 fault on lead-gen sites is key-event inflation: a property with ten key events, of which sales would recognise two.
| Outcome | Event name | Key event? | Import to Google Ads? |
|---|---|---|---|
| Completed enquiry form | generate_lead | Yes | Yes |
| Phone call started from site | phone_call_click | Yes | Yes (if calls convert) |
| Booked consultation | booking_confirmed | Yes | Yes |
| Email started from site | email_click | Usually not | No |
| Form opened / first field focus | form_start | No | No |
| Scroll past 50% on a service page | scroll | No | No |
Forms: track the success signal, not the click
Form tracking is where lead-generation GA4 setups go wrong most often, because forms are the main conversion surface and the easiest thing to measure badly. A click on a submit button is not a lead — the form may fail validation, the submission may error, or the button may sit on a multi-step form that fires long before anything is actually enquired about.
There are two reliable success signals, in order of preference. The first is a custom data layer event pushed by the form's own success handler — `dataLayer.push({ event: 'generate_lead', form_id: 'contact' })` the moment the form confirms submission. This works with any form platform, survives multi-step forms, and never fires on validation failure. The second is a thank-you page — covered next — which is legitimate when the form genuinely redirects there on success.
What to avoid: triggers built on submit-button clicks, triggers listening to generic DOM events that some form plugins fire unreliably, and triggers that fire on every step of a multi-step form. Each produces plausible numbers that are quietly wrong — either inflating leads or, worse, dropping some of them.
If the form is embedded from a third-party platform (HubSpot, Typeform, a CRM widget), check whether it can push to the data layer on success or loads inside an iframe. An iframe'd form can't be read from the parent page, so you need the platform's own success-event integration — most serious form platforms have one. This is the point where a setup usually needs a developer for an hour, and it's the best-spent hour in the whole project.
Thank-you pages: legitimate, with known failure modes
A dedicated thank-you page is a valid conversion signal when the form redirects there only on success. In GA4 you track it as an ordinary `page_view` event and mark it as a key event using a configuration that matches the page path — no custom tag required. It's the fastest reliable setup on a site where you don't control the form code.
The failure modes are predictable, and each one corrupts the count: a form that shows the thank-you content inline without changing the URL (so a page-based trigger never fires, or fires on the wrong page); a thank-you page reachable directly or by refresh, which counts staff bookmarks and returning visitors as leads; one shared thank-you page for several forms, which makes per-service reporting impossible; and — the subtle one — a thank-you page that is also indexed and appearing in organic search, which delivers genuine strangers who never submitted anything.
Fixes: make the page URL unique and only reachable via submission, add a canonical or noindex so search doesn't send visitors to it, use distinct paths per form where reporting needs the split, and exclude internal traffic at the property level (Admin → Data streams → configure tag settings → define internal traffic) so the office's repeated tests don't pollute the count.
Phone calls: track the click at minimum, the call itself if it matters
On most lead-generation sites — especially local services — phone calls are a third or more of all leads, and the majority of GA4 setups either miss them entirely or count only clicks. At minimum, track every click on a `tel:` link as a `phone_call_click` event with the number as a parameter. That's a trigger on click elements matching `a[href^='tel:']` and takes minutes.
The honest limitation: a click is an intent signal, not a phone call. Someone may tap, change their mind, and dial from memory. If phone calls are a primary lead source and you're spending on ads that produce them, call tracking closes the gap — either Google Ads' own website call conversions (which estimate calls from ad clicks without touching your site's numbers) or a dynamic number insertion service that swaps the displayed number per visitor source. DNI gives you per-source call data in GA4 through its own integration, but adds a third-party script and usually a monthly cost, so it earns its place only when call volume justifies it.
Whichever level you choose, be consistent about what the number means in reports. "phone_call_click" is a click; don't present it to stakeholders as calls received, and don't import it into Google Ads as a conversion unless calls genuinely lead to business — otherwise bidding optimises toward dialling, not selling.
Key events: mark outcomes, then link and import deliberately
Key events are marked inside GA4 under Admin → Events — the toggle next to the event name. GTM has no key-event concept; it fires events, and GA4 decides which ones matter. Keep the marked set to the outcomes a salesperson would recognise, as per the table above. GA4 will accept far more than is useful; the cost of marking everything is that no single number means anything.
With the property linked to Google Ads (Admin → Product links → Google Ads links), key events become importable as Google Ads conversion actions under Tools → Conversions. Import only the one or two events you want bidding to optimise toward — usually `generate_lead` and, where calls convert, `phone_call_click` with an appropriate conversion window. Bidding on six imported key events dilutes the signal; bidding on micro-events actively teaches the algorithm to chase the wrong behaviour.
One decision prevents the most common double-count: for each physical action, choose either the native Google Ads tag or the GA4-imported key event as the conversion Google Ads bids on — never both. When the numbers across the two platforms matter to you, that's a reconciliation exercise with its own method, covered in why Google Ads conversions don't match GA4.
Attribution: what GA4 will and won't tell you about where leads came from
GA4's default reporting attribution model is data-driven attribution, which distributes credit across touchpoints based on your property's conversion paths, with a last-click fallback where the model has no evidence. Paid and organic channels compete on equal footing in this model, which is exactly what a lead-generation business needs: it answers "which channels produce leads" rather than "which channel touched the lead last".
Two settings deserve a deliberate check under Admin → Attribution. The attribution model applies to reporting; the acquisition events setting determines whether first-time visits or key events define acquisition in traffic reports — for lead-gen sites, key-event-based acquisition usually reflects reality better, because a returning visitor who finally enquires is attributed to the marketing that earned the enquiry, not the first-ever visit. And the eligible window (30–90 days) should roughly match your sales cycle: a 30-day window quietly discards the leads that take two months to decide.
Keep expectations calibrated: GA4 attribution covers the website's measured touchpoints. Leads that arrive by phone and are logged straight into the CRM without a tracked web session, enquiries that come by email seen offline, and referral paths through untracked links all sit outside the model. Attribution in GA4 answers channel-mix questions, not invoice-level ones — that's what CRM feedback is for.
CRM feedback: where tracking becomes a business system
A form submission is a lead to GA4 and a coin flip to a sales team. The loop that turns tracking into decisions is feeding outcomes back: which enquiries were qualified, which became customers, and what they were worth. Two mechanisms do this, at very different effort levels.
The lightweight version is manual reconciliation — a monthly export comparing GA4's lead count against CRM entries by source. It's imprecise but catches the big faults: a channel whose leads never qualify, a form whose submissions go to an unmonitored inbox, a key event quietly under- or over-counting. Most lead-generation businesses should run this regardless of technical sophistication.
The structural version is offline conversion import. Google Ads' enhanced conversions for leads sends hashed lead information (typically email) from your CRM back to Google Ads, letting bidding optimise toward qualified leads or closed deals rather than raw form fills. It's genuinely transformative for businesses with a long sales cycle and enough monthly leads to feed the model — but it needs CRM cooperation, a stable lead identifier, and enough volume (Google's guidance starts around 30+ offline outcomes per month for the model to work well). Below that threshold, manual reconciliation is the honest answer.
Either way, one definition must be agreed before the first import: what counts as a "qualified" lead. If sales and marketing never agree on that, no tracking setup can make the numbers meaningful.
Validation: prove the setup before trusting it
An unvalidated GA4 setup isn't a measurement system; it's a guess with a dashboard. Validation happens at three levels, and the first two take an afternoon.
Technical validation: GTM Preview mode plus GA4 DebugView (Admin → DebugView, after enabling the debug flag) shows each event firing with its parameters in real time. Submit the form, click the phone number, complete the booking flow, and confirm each event arrives once, with the right name and parameters. Check the negative cases too: an invalid form submission should fire nothing; a page refresh shouldn't re-count a lead.
Count validation: after a few days of real traffic, compare GA4 key-event counts against the other records — form platform submission logs, call tracking reports, the CRM. They will not match exactly (GA4's attribution windows and session logic guarantee some drift), but a 10–20% gap is a calibration exercise while a 50% gap is a fault worth finding. The GA4 vs Google Ads reconciliation procedure applies equally to GA4-versus-CRM comparisons.
Ongoing monitoring: the setup decays — forms get redesigned, plugins update, someone rebuilds the contact page without telling the person who owns the container. A five-minute monthly check (DebugView on the main conversion paths, and GA4-vs-CRM totals) catches breakage within a month instead of a quarter. Every serious audit — the GTM audit checklist covers twenty of them — starts here for a reason.
The mistakes that waste the setup
A short list of faults that appear on almost every inherited lead-gen property, in rough order of frequency: form triggers built on button clicks instead of success signals; key events marked on micro-interactions, inflating the count and starving bidding of signal; phone calls tracked as clicks but reported as calls; one shared thank-you page counting refreshes and bookmarks as leads; internal traffic never excluded; both a native Google Ads tag and a GA4-imported key event counting the same action; and attribution settings left at defaults without anyone checking whether the acquisition window matches the sales cycle.
None of these are exotic. All of them produce dashboards that look healthy while quietly misinforming budget decisions — which is the failure mode worth worrying about, because a broken setup that looks broken gets fixed, and one that looks healthy gets funded.
Frequently asked questions
- What's the difference between a GA4 key event and a conversion?
- In current GA4 terminology, a key event is any event you mark as an important outcome in analytics (Admin → Events). A conversion is what Google Ads bids on — usually a key event imported from GA4, or a natively tracked Google Ads conversion action. Keep the key-event list to genuine business outcomes and import only the one or two you want bidding to optimise toward.
- Should I track forms with a thank-you page or a custom event?
- A custom data layer event pushed on the form's real success is the more reliable signal — it survives multi-step forms, can't be counted by refreshes or bookmarks, and can carry parameters like the form ID or service. A thank-you page is a legitimate fallback when you don't control the form code, provided the URL is unique, unindexed, and only reachable after a genuine submission.
- Does GA4 track phone calls?
- GA4 tracks clicks on tel: links natively with a simple click trigger, but a click is intent, not a call. To measure calls themselves you need call tracking — either Google Ads website call conversions (estimates from ad clicks only) or dynamic number insertion, which swaps the displayed number per visitor source and reports calls back into your analytics. Choose based on whether call volume justifies the extra script and cost.
- How many key events should a lead-generation site have?
- Two to four. Typically a completed enquiry form, a booked consultation, and a phone call click if calls convert to business. Every micro-interaction marked as a key event dilutes what the number means and, once imported into Google Ads, dilutes the bidding signal as well.
- How long does a proper GA4 conversion tracking setup take?
- For a straightforward lead-generation site with controlled forms, roughly a day: the event plan, the GTM implementation, and an afternoon of DebugView validation. Add time for third-party form platforms that need their own success-event integration, and for CRM reconciliation if you want offline outcomes feeding back into bidding.
- Why don't GA4 leads match my CRM?
- Some gap is structural: attribution windows, session logic, leads that arrive by phone or email without a tracked web session, and spam that never reaches the CRM. A 10–20% difference is normal. A gap beyond that usually points to a tracking fault — a form trigger that double-fires or drops submissions — or a definitional mismatch between what GA4 counts and what sales logs.