← All resources Tutorial

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.

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:

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.

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

LimitStandardGA4 360
Parameters per event25Not listed separately
Event name and parameter name length40 characters40 characters
Parameter value length100 characters (page_title 300, page_referrer 420, page_location 1,000)Same
Event-scoped custom dimensions50125
User-scoped custom dimensions25100
Item-scoped custom dimensions1025
Custom metrics50125

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

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.

Continue reading

Ready to improve your tracking setup?

Start free, no credit card required. Live in about 15 minutes.

Start free