GA4 event parameters with Google Tag Manager
An event tells you that something happened: a form was sent, a plan was chosen. Event parameters tell you which form and which plan. Without them GA4 can count, but it cannot explain. This guide sets up parameters with Google Tag Manager from start to finish: the data layer, the variables, the GA4 Event tag, parameters for every event, registering them for reports, the limits and the checks. At the end: what people usually mean by "event parameter matching", and what changes in a server container.
Part of the GA4 setup guide. You need GA4 installed through Tag Manager; if it is not yet, do that first.
What an event parameter is
A parameter is a name and a value sent with an event, such as form_name: contact on a generate_lead event. GA4 collects some by itself (page_location, page_title, link_url on outbound clicks), and recommended events come with recommended parameters, such as purchase with value, currency and items. Those fill GA4's built-in dimensions without setup.
Parameters you invent, such as form_name or lead_type, are collected as soon as you send them, but only appear in reports once you register them as a custom dimension or metric. That extra step is where most setups go quiet.
1Push the values into the data layer
The cleanest source for a parameter is the data layer: your site or form tool pushes the values when the event happens.
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'generate_lead',
form_name: 'contact',
lead_type: 'quote'
});
The event key is what a Tag Manager trigger listens for; the other keys become parameters. Agree on names before anyone writes code: lowercase, underscores, starting with a letter. A custom dimension is tied to the exact parameter name, so form_name and formName are two different things.
2Read them with Data Layer Variables
In Tag Manager, go to Variables › User-Defined Variables › New and choose Data Layer Variable. Enter the key, for example form_name, and keep Data Layer Version 2, which reads dots as nesting (ecommerce.value reaches into an object). Name it so you find it again, such as DLV · form_name, and make one per value.
3Add the parameters to the GA4 Event tag
Create a trigger: Triggers › New › Custom Event, event name generate_lead. Then go to Tags › New and choose Google Analytics: GA4 Event.
- Measurement ID: your G- ID, ideally from a Constant variable.
- Event Name:
generate_lead. Use Google's recommended name when one fits. - Event Parameters: add a row with Add parameter for each value:
form_namewith{{DLV · form_name}},lead_typewith{{DLV · lead_type}}.
Attach the trigger and save. Because the tag fires on the push itself, the values are in the data layer when the tag reads them.
4Parameters for every event: the Event Settings variable
Some parameters belong on everything: a page type, a logged-in state, a site language. Put them in one variable instead of every tag. Go to Variables › New, choose Google Tag: Event Settings, add a row per parameter and save it as GA4 · Event settings. Then choose where it applies:
- On every event: open your Google tag (in containers with Google's new tag types, the Google Analytics tag) and select the variable under Shared event settings.
- On selected events: open a GA4 Event tag and select it under Event Settings Variable.
A tag can override an inherited parameter for itself, but things stay readable when each parameter is set in one place. The content groups guide uses this pattern for content_group.
5Register custom dimensions in GA4
In GA4, go to Admin › Data display › Custom definitions, open the Custom dimensions tab and click Create custom dimension.
- Dimension name: what reports will show, such as "Form name". Spaces and underscores are fine, hyphens are not.
- Scope: Event for event parameters. User scope is for user properties, item scope for parameters inside
items. - Event parameter: the exact parameter name,
form_name.
Scope and event parameter cannot be changed after saving. Google says data appears 24 to 48 hours after the dimension is created and the data is sent, and only from that point on, so register first and publish the container after. One dimension covers the parameter on every event that sends it. Numbers you want to sum or average, such as a lead score, belong in a custom metric.
6Check in Tag Assistant and DebugView
Click Preview in Tag Manager, trigger the event and check in Tag Assistant that the GA4 Event tag fired with the values you expect. Tag Assistant puts the browser in debug mode, so the event also appears in GA4 under Admin › Data display › DebugView within seconds; click it to see every parameter. A parameter that shows in DebugView but not in reports a few days later is almost always unregistered, or registered with another spelling.
The limits that matter
| Limit | Standard | GA4 360 |
|---|---|---|
| Parameters per event | 25 | Not listed separately |
| Event name and parameter name length | 40 characters | 40 characters |
| Parameter value length | 100 characters (page_title 300, page_referrer 420, page_location 1,000) | Same |
| Event-scoped custom dimensions | 50 | 125 |
| User-scoped custom dimensions | 25 | 100 |
| Item-scoped custom dimensions | 10 | 25 |
| Custom metrics | 50 | 125 |
Character limits cannot be raised, not even on 360. Parameter names cannot start with _, firebase_, ga_, google_ or gtag., and a few names (user_id, session_id, gclid, currency and others) cannot be registered as custom dimensions. Delete a dimension at the limit and Google makes you wait 48 hours for the slot, so register only what you will report on.
Common mistakes
- Not registering, or registering late. The parameter shows in DebugView and nowhere else, and the weeks before registration stay empty.
- Unique values as dimensions. Order IDs or timestamps create thousands of rows that GA4 groups under "(other)".
- Personal data in parameters. Google does not allow personally identifiable data, such as email addresses, in Analytics. Form fields and search terms are where it slips in.
- Firing before the data is there. A tag on a click or page view trigger can read the data layer before the push; trigger on the push's own event.
- One parameter, two places. Set in the Event Settings variable and on the tag with different values. Pick one.
What "event parameter matching" usually means
GA4 has no feature with that name, but three things go by it.
Matching conditions in GA4. Under Admin › Data display › Events, Modify event and Create event use matching conditions on an event's parameters, such as event_name equals form_submit and form_id equals contact; all conditions must match. A property can have 50 modified and 50 created events, neither applies to historical data, and Measurement Protocol events cannot be modified. The key events guide has a worked example.
Trigger conditions in Tag Manager. A trigger can fire only for a certain value, such as {{DLV · lead_type}} equals quote. In a server container, an Event Data variable with the parameter name as Key Path does the same.
Event Match Quality at Meta. Meta scores each server event out of 10 in Events Manager on how well its customer information (email, phone, IP address and more) matches a Meta account. That is about customer information, not GA4 parameters; see the Meta Conversions API guide.
Event parameters through a server container
Nothing in this setup changes when GA4 runs through a server container. The parameters travel inside the GA4 hit to your own tagging domain, the GA4 client turns each one into event data, and Google's GA4 tag sends them on. Custom dimensions are registered in the property, as in step 5.
What you gain is a second place to use them. Any server tag can read a parameter through an Event Data variable, so the lead_type you built once can also go to Meta or Google Ads, and a transformation can remove a parameter before it leaves your server. With Measurebase, Data Enrichment adds location and device headers you can send as GA4 parameters, and the tracking audit tells you when your container sends a parameter that is not registered. Hits to your own domain get past the ad blockers' domain lists, and with Enhanced Ad Blocker Protection past their path rules too, so more visitors' parameters reach GA4.
Frequently asked questions
How many parameters can a GA4 event have?
Up to 25 per event, each with a name of up to 40 characters and a value of up to 100 (more for page_title, page_referrer and page_location).
Why don't my event parameters show up in GA4 reports?
Custom parameters only appear once registered under Admin › Data display › Custom definitions. Allow 24 to 48 hours and check the spelling matches exactly.
Do I need a custom dimension for every parameter?
No. Parameters GA4 knows, such as value, currency or content_group, fill built-in dimensions. Register only the custom ones you report on; a standard property has 50 event-scoped slots.
What is event parameter matching in GA4?
Usually the matching conditions in Modify event and Create event: rules on parameter values that decide which events are changed or copied. At Meta, people often mean Event Match Quality.
Do event parameters change when GA4 runs server-side?
No. They reach the server container with the hit and go on to GA4 unchanged, unless you change or remove them there on purpose.