Skip to content

How to set up lead conversions in GA4 and check they count

Which events to track for a business that lives on enquiries, how GA4 events differ from key events, how to create and test each one, and where the counts go wrong, with a short note on Yandex Metrica goals

Magosh Alshanskiy, editor in chargePublished ≈ 8 min read32 sources
Contents

In short. Set up one primary conversion for the moment a lead is accepted (a form submission or a confirmation page view) and treat taps on a phone number or chat link as supporting events. In GA4, send the event (the recommended generate_lead event, a custom event from Google Tag Manager, or one created from a page_view of the confirmation page), mark it as a key event, and import it into Google Ads only if you bid on it. Check with a real test lead in DebugView: the event must fire once for a real submission and never for an empty form or a reloaded confirmation page.

30key events at most in a standard GA4 property (50 in GA4 360)Google Analytics Help
24 hoursstandard reports and Google Ads imports can take up to a day to show a conversionGoogle Analytics and Google Ads Help
60 secondswindow shown by the DebugView seconds streamGoogle Analytics Help
$65 vs $100cost per lead by tracked conversions and by CRM leadsillustrative example

What counts as a lead, and how many conversions do you need?

Make the primary conversion the moment after the lead is accepted

A conversion is the action your business treats as a result. GA4 calls it a key event: an event that measures an action particularly important to the success of your business, and any collected event can be marked as one. Google Ads uses the word conversion for the objects it creates from key events. Before touching tags, list which actions bring a lead.

A tap on a phone number is not a conversation, and a tap on a chat link is not a message: keep them as supporting events. Make the primary conversion the moment after the lead is accepted: the confirmation page, or an event sent from your code after the server accepted the form.

Lead actions and the GA4 event that can capture them

Scroll right to see all columns

ActionGA4 eventWhat it really recordsRole
Website formgenerate_lead (recommended event sent by your code or tag)A lead, if sent after the form is acceptedPrimary
Confirmation pageAn event created from page_view with the confirmation page URLA page view; a reload may count againPrimary if nothing better
Phone numberA custom event from a click trigger on the phone linkA tap, not a connected callSupporting
Chat linkA custom event from a click trigger on the chat linkA tap, not a messageSupporting

How do GA4 event types differ, and where do key events fit?

GA4 has four kinds of events. Automatically collected and enhanced measurement events arrive once the tag is set up; recommended and custom events you implement yourself. Google advises custom events only when no other event fits, and notes that they generally do not appear in standard reports.

Key events have a counting method: once per event (recommended) counts every firing, once per session (legacy) counts one per session; a change affects future data only. A standard property can have up to 30 key events, a 360 property up to 50, so mark the few that matter.

Three event types you will use for leads

Scroll right to see all columns

Event typeWhat it isFor leadsWatch out
Enhanced measurementOn by option; includes file_download, form_start, form_submitA quick start for form leadsForm detection is not described: test it
RecommendedPredefined name and parameters, such as generate_leadThe best fit for a form leadYou implement it in code or Tag Manager
CustomAny name you chooseTaps on phone and chat linksNot in standard reports; name up to 40 characters

How do you create a lead conversion? Four steps

The order is the same on any site: make GA4 receive the event, mark it as a key event, choose the counting method, import into Google Ads only if you bid there.

  1. Send the event. In Google Tag Manager, create a Google Analytics: GA4 Event tag, type the event name (for a form lead, the recommended name generate_lead) and attach a trigger. With gtag.js, add the call below the Google tag snippet.
  2. No access to code? In Admin > Events choose Create event and copy page_view into a new event when page_location matches your confirmation page URL. A rule takes an hour or more to apply and does not touch history.
  3. Mark the event as a key event: the star next to it in Admin > Events, or the Mark as key event switch while creating it. Then pick the counting method; once per event is the recommended one.
  4. For Google Ads, link the accounts and import the key event. Data can take up to 24 hours to appear, earlier history is not included, and conversions created from the Analytics interface start as secondary: change that in Google Ads before bidding on them. Then test with the routine below.

How do you send the event from code or Tag Manager?

In code, Google's reference gives the pattern gtag('event', 'generate_lead', {currency: 'USD', value: 30.03, lead_source: 'Trade show'}). Put event calls below the Google tag snippet: Google will not process events placed above it. Keep event names under 40 characters: a key event with a longer name is not reported.

