Skip to content

Guide 152 · Events · GA4 + Tag Manager

Track leads with the recommended generate_lead event: value, currency, and the GA4 Event tag

Checked 11 November 2026 · Verification: container fragment validated structurally (format 2, unique IDs, trigger resolves, variable references exist); worked example recomputed · Steps traced to Analytics Help and Tag Manager Help, opened 11 November 2026 · 6-minute read

A lead form that reports only a count hides the value of the leads. The generate_lead event is a recommended event for every property and for lead generation, with two prescribed parameters — value and currency — and this guide builds it as a GA4 Event tag that fires when the form or request is accepted.

Expected signal

After the tag is published, a test lead shows in DebugView as a generate_lead event with value and currency set, and the Realtime report lists it under Event count by Event name within minutes.

Download the container fragment: the generate_lead event container fragment (JSON) (3172 bytes, MD5 3cddd0b1594e6a7983aeb8225be2d27e). It holds one GA4 Event tag named GA4 - generate_lead, the Custom Event trigger that fires when the data layer event equals generate_lead, and the two data layer variables for value and currency. The Measurement ID is left as G-XXXXXXXXXX for you to replace. Import it from Admin, then Import Container, choosing Merge if the container already has tags.

What you need

  • The Google tag already installed through Tag Manager. This guide adds one event tag beside it.
  • A lead your site can signal. The push runs when the form is accepted or the request is received — the confirmation, not the submit button.
  • A value and a currency per lead. Google's prescribed parameters for generate_lead are value, a number, and currency, a 3-letter ISO 4217 code such as USD. The value must be a number, not a string, and currency must be set when value is set.

The worked example

The test below is three leads in one week, each with a value assigned by the sales team. The total is the figure the revenue reporting later shows.

LeadValue (USD)
First lead50.00
Second lead120.00
Third lead75.00
Total lead value245.00
Average per lead245.00 / 3 = 81.67

Those figures were recomputed here before publication: 50.00 plus 120.00 plus 75.00 is 245.00; 245.00 divided by 3 is 81.6667, rounded to 81.67 per lead. The data layer push that carries one of those leads is the standard form:

dataLayer.push({
  event: "generate_lead",
  value: 120.00,
  currency: "USD"
});

The trace

  1. Push the lead to the data layer on acceptance. When the form is accepted, run dataLayer.push({ event: "generate_lead", value: 120.00, currency: "USD" }), with the value set to the lead's assigned value as a number and the currency set to the 3-letter code. The event name is generate_lead, exactly as Google spells it.
  2. Create the two data layer variables. In Tag Manager, go to Variables, then in User-Defined Variables create one Data Layer Variable per parameter: DLV - value for value and DLV - currency for currency.
  3. Add the GA4 Event tag. Go to Tags, then click New. Name it GA4 - generate_lead. In Tag Configuration, choose tag type Google Analytics: GA4 Event. Enter your Measurement ID. In Event Name, enter generate_lead. Under Event Parameters, add two rows: value with {{DLV - value}} and currency with {{DLV - currency}}.
  4. Set the trigger. In Triggering, click the trigger box and choose New, then choose trigger type Custom Event. Set Event Name to generate_lead and choose All Custom Events. Click Save, then Save the tag.
  5. Check it in Preview and DebugView. Click Preview, enter the site URL, and click Connect. Submit the form with a value of 120.00 and currency USD. In Tag Assistant, the generate_lead event must appear in the left panel with the tag under Tags Fired. Then open DebugView (Admin, then Data display, then DebugView) and confirm the event shows with value 120.00 and currency USD.
  6. Publish it as a version. Click Submit at the top right, select Publish and Create Version, name the version, and click Publish.

Dead ends

DEAD END — VALUE SENT AS A STRING. A value of "120.00" in quotes is text, not a number, and GA4 cannot sum it. The push sends the value as a bare number, 120.00, and the tag passes it through the variable unchanged.

DEAD END — VALUE WITHOUT CURRENCY. Google's rule is plain: value must be accompanied by currency. A value with no currency is recorded with the right count but the revenue reporting cannot use it, and it will not be sent to Google Ads.

DEAD END — THE TAG FIRES ON A FAILED FORM. A submit that fails validation is not a lead. If the trigger is the submit instead of the acceptance, the report counts every failed attempt as a lead with a value attached.

End state

One tag, one trigger, two parameters. A lead shows in DebugView within a minute of the test, in Realtime within minutes of publishing, and in the Events report within 24 hours, with the value summed per row. Mark generate_lead as a key event if a lead is one of the few actions that matter to the business — the key event guide covers that step, and the event value guide covers how value and currency work on any event.

Sources

Checked 11 November 2026. The click paths above are the ones in Google's help and developer pages, opened 11 November 2026. No step in this guide was run inside a live Analytics property or a live Tag Manager container, because both need a Google sign-in and this site does not sign in as anyone. What was run: the container fragment was validated structurally in Python 3.12.3 — export format version 2, unique IDs, the tag's firing trigger resolves to the Custom Event trigger in the file, and both data layer variable references exist as variables — and the worked example was recomputed: 50.00 + 120.00 + 75.00 = 245.00 total lead value; 245.00 / 3 = 81.67 average per lead. Google moves menu items without warning; if a path on this page no longer matches, the linked help page is the current map.