Key takeaways
- A lead conversion is an accepted submission, not a click on the button.
- Track start, submit, and confirmed lead as separate events to see drop-off.
- Confirm the lead on the server so blockers and page exits do not lose it.
- Reconcile the analytics lead count with the inbox and CRM every week.
On this page
Define the conversion before implementation
A lead form conversion is a submission the business accepts, not a click on the submit button. Decide where that moment happens: when the server validates the payload, when the mail service accepts the message, or when the lead appears in the CRM. Each choice changes the number, so pick one and document it.
Name the event in snake case and keep the name stable: generate_lead for a confirmed enquiry, form_submit for an attempt. Renaming an event later breaks reports, audiences, and any imported conversions, so treat the name as part of the interface.
Model the event path
Track three moments rather than one. A start event shows intent, a submit event shows effort, and a confirmed event shows a lead. The gap between them is the most useful diagnostic on the site: many starts with few submits points to the form, while many submits with few confirmations points to delivery.
| Event | Fires when | Useful parameters | Note |
|---|---|---|---|
| form_start | First field receives focus | form_id, page_path | Once per session |
| form_submit | User sends the form | form_id, service, page_path | Attempt, not a lead |
| generate_lead | Server accepts the submission | form_id, service, value, lead_id | Mark as a key event |
| form_error | Validation or delivery fails | form_id, error_type | Diagnostic only |
Confirm leads on the server
Client-side events are lost to ad blockers, script failures, and navigation away before the request completes. Send the confirmed lead from the server after the mail service accepts it, using the Measurement Protocol and the client identifier captured when the form loaded.
Store the API secret in the server environment and never in the browser. Send a unique lead identifier with the event so a retry does not count twice, and respect the consent state that applied when the form was submitted.
Mark the key event and test it
Mark the confirmed lead event as a key event, then test it end to end. Use the debug view with a real submission, confirm the event appears once, and check that the parameters carry the values you expect rather than empty strings.
- Submit a valid form and confirm one generate_lead event.
- Submit an invalid form and confirm no lead event is recorded.
- Repeat a submission and confirm the identifier prevents a duplicate.
- Load the page twice and confirm there is no duplicate tag configuration.
- Check the event on mobile, including a slow connection.
Connect ads and CRM without double counting
Import the confirmed lead event into advertising platforms rather than the submit event. If a value is assigned, use the expected value of a lead rather than revenue that has not been earned, and state the assumption in the property documentation.
For offline qualification, export the lead identifier and the stage from the CRM, then import the qualified stage back as a separate event. Keep the two events distinct so cost per lead and cost per qualified lead are not confused.
Review data quality every week
Compare the confirmed lead count in analytics with the number of enquiries in the shared inbox and the CRM. A gap is normal, because consent choices, blockers, and spam filtering all remove records, but the size of the gap should be stable. A sudden change means something broke.
Set an alert for zero confirmed leads in a 24-hour window during a live campaign, and record the event schema, the owner, and the last test date in one page the team can find.
Frequently asked questions
Should a button click count as a conversion?+
No. A click measures intent, not a delivered lead. Track it as a separate event so the drop-off between click and confirmed submission stays visible.
Why is the analytics lead count lower than the inbox?+
Consent choices, ad blockers, script failures, and spam filtering all remove events. Record the typical gap and investigate changes rather than expecting the two systems to match exactly.
Can GA4 track leads without a tag manager?+
Yes, with the global site tag and custom events. A tag manager makes testing and consent handling easier, but it is not a requirement.
How long does conversion data take to appear?+
Realtime reports show events within minutes, while standard reports can take longer to process. Allow a day before treating a missing conversion as a fault.
Need help applying this?
Get help with Websites & ecommerce.
Review the service scope or tell us what you are trying to improve. We will reply with a clear next step.
Free KPI definition templateRelated reading
A data quality checklist before starting a BI project
The checks that prevent a dashboard from failing after launch: ownership, definitions, completeness, duplicates, and reconciliation.
When to move from spreadsheets to a database
The signals that a spreadsheet has become a database, and the simplest path to a more reliable system.