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.
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.
Scroll right to see all columns
| Action | GA4 event | What it really records | Role |
|---|---|---|---|
| Website form | generate_lead (recommended event sent by your code or tag) | A lead, if sent after the form is accepted | Primary |
| Confirmation page | An event created from page_view with the confirmation page URL | A page view; a reload may count again | Primary if nothing better |
| Phone number | A custom event from a click trigger on the phone link | A tap, not a connected call | Supporting |
| Chat link | A custom event from a click trigger on the chat link | A tap, not a message | Supporting |
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.
Scroll right to see all columns
| Event type | What it is | For leads | Watch out |
|---|---|---|---|
| Enhanced measurement | On by option; includes file_download, form_start, form_submit | A quick start for form leads | Form detection is not described: test it |
| Recommended | Predefined name and parameters, such as generate_lead | The best fit for a form lead | You implement it in code or Tag Manager |
| Custom | Any name you choose | Taps on phone and chat links | Not 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.
- 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.
- 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.
- 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.
- 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.
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.
- 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.
- Accept analytics consent first: with consent mode and no consent, events are not visible in debug mode.
- Open DebugView, pick your device and submit one real test lead. In Tag Manager preview you also see which tag fired and why.
- Find the event in the middle column (the Seconds stream, the last 60 seconds). It must appear once, with the parameters you expect.
- Run negative tests: an empty form, an invalid phone number, a reloaded confirmation page, the back button. The primary conversion must not fire.
- 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.
Scroll right to see all columns
| Cause | How it shows | What to check |
|---|---|---|
| Event collected but not marked as a key event | Visible in event reports, absent from key events and Google Ads | Mark it; the change applies from that moment |
| Event call placed above the Google tag snippet | The event never arrives | Move the call below the snippet |
| Event name over 40 characters | The key event is not reported | Shorten the name |
| Form trigger without Check Validation | More conversions than leads | Select Check Validation or send the event from code |
| Event fires when the confirmation page reloads | Counts rise without new leads (assumption) | Reload the page during the test; trigger on the submission |
| Imported conversion stays secondary | Google Ads reports it but bidding ignores it | Change the optimization setting in Google Ads |
| Declined analytics cookies under consent mode | Debug mode shows nothing; tags are blocked or send reduced data | Test 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
- 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
- send the event first, then mark it as a key event, and remember that marking applies from that moment, not to past data
- 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
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
- Yandex Metrica: what goals are and goal typesyandex.ru · checked 03/11/2026
- Yandex Metrica: the Target event (JavaScript event) goalyandex.ru · checked 03/11/2026
- Yandex Metrica: the reachGoal methodyandex.ru · checked 03/11/2026
- Yandex Metrica: the Page visit goalyandex.ru · checked 03/11/2026
- Yandex Metrica: the Page views goalyandex.ru · checked 03/11/2026
- Yandex Metrica: the composite goalyandex.ru · checked 03/11/2026
- Yandex Metrica: the Form submission goalyandex.ru · checked 03/11/2026
- Yandex Metrica: the Phone number click goalyandex.ru · checked 03/11/2026
- Yandex Metrica: the Messenger transition goalyandex.ru · checked 03/11/2026
- Yandex Metrica: call goalsyandex.ru · checked 03/11/2026
- Yandex Metrica: automatic goalsyandex.ru · checked 03/11/2026
- Yandex Metrica: checking a goalyandex.ru · checked 03/11/2026
- Yandex Metrica: the counter debuggeryandex.ru · checked 03/11/2026
- Yandex Metrica: troubleshooting goalsyandex.ru · checked 03/11/2026
- Yandex Metrica: statistics collection notice and deferred counter loadingyandex.ru · checked 03/11/2026
- Yandex Direct: Metrica and measuring promotion performanceyandex.ru · checked 03/11/2026
- Google Analytics: key eventssupport.google.com · checked 03/11/2026
- Google Analytics: mark events as key eventssupport.google.com · checked 03/11/2026
- Google Analytics: about eventssupport.google.com · checked 03/11/2026
- Google Analytics: enhanced measurement events (forms, downloads)support.google.com · checked 03/11/2026
- Google Analytics: create events from existing eventssupport.google.com · checked 03/11/2026
- Google Analytics: event and parameter limitssupport.google.com · checked 03/11/2026
- Google Analytics: monitor events in DebugViewsupport.google.com · checked 03/11/2026
- Google Analytics: key event counting methodsupport.google.com · checked 03/11/2026
- Google for Developers: send events with gtag.jsdevelopers.google.com · checked 03/11/2026
- Google for Developers: events reference, generate_leaddevelopers.google.com · checked 03/11/2026
- Google Ads: import Google Analytics key events as conversionssupport.google.com · checked 03/11/2026
- Google Tag Manager: set up Google Analytics eventssupport.google.com · checked 03/11/2026
- Google Tag Manager: form submission triggersupport.google.com · checked 03/11/2026
- Google Tag Manager: custom event triggersupport.google.com · checked 03/11/2026
- Google Tag Manager: preview mode and Tag Assistantsupport.google.com · checked 03/11/2026
- Google Tag Platform: consent modedevelopers.google.com · checked 03/11/2026