---
title: "Track demo requests as a GA4 generate_lead event"
description: "Fire a GA4 generate_lead event on every demo request, with lead source and company size as parameters, so completions count as key events in your reports."
url: "https://www.formformform.com/automations/google-analytics-demo-request-conversions"
type: static
generatedAt: "2026-08-23T18:56:58.727Z"
---
![Google Analytics logo](/logos/integrations/google-analytics.svg)

# Count demo requests as a generate\_lead conversion

Each demo request fires a GA4 generate\_lead event, so completions sit in your reports next to the campaigns that produced them.

When this happens

New submission on your demo request form

Do this

Send a GA4 generate\_lead event with the form name and lead source as event parameters

One-directional. A submission triggers the action — nothing is written back into your form.

A demo request is the point where paid spend stops being a guess. Until the completion is an event in GA4, the report ends at the pricing page and the rest of the story lives in a spreadsheet. This flow sends one generate\_lead event per submission, carrying the lead source and the size of the company behind it.

Marketing teams running paid search or a mix of channels reach for it first, usually the week before a budget review. Once the event is marked as a key event, channel and campaign reports show qualified requests rather than sessions.

## Setting it up

1.  1
    
    Publish the demo request form in formformform and keep "How did you hear about us?" on it — that answer is what makes the event worth reporting on.
    
2.  2
    
    In Google Analytics, open Admin → Data Streams, pick your web stream and copy the Measurement ID. Under Measurement Protocol API secrets, create a secret named for this Zap so it can be revoked on its own.
    
3.  3
    
    Create a Zap with formformform as the trigger app, choose New Submission, and select the published demo request form.
    
4.  4
    
    Add the Google Analytics action that sends a GA4 event through the Measurement Protocol, paste in the Measurement ID and API secret, and set the event name to generate\_lead.
    
5.  5
    
    Add the event parameters: lead\_source from "How did you hear about us?", company\_size from "Company Size", implementation\_timing from "When are you looking to implement?".
    
6.  6
    
    Register those three in Admin → Custom definitions as event-scoped dimensions, using the same parameter names. GA4 collects nothing it has not been told about, and a dimension only fills from the day it is created.
    
7.  7
    
    In Admin → Key events, mark generate\_lead as a key event so demo requests appear in the acquisition tables beside sessions.
    
8.  8
    
    Send a test submission, watch it land in Realtime → Event count by Event name, then turn the Zap on.
    

## What maps where

Using the [Demo Request Form](https://www.formformform.com/templates/demo-request-form) as the starting point. These are its real fields — swap in your own and the mapping works the same way.

Form field

Google Analytics

How did you hear about us?

lead\_source event parameter, registered as an event-scoped custom dimension

Company Size

company\_size event parameter, used to break demo requests down by segment in exploration reports

When are you looking to implement?

implementation\_timing event parameter, so near-term requests can be counted apart from browsing

Job Title

job\_role event parameter, kept to a short list of options so it stays under GA4's cardinality limits

Work Email

Hashed in a Zapier formatter step and sent as user\_id; the address itself never reaches Google Analytics

## Variations worth knowing

Give large accounts their own grade

Put a Zapier path on "Company Size". Requests above your threshold send generate\_lead with a lead\_grade parameter of enterprise, the rest send the same event marked self\_serve. One event name keeps the conversion count clean, and the parameter does the splitting inside GA4.

Keep a copy outside Google Analytics

GA4 holds counts, not contact details. Add a second action to the same Zap that writes the row into a sheet or your CRM, so the sales team gets the name and email while Google Analytics gets an anonymous event. The submission drives both, and nothing returns to the form.

## If something isn't arriving

The events arrive, but every lead shows as Direct or (not set)

A Measurement Protocol event carries whatever client ID the Zap sends, not the one in the visitor's browser, so it cannot always be stitched to the session that produced it. Where you can supply the visitor's own GA client ID, map it into the client\_id slot; where you cannot, read channel attribution from your on-page tag and treat this event as the conversion count.

lead\_source is blank in every report

Two causes. The custom dimension was created after the events started arriving, so it is empty for anything older, or the parameter name in the Zap does not match the one registered in Admin → Custom definitions character for character. Both fail quietly — GA4 accepts the event either way.

## Frequently asked questions

Does this replace the GA4 tag on my site?

No. The tag still records pages, sessions and traffic sources. This flow adds one server-side event for the submission itself, which matters when the form is embedded or sits on a subdomain and the on-page tag never sees the completion.

Can I see who submitted the form in Google Analytics?

You should not send names or email addresses into Google Analytics — its terms rule out personal data, and a free-text field would pass the cardinality limits anyway. Keep the identity in formformform or your CRM, and send the event only.

Will Google Analytics write campaign data back into the submission?

No. The connection runs one direction only: a submission fires an event, and nothing is written back into the form or the response. If you need campaign detail beside the lead, capture it on the way in and pass it to your CRM.

## Related automations

-   [Log support requests with the issue category attached](https://www.formformform.com/automations/google-analytics-support-request-categories)
    
    Each support request sends a form\_submit event carrying the issue category, so you can see which topics drive people off the docs.
    
-   [Measure newsletter signups as a sign\_up event](https://www.formformform.com/automations/google-analytics-newsletter-signup-events)
    
    Every newsletter subscription sends a GA4 sign\_up event, so you can build a funnel from landing page visit to completed signup.
    
-   [Record webinar registrations as a conversion event](https://www.formformform.com/automations/google-analytics-webinar-registration-tracking)
    
    Every webinar registration fires a GA4 sign\_up event carrying the session name, so registrations can be attributed campaign by campaign.
    
-   [Track survey completions with the rating attached](https://www.formformform.com/automations/google-analytics-survey-completion-events)
    
    Every product survey response sends a custom feedback\_submitted event carrying the rating, so respondents become a segment you can analyse.
    
-   [Weigh quote requests by estimated deal size](https://www.formformform.com/automations/google-analytics-quote-request-value)
    
    Each quote request sends a generate\_lead event with a value attached, so pages bringing bigger requests stand out from pages bringing many.
    
-   [Add webinar registrants to a remarketing list](https://www.formformform.com/automations/google-ads-webinar-remarketing-list)
    
    Every webinar registration joins a Customer Match audience you can run follow-up campaigns to after the session.
    

-   [All Google Analytics integration details →](https://www.formformform.com/integrations/google-analytics)
-   [Start from the Demo Request Form →](https://www.formformform.com/templates/demo-request-form)
-   [Browse every automation →](https://www.formformform.com/automations)

## Build the form first

The automation needs somewhere to fire from. Publish a form, connect it once, and every submission from then on runs this flow.

[Start free](https://app.formformform.com/register?utm_source=landing&utm_medium=bottom&utm_campaign=automations&utm_content=google-analytics-demo-request-conversions)