In Tag Manager, the event name you type in the tag creates a custom event, or a recommended event if you use a predefined name. For a click, use an All Elements trigger with Some Clicks and a condition such as Click Text contains your button label; for a page-based event, a Page View trigger. When your code runs dataLayer.push({'event': 'lead_sent'}), a Custom Event trigger with the same event name fires the tag. Avoid the .* regex there: it matches every event, including those Tag Manager emits itself.

Why can a form trigger count more leads than you receive?

The Tag Manager form submission trigger has a Check Validation option that limits firing to successfully sent forms. If it is unselected, the trigger fires whenever a user attempts to submit the form. Google's enhanced measurement page says form_submit fires on submission but does not explain how it separates valid from rejected ones: test it.

Illustrative example: a week of ads cost $6,500, visitors pressed submit 100 times, the form rejected 35 attempts, and the CRM received 65 leads. A trigger without validation reports 100 conversions at $65 each, while the real cost per lead is $100. Ads look 35% cheaper than they are.

Fixes: select Check Validation, or push an event from your own code after the server accepts the form and fire the tag with a Custom Event trigger. Select Wait for Tags too, so slow tags fire before the next page loads.

Illustrative example
Cost per lead by tracked conversions and by CRM leads
Illustrative example: cost per lead by tracked conversions and by CRM leads
ItemValue
Per tracked conversion$65
Per lead in the CRM$100

Illustrative example: $6,500, 100 submit attempts, 35 rejected, 65 leads; 6,500 / 100 = 65, 6,500 / 65 = 100

How do you check that a conversion counts? A test lead and negative tests

Test with debugging tools, not standard reports, because reports lag. Google says key events can take up to 24 hours to appear in standard reports, while Realtime reports update within a few minutes.

  1. Turn on debug mode for your device: Tag Assistant or Tag Manager preview mode, or debug_mode set to true in the gtag config or in the Google tag.
  2. Accept analytics consent first: with consent mode and no consent, events are not visible in debug mode.
  3. Open DebugView, pick your device and submit one real test lead. In Tag Manager preview you also see which tag fired and why.
  4. Find the event in the middle column (the Seconds stream, the last 60 seconds). It must appear once, with the parameters you expect.
  5. Run negative tests: an empty form, an invalid phone number, a reloaded confirmation page, the back button. The primary conversion must not fire.
  6. The next day, check reports and, after an import, Google Ads; after a week, compare counts with CRM leads.

What else breaks the numbers? Seven common causes

Rows marked as an assumption are editorial reasoning, not Google's text: test them on your site.

Common causes of wrong conversion counts and what to check

Scroll right to see all columns

CauseHow it showsWhat to check
Event collected but not marked as a key eventVisible in event reports, absent from key events and Google AdsMark it; the change applies from that moment
Event call placed above the Google tag snippetThe event never arrivesMove the call below the snippet
Event name over 40 charactersThe key event is not reportedShorten the name
Form trigger without Check ValidationMore conversions than leadsSelect Check Validation or send the event from code
Event fires when the confirmation page reloadsCounts rise without new leads (assumption)Reload the page during the test; trigger on the submission
Imported conversion stays secondaryGoogle Ads reports it but bidding ignores itChange the optimization setting in Google Ads
Declined analytics cookies under consent modeDebug mode shows nothing; tags are blocked or send reduced dataTest with consent accepted and declined

A one-week task for your team

Give your team or contractor this task and ask for evidence on every line.

  • A list of conversions: action, role, event name, owner of the form and of the tag
  • Events sent first, then marked as key events; names under 40 characters
  • Test leads on desktop and mobile, with consent accepted and declined; screenshots of DebugView
  • Negative tests: empty form, invalid phone, reloaded confirmation page
  • After a week: key event count against CRM leads for the same period; investigate any gap with the table above

What this article does not cover

This article describes documented behavior as of 3 November 2026; interfaces change. Ad blockers and declined cookies will always leave some leads uncounted. Acceptance before an ad launch is covered in the journal article How to check conversion tracking before you launch ads; why analytics, CRM and ad platform counts differ, in Analytics says 120 leads, the CRM 87, the ad platform 140: which is right? Legal consent requirements are a question for a lawyer.

The publisher of this journal is connected to WEBNOSTRA, which sells analytics setup services. You can follow this routine in-house or with any contractor.

Key decisions

  1. decide which action is a lead, make the moment after the lead is accepted the primary conversion, and keep taps on phone and chat links as supporting events
  2. send the event first, then mark it as a key event, and remember that marking applies from that moment, not to past data
  3. accept each conversion with a real test lead in DebugView and with negative tests, then compare a week of counts with the CRM

What to discuss with your team

  • The list of lead actions is agreed: each has a role (primary or supporting), an event name and an owner
  • Each primary conversion is sent as an event and marked as a key event, with the counting method recorded
  • The primary conversion fired once for a real test lead and not for an empty form or a reloaded confirmation page
  • Form triggers are checked for rejected submissions (Check Validation or an event sent from code)
  • A week of key event counts is compared with CRM leads, and any gap is explained
A text file with decisions, questions and sources

Terms in plain language

Key event
A GA4 event marked as measuring an action particularly important to the business; Google Ads calls the objects it creates from key events conversions
Recommended event
An event with a predefined name and parameters that you implement yourself, such as generate_lead
Custom event
An event with a name you choose; Google advises it only when no other event fits
DebugView
A GA4 report that shows events from a device in debug mode, with the last 60 seconds in the middle column
Data layer
The place where your code pushes events and values, for example dataLayer.push, so that a Custom Event trigger in Tag Manager can match them

Sources

  1. Yandex Metrica: what goals are and goal typesyandex.ru · checked 03/11/2026
  2. Yandex Metrica: the Target event (JavaScript event) goalyandex.ru · checked 03/11/2026
  3. Yandex Metrica: the reachGoal methodyandex.ru · checked 03/11/2026
  4. Yandex Metrica: the Page visit goalyandex.ru · checked 03/11/2026
  5. Yandex Metrica: the Page views goalyandex.ru · checked 03/11/2026
  6. Yandex Metrica: the composite goalyandex.ru · checked 03/11/2026
  7. Yandex Metrica: the Form submission goalyandex.ru · checked 03/11/2026
  8. Yandex Metrica: the Phone number click goalyandex.ru · checked 03/11/2026
  9. Yandex Metrica: the Messenger transition goalyandex.ru · checked 03/11/2026
  10. Yandex Metrica: call goalsyandex.ru · checked 03/11/2026
  11. Yandex Metrica: automatic goalsyandex.ru · checked 03/11/2026
  12. Yandex Metrica: checking a goalyandex.ru · checked 03/11/2026
  13. Yandex Metrica: the counter debuggeryandex.ru · checked 03/11/2026
  14. Yandex Metrica: troubleshooting goalsyandex.ru · checked 03/11/2026
  15. Yandex Metrica: statistics collection notice and deferred counter loadingyandex.ru · checked 03/11/2026
  16. Yandex Direct: Metrica and measuring promotion performanceyandex.ru · checked 03/11/2026
  17. Google Analytics: key eventssupport.google.com · checked 03/11/2026
  18. Google Analytics: mark events as key eventssupport.google.com · checked 03/11/2026
  19. Google Analytics: about eventssupport.google.com · checked 03/11/2026
  20. Google Analytics: enhanced measurement events (forms, downloads)support.google.com · checked 03/11/2026
  21. Google Analytics: create events from existing eventssupport.google.com · checked 03/11/2026
  22. Google Analytics: event and parameter limitssupport.google.com · checked 03/11/2026
  23. Google Analytics: monitor events in DebugViewsupport.google.com · checked 03/11/2026
  24. Google Analytics: key event counting methodsupport.google.com · checked 03/11/2026
  25. Google for Developers: send events with gtag.jsdevelopers.google.com · checked 03/11/2026
  26. Google for Developers: events reference, generate_leaddevelopers.google.com · checked 03/11/2026
  27. Google Ads: import Google Analytics key events as conversionssupport.google.com · checked 03/11/2026
  28. Google Tag Manager: set up Google Analytics eventssupport.google.com · checked 03/11/2026
  29. Google Tag Manager: form submission triggersupport.google.com · checked 03/11/2026
  30. Google Tag Manager: custom event triggersupport.google.com · checked 03/11/2026
  31. Google Tag Manager: preview mode and Tag Assistantsupport.google.com · checked 03/11/2026
  32. Google Tag Platform: consent modedevelopers.google.com · checked 03/11/2026
ToolPath from lead to saleSpend and leads by stage for one cohort: where the largest drop happens.Use your own numbers

Keep reading

All guides