12 Lead Form Analytics Events to Track on a B2B Website
Twelve form and lead events to track in GA4 and your CRM, from form_start to qualified lead, and how to track them without collecting personal data.
Which lead form events should a B2B website track?
Track the full journey: form viewed, form started, step completed, field errors, submit attempted, submission succeeded or failed, and lead generated; then the follow-on actions on the thank-you page and the CRM outcomes of qualified, converted or disqualified. Together these show where people abandon forms and which channels bring leads that become customers. Never send personal details to analytics.
This list is for marketers, CRO specialists and developers setting up tracking on enquiry, demo and quote forms. Event names follow Google Analytics 4 where GA4 has a standard event, checked against Google's documentation on 28 October 2026. For capturing lead sources in the CRM, see measuring conversions across channels.
Before the form is submitted
1. form_view (custom). The form came into view. Without it, you cannot tell whether a low start rate means people saw the form and ignored it, or never scrolled to it. Parameters: form name, page type.
2. form_start (GA4 enhanced measurement). The first interaction with a form in a session. Enhanced measurement sends it with form_id, form_name and form_destination; you need custom dimensions to report on those parameters. Read it as: interest. Start rate equals starts divided by views.
3. form_step_complete (custom). For multi-step forms, each completed step with its number. Shows exactly which step loses people. See multi-step form design.
4. form_field_error (custom). A validation error, with the field name and error type (missing, format) but never the value entered. Repeated errors on one field point to an unclear label or a format rule that is too strict.
5. form_abandon (custom, approximate). A user started but left without submitting, often sent when the page is hidden or closed. Browser behaviour makes this imperfect; treat it as a directional signal.
At submission
6. form_submit (GA4 enhanced measurement). Fires when the form is submitted, including attempts that fail validation or server checks. Useful as "submit attempted", not as a lead count.
7. form_submit_error (custom). The server rejected the submission or it failed to send, with an error category. Spikes reveal broken integrations and spam filters blocking real people.
8. generate_lead (GA4 recommended event). Send this only after the server confirms the lead was saved. GA4 defines it as a lead being generated, with optional currency, value and lead_source parameters. Mark it as a key event.
After submission
9. Thank-you page actions (custom). Clicks on "book a time", downloads or calendar bookings after submitting. These show momentum and help you test what to offer next.
10. Alternative contact clicks (custom). Clicks on phone, WhatsApp and email links near the form. Some visitors prefer these to a form; count them as contact intent, not as completed leads.
In the CRM, sent back to analytics
11. qualify_lead and disqualify_lead (GA4 recommended events). When sales marks a lead as qualified or not, send the event back (GA4 offers a disqualified_lead_reason parameter). This turns "which channel brings form fills" into "which channel brings qualified leads".
12. close_convert_lead and close_unconvert_lead (GA4 recommended events). When the lead becomes a customer or is closed as lost (with an unconvert_lead_reason), send the outcome with a value if you have one. To connect these to the original visit, store the GA client ID or ad click identifiers with the lead.
Not sure your form tracking tells the truth?
A ZSpace Labs conversion audit checks your form events, CRM handoff and reporting, and shows where leads are lost.
Event table
| Event | Source | What it tells you | Key parameters (no personal data) |
|---|---|---|---|
| form_view | Custom | Form was seen | form_name, page_type |
| form_start | GA4 enhanced measurement | Interest | form_id, form_name |
| form_step_complete | Custom | Step-by-step drop-off | form_name, step |
| form_field_error | Custom | Problem fields | field_name, error_type |
| form_abandon | Custom (approximate) | Started but left | form_name, last_field |
| form_submit | GA4 enhanced measurement | Submit attempts | form_id, form_submit_text |
| form_submit_error | Custom | Failed submissions | error_category |
| generate_lead | GA4 recommended | Confirmed leads | lead_source, value, currency |
| Thank-you actions | Custom | Momentum after submit | action_type |
| Alternative contact clicks | Custom | Contact intent outside forms | channel |
| qualify_lead / disqualify_lead | GA4 recommended, from CRM | Lead quality by channel | disqualified_lead_reason |
| close_convert_lead / close_unconvert_lead | GA4 recommended, from CRM | Revenue by channel | value, currency, unconvert_lead_reason |
10 form analytics patterns and what they may mean
Once the events are in place, look for patterns. Each one below suggests a possible cause, not a proven one; confirm with session recordings, a few usability sessions or a test before changing the form.
| Pattern | What it may mean | How to check |
|---|---|---|
| 1. Many views, few starts | Form looks long, offer unclear, or it is easy to miss | Test the call to action and what the form asks for |
| 2. Many starts, few submissions | Friction inside the form | Look at the step or field where people stop |
| 3. Errors concentrated on one field | Unclear label or over-strict format rule | Read the error types for that field |
| 4. Drop at one step of a multi-step form | That step asks for something sensitive or unexpected | Move or explain the question |
| 5. Submit attempts much higher than confirmed leads | Validation or server failures | Compare form_submit with generate_lead and error events |
| 6. Mobile completion far below desktop | Input types, keyboard or layout problems | Test the form on a mid-range phone |
| 7. One channel's leads rarely qualify | Message mismatch or wrong audience | Compare qualify_lead rates by source |
| 8. High submissions, low qualification after a change | The form became too easy for low-intent visitors | Add a qualifying question and compare |
| 9. Spikes in submit errors on a date | A broken integration or spam filter | Check deploys and integration logs that day |
| 10. Many phone or WhatsApp clicks next to the form | Some visitors prefer talking to typing | Keep both; measure the contacts they create |
Rules for tracking responsibly
- Never send names, emails, phone numbers, company names or message text to analytics; Google requires that no personally identifiable information is collected.
- Respect consent: in markets that require it, analytics events fire only after consent, which leaves gaps you should expect in the numbers.
- Count leads from the server-confirmed event, not from clicks on the submit button.
- Name events and parameters consistently, and document them in a tracking plan.
- Test every event in GA4's debug view after each form change, and check that counts match the CRM.
- Report rates (start rate, completion rate, qualification rate), not just counts.
Conclusion
Twelve events are enough to see where a B2B form loses people and which channels bring leads that turn into customers. Use GA4's standard form and lead events where they exist, add a few custom events for views, steps, errors and failures, and close the loop with CRM outcomes. Then use the data to improve the form itself; see improving enquiry forms without attracting low-quality leads.
Sources
Google Analytics Help, enhanced measurement events (form interactions). Google Analytics developer documentation, recommended events (generate_lead, qualify_lead, working_lead, close_convert_lead, close_unconvert_lead, disqualify_lead). Accessed 28 October 2026.
Common questions.
GA4's enhanced measurement can send form_start and form_submit events, but form_submit fires when a form is submitted, not when the submission succeeds. For lead counts, send your own event, such as generate_lead, only after the server confirms the submission.