Skip to content
Home » Reference » Lead Gen Event Schema: The Complete Reference

Lead Gen Event Schema: The Complete Reference

A complete reference for lead generation analytics. All events — from first form view to SQL handoff — with parameters, data types, and data layer examples you can copy into your tracking plan.

Lead gen tracking is deceptively simple. Most teams fire a single form_submit event and call it done. But that tells you nothing about which forms convert, where leads drop off, or how marketing spend connects to pipeline. This reference gives you a structured schema covering the events that actually tie lead generation to revenue.

I’ve implemented this schema across B2B SaaS companies and service businesses in Europe. The structure scales from a simple contact form to a multi-step qualification funnel with demo bookings and call tracking.

Lead Gen Funnel Overview

Lead generation analytics tracks users through four stages. Each stage has distinct events that map to specific pipeline metrics.

Stage Key Events Business Metric
Discovery form_view, cta_click, chat_opened Engagement rate
Capture form_start, form_submit, demo_requested Conversion rate
Qualification lead_qualified, lead_scored, call_completed MQL-to-SQL rate
Handoff meeting_booked, proposal_sent, lead_assigned Sales-accepted lead rate

Form Interaction Events

Forms are the backbone of lead generation. But tracking only submissions misses the full picture. Measuring views, starts, and field-level interactions reveals where your forms leak leads.

Event Parameters Type When It Fires
form_view form_name string Form becomes visible in viewport
form_id string
form_type string
page_path string
form_start form_name string User interacts with first field
form_id string
form_type string
form_field_complete form_name string User completes a field (blur event)
field_name string
field_position number
form_submit form_name string Form successfully submitted
form_id string
form_type string
field_count number
time_to_complete number
form_error form_name string Validation error shown to user
error_field string
error_type string

The form_type parameter is your segmentation key. Use consistent values like contact, newsletter, demo_request, quote, gated_content, or callback. This single parameter lets you compare conversion rates across all form types without creating separate events.

Track time_to_complete in seconds. When I implemented this for a B2B client in Munich, we discovered their quote request form averaged 4.5 minutes — three times longer than their contact form. Shortening it from 12 fields to 7 increased submissions by 35%.

Data Layer Example: Form Submit

window.dataLayer.push({
  "event": "form_submit",
  "form_name": "contact_main",
  "form_id": "cf-001",
  "form_type": "contact",
  "field_count": 5,
  "time_to_complete": 42,
  "page_path": "/contact/"
});

CTA & Click Events

Not every lead interaction starts with a form. Tracking CTA clicks, phone number taps, and download buttons shows you what drives users toward conversion — and what gets ignored.

Event Parameters Type When It Fires
cta_click cta_text string User clicks a call-to-action element
cta_location string
cta_type string
destination_url string
phone_click phone_number string User clicks a tel: link
click_location string
content_download content_name string Gated content downloaded/accessed
content_type string
content_topic string
chat_opened chat_source string User opens live chat or chatbot
page_path string
chat_message_sent message_count number User sends a message in chat
chat_duration number

Use cta_location to track where CTAs perform best: hero, sidebar, inline, footer, exit_intent, or sticky_bar. Combined with cta_type values like button, banner, or text_link, you can optimize placement without guessing.

Data Layer Example: CTA Click

window.dataLayer.push({
  "event": "cta_click",
  "cta_text": "Get a Free Quote",
  "cta_location": "hero",
  "cta_type": "button",
  "destination_url": "/request-quote/"
});

Demo & Consultation Events

For B2B companies, demos and consultations are the highest-intent actions. Tracking the full lifecycle — from request to completion — connects marketing spend to actual sales opportunities.

Event Parameters Type When It Fires
demo_requested demo_type string User submits demo request form
company_size string
industry string
source_page string
meeting_booked meeting_type string Calendar slot confirmed (Calendly, HubSpot)
meeting_duration number
days_until_meeting number
meeting_attended meeting_type string Meeting actually took place (server-side)
meeting_duration number
attendee_count number
meeting_no_show meeting_type string Booked meeting not attended (server-side)
days_since_booking number

The meeting_booked to meeting_attended gap is one of the most undertracked metrics. In my experience, no-show rates for B2B demos range from 15% to 40%. Tracking days_until_meeting helps you optimize: meetings booked 1-2 days out have significantly lower no-show rates than those booked a week ahead.

Note that meeting_attended and meeting_no_show are server-side events — they come from your CRM or calendar API, not from the browser. If you’re running server-side GTM, route these through your server container. Otherwise, fire them via the GA4 Measurement Protocol.

Lead Qualification Events

Qualification events bridge the gap between marketing and sales. They track when a lead moves from “someone who filled out a form” to “someone worth calling.”

Event Parameters Type When It Fires
lead_qualified qualification_type string Lead reaches MQL or SQL threshold
lead_score number
qualification_source string
days_to_qualify number
lead_scored score_change number Lead score changes (CRM trigger)
new_score number
score_reason string
lead_assigned assigned_to string Lead routed to sales rep
assignment_method string
lead_score number
lead_disqualified disqualify_reason string Lead marked as not qualified
disqualify_stage string

Use qualification_type values like mql (Marketing Qualified Lead), sql (Sales Qualified Lead), or pql (Product Qualified Lead). The qualification_source parameter tells you what triggered the qualification: score_threshold, manual_review, demo_completed, or product_usage.

These events are almost always server-side. They originate from your CRM (HubSpot, Salesforce, Pipedrive) and should be sent to GA4 via the Measurement Protocol or server-side GTM to close the loop between marketing attribution and sales outcomes.

Data Layer Example: Lead Qualified (Server-Side)

// GA4 Measurement Protocol payload
{
  "client_id": "stored_ga_client_id",
  "events": [{
    "name": "lead_qualified",
    "params": {
      "qualification_type": "sql",
      "lead_score": 85,
      "qualification_source": "demo_completed",
      "days_to_qualify": 12
    }
  }]
}

Call Tracking Events

Phone calls are still a major conversion channel for service businesses, real estate, healthcare, and high-ticket B2B. If you’re running Google Ads call extensions or have phone numbers on your site, these events connect calls to your analytics data.

Event Parameters Type When It Fires
call_started call_source string Phone call initiated (via call tracking)
tracking_number string
page_path string
call_completed call_duration number Call ends (server-side from provider)
call_outcome string
is_qualified boolean
call_source string

Use call_outcome values like qualified, voicemail, wrong_number, not_interested, or booked_meeting. The call_duration parameter (in seconds) helps define quality thresholds — calls under 30 seconds are rarely genuine leads, while calls over 120 seconds often indicate high intent.

Proposal & Pipeline Events

These events track what happens after qualification — when leads move through your sales pipeline toward becoming customers. They’re essential for connecting marketing attribution to actual revenue.

Event Parameters Type When It Fires
proposal_sent proposal_value number Proposal or quote sent to lead
currency string
proposal_type string
proposal_viewed proposal_value number Lead opens the proposal
time_to_view number
deal_won deal_value number Deal closed successfully
currency string
days_to_close number
deal_source string
deal_lost deal_value number Deal marked as lost in CRM
lost_reason string
competitor string

The deal_won event is your ultimate conversion. When you fire it with the original GA4 client_id via the Measurement Protocol, you can see the full journey: which ad campaign brought the visitor, which page they landed on, which form they submitted, and ultimately how much revenue that generated. This is the closed-loop attribution that most lead gen teams struggle with.

Complete Event Map

Here’s every lead gen event at a glance, organized by funnel stage with recommended GA4 key event status.

Stage Event Name Source Key Event?
Discovery form_view Client No
cta_click Client No
chat_opened Client No
phone_click Client No
Capture form_start Client No
form_field_complete Client No
form_submit Client Yes
form_error Client No
content_download Client Yes
chat_message_sent Client No
demo_requested Client Yes
Qualification call_started Server No
call_completed Server Yes
lead_scored Server No
lead_qualified Server Yes
lead_disqualified Server No
Handoff lead_assigned Server No
meeting_booked Client/Server Yes
meeting_attended Server Yes
meeting_no_show Server No
proposal_sent Server No
proposal_viewed Server No
deal_won Server Yes
deal_lost Server No

Key events (formerly “conversions” in GA4) should be reserved for actions that represent genuine business value. Mark form_submit, demo_requested, lead_qualified, meeting_attended, and deal_won as key events. Keep discovery and micro-interaction events as regular events — they’re valuable for funnel analysis but shouldn’t clutter your conversion reports.

GTM Implementation Guide

Here’s how to implement the core lead gen events in Google Tag Manager. The exact triggers depend on your form technology, but the pattern stays the same.

Event GTM Tag Name Trigger Type Notes
form_view GA4 Event – form_view Element Visibility Fire once per form per page
form_start GA4 Event – form_start Custom Event (dataLayer) First interaction with any field
form_submit GA4 Event – form_submit Form Submission or Custom Event Use success callback, not native submit
cta_click GA4 Event – cta_click Click – All Elements Filter by CSS class or data attribute
phone_click GA4 Event – phone_click Click – Just Links Filter: Click URL contains “tel:”
chat_opened GA4 Event – chat_opened Custom Event (dataLayer) Depends on chat provider’s API

Critical: for form_submit, never trigger on the native form submission event. Most modern forms use AJAX — the page doesn’t reload. Instead, listen for the success callback from your form plugin (HubSpot, Typeform, Gravity Forms all push to the data layer) or use a custom dataLayer.push() after server-side validation confirms the submission went through.

Parameter Naming Conventions

Consistent parameter naming across all lead gen events saves you from GA4’s 50 custom-dimension limit and makes analysis straightforward.

Parameter Reused Across Example Values
form_name form_view, form_start, form_submit, form_error contact_main, quote_sidebar, demo_pricing
form_type form_view, form_start, form_submit contact, newsletter, demo_request, quote, gated_content
page_path form_view, cta_click, phone_click, chat_opened /contact/, /pricing/, /product/
meeting_type meeting_booked, meeting_attended, meeting_no_show demo, consultation, discovery_call, onboarding
lead_score lead_qualified, lead_scored, lead_assigned 0–100 numeric score

This reuse pattern is key. Five shared parameters cover 15+ events. Without it, you’d burn through your custom dimension quota within a single project.

Validation Checklist

Before going live with your lead gen tracking, verify each item:

Implementation Checklist

  • form_submit fires only on successful submission, not on validation errors
  • form_view fires once per form per page load (not on every scroll)
  • form_type values are consistent across all form events
  • time_to_complete resets if user navigates away and returns
  • Phone numbers in phone_click don’t contain PII beyond the number itself
  • Server-side events include the original GA4 client_id for attribution
  • deal_won value matches actual revenue, not estimated pipeline value
  • Key events are marked for the right events (form_submit, demo_requested, lead_qualified, deal_won)
  • All parameter values are lowercase and use underscores
  • Test in GA4 DebugView before deploying to production

FAQ

Should I track every form field individually?

No. Track form_field_complete only for multi-step or high-value forms where you need to identify the exact drop-off point. For simple 3-5 field contact forms, form_start and form_submit are sufficient. Field-level tracking on every form creates unnecessary noise.

How do I connect GA4 leads to CRM data?

Store the GA4 client_id (from the _ga cookie) as a hidden form field. When the form submits, your CRM receives the client_id alongside the lead data. Later, when firing server-side events like lead_qualified or deal_won, use that stored client_id in the Measurement Protocol payload to attribute revenue back to the original session.

What’s the difference between form_submit and demo_requested?

form_submit is the generic event for all form submissions — contact forms, newsletter signups, quote requests. demo_requested is a specific high-intent event for demo or consultation requests. Fire both: form_submit for overall form analytics, and demo_requested as a separate key event with additional parameters like company_size and industry.

Do I need server-side tracking for lead gen?

For basic form tracking, client-side is fine. But if you want to connect CRM events (lead_qualified, deal_won) back to GA4 for attribution, you need server-side tracking via the Measurement Protocol or server-side GTM. This is the only way to close the loop between ad spend and revenue for lead gen businesses.

How many events should I start with?

Start with five: form_view, form_start, form_submit, cta_click, and phone_click. These cover the client-side funnel and take about two hours to implement in GTM. Add qualification and pipeline events later when your CRM integration is ready. Tracking five events well beats tracking twenty poorly.

Further Reading


Lukas Meier
Lukas Meier

Product Analytics Specialist based in Munich. Helping teams implement clean, actionable analytics since 2015.

Leave a Reply

Your email address will not be published. Required fields are marked *