TL;DR, Quick Answer
8 min readGA4 event parameters are the key-value pairs sent with each Google Analytics 4 event, such as which link was clicked or what a purchase was worth. Google allows 25 per event, with names up to 40 characters and values up to 100. A custom parameter is collected as soon as the code sends it, but Google states it "isn't available for reporting" until you register it as a custom dimension or metric, and reports show it 24 to 48 hours after that.
What are GA4 event parameters?
Every event that Google Analytics 4 records carries GA4 event parameters, the key-value pairs that say which link was clicked, what a purchase was worth or which product a visitor viewed. The event name says what happened. The parameters say the details. Google's developer guide puts it in one line: "Parameters provide additional information about the ways users interact with your website."
Google's help centre draws the same split between the three layers of GA4 data: "Events measure what users do on your website or app, like clicking a link or watching a video. Event parameters provide more details about these actions, like which link was clicked or how much of the video a user watched. User properties tell you more about the users themselves." If you are new to the event model itself, start with event tracking and come back here for the parameter layer.
Which parameters does GA4 collect without any code?
GA4 attaches a set of parameters to every event on a web stream, custom events included, before you write a line of tracking code. Google's list of parameters "collected by default with every event, including custom events" names language, page_location, page_referrer, page_title and screen_resolution for web streams. GA4 also generates ga_session_id and ga_session_number with each session and sends engagement_time_msec with events such as user_engagement and page_view.
Recommended events add a second tier: parameters Google has already named and wired into predefined reports. The purchase event is the one most teams use:
| Parameter | Type | Required by Google |
|---|---|---|
transaction_id | string | Yes |
value | number | Yes |
currency | string | Yes |
items | array of items | Yes |
coupon | string | No |
shipping | number | No |
tax | number | No |
Google's reference adds a rule that breaks revenue reports when ignored: "If you set value then currency is required for revenue metrics to be computed accurately." Parameters on automatically collected events and on recommended events populate predefined dimensions and metrics. Everything you invent yourself does not.

How do you send a custom event parameter?
You send a custom event parameter by adding it as a key-value pair in the third argument of the gtag('event', ...) call. Google's guide gives the structure as gtag('event', '<event_name>', {<event_parameters>}); with this example:
gtag('event', 'screen_view', {
'app_name': 'myAppName',
'screen_name': 'Home'
});Here app_name and screen_name are the parameter names, and myAppName and Home are the values. To attach a parameter to every event on a page, put it in the config command instead, as in gtag('config', 'G-XXXXXXXXXX', {'page_title': 'Contact Us', 'currency': 'EUR'}). Google warns against the third option for custom values: "The set command may not reliably propagate custom parameters to all Google Analytics measurement streams." Use event or config for anything you made up.
Check the result in the Realtime report or DebugView. Google's wording is that "These reports show data as it arrives." DebugView lists the merged set, including any values applied globally, on the event's Parameters tab.
Why does a custom parameter not show up in GA4 reports?
A custom parameter does not show up in GA4 reports because Google only reports on it after you register it as a custom dimension or metric. The developer guide states it bluntly: "Without this registration, the parameter data is collected but isn't available for reporting." Realtime and DebugView show the raw value, which is why a parameter can look fine in testing and still be missing from every exploration a week later.
Registration is a two-minute job in the admin screen. Google's help page lists the steps:
- In Admin, under Data display, click Custom definitions.
- Open the Custom dimensions tab and click Create custom dimensions.
- Enter a Dimension name. Google allows underscores and spaces here but not hyphens.
- Set Scope to Event.
- In Event parameter, type the parameter name exactly as your code sends it.
- Click Save.
Two fields cannot be undone. Google marks both Scope and Event parameter with "You can't change this field after you save the new dimension." A typo in the parameter name means deleting the dimension and creating it again. After saving, Google says you can add the dimension to reports "after 24-48 hours from when the custom data was sent and the custom dimension was created." During that window the dimension reads as one of the documented causes of (not set) in GA4. Google's pages say nothing about backfilling values collected before the dimension existed, so register the dimension on the day you ship the parameter.
Numbers go through a different path. A parameter that measures a quantity, such as seconds watched or items in a cart, belongs in a custom metric. Google's rule is that for "categorical data, however, such as what text was clicked or which page was viewed, it's more appropriate to use an event-scoped custom dimension."
What limits apply to GA4 event parameters?
GA4 event parameters are capped at 25 per event, 40 characters per name and 100 characters per value, and Google does not log anything over those caps. The collection limits page says: "Google Analytics doesn't log events, event parameters, and user properties that exceed the following limits."
| Limit | Standard property |
|---|---|
| Parameters per event | 25 |
| Parameter name length | 40 characters |
| Parameter value length | 100 characters |
page_title value | 300 characters |
page_referrer value | 420 characters |
page_location value | 1,000 characters |
| Item-level custom parameters per ecommerce event | 27, on top of the prescribed item parameters |
| Event-scoped custom dimensions | 50 (125 on Analytics 360) |
| Custom metrics | 50 (125 on Analytics 360) |
Google says upgrading to Analytics 360 lets you "increase certain limits (but not event/parameter character limits)", so the name and value lengths stay the same on every property. The binding limit for most sites is the 50 event-scoped custom dimensions, not the 25 parameters per event, because each dimension covers one parameter name across every event that sends it. Hitting the dimension cap has a cost too: Google says "you'll need to wait 48 hours after deleting dimensions to add new ones."
Flowsery
Start Your 14-Day Free Trial
Real-time dashboard
Goal tracking
Cookie-free tracking
Which parameter names does GA4 reserve?
GA4 reserves five prefixes and a list of names for event parameters, and a reserved name cannot back a custom dimension. Google's naming rules say parameter names "can't begin with" an underscore, firebase_, ga_, google_ or gtag.. The names reserved for custom dimensions and metrics are cid, currency, customer_id, customerid, dclid, gclid, session_id, sessionid, sfmc_id, sid, srsltid, uid, user_id and userid.
Case matters for events, and the same habit is safe for parameters. Google's rules state "Event names are case sensitive. For example, my_event and My_Event are distinct events." Pick one style, such as lowercase snake case, and keep it for both events and parameters so that Plan and plan never end up as two columns.

What should never be sent as an event parameter?
Personal data and unique identifiers should never be sent as GA4 event parameters. Google's policy says "no data be passed to Google that Google could use or recognize as personally identifiable information (PII)", with email addresses, personal mobile numbers and social security numbers as its examples. The common leak is a form value or a URL query string copied into a parameter, which the section on events and parameters in how Google Analytics collects user data walks through.
Unique values cause a second problem even when they are not personal. Google tells standard properties not to create "unnecessary high-cardinality custom dimensions" and gives three examples: a unique ID per user, a unique ID per session and a timestamp. Such dimensions "may negatively impact your reports and explorations, and cause data to be condensed under the (other) row." Send categories, such as plan: pro or method: google, not values that are different on every hit.
One parsing rule catches teams out. Google warns that "any value in a custom dimension that resembles a number will be treated as a number, even if it was originally formatted as text", so a text value of "94E40" is read as scientific notation. Prefix codes that look numeric, such as sku_94E40, to keep them as text.
How does Flowsery handle custom event data?
Flowsery records a custom event from a single call such as window.flowsery("signup"), with no tag manager and no custom-dimension registration step between the code and the dashboard. Its goal and event tracking covers button clicks, form submissions, file downloads and video plays, lets you attach revenue values to events, and shows each one in a real-time event feed as it fires, so you check the tracking the moment you ship it. Events are tracked without cookies or personal data. If you are moving an event plan out of GA4, the comparison in custom event tracking in privacy analytics vs GA4 covers which GA4 habits to drop on the way.
Frequently asked questions
How many event parameters can a GA4 event have?
A GA4 event can carry 25 event parameters on a standard property. Google does not log parameters past that limit, so the extra values never reach reports. Analytics 360 raises some limits but not the 40-character name or 100-character value caps.
Why can I see my parameter in DebugView but not in reports?
DebugView and Realtime show raw parameters as they arrive, while standard reports and explorations only show custom parameters that you have registered as custom dimensions or metrics. Register the parameter under Admin, Custom definitions, then allow 24 to 48 hours for the data to show.
What is the difference between an event parameter and a custom dimension?
An event parameter is the key-value pair your code sends with an event. A custom dimension is the report field you create in GA4 that reads one parameter name across every event that sends it. One event-scoped custom dimension covers a parameter on as many events as you want.
Are custom dimensions applied to data collected before they were created?
Google's help pages do not say that custom dimensions backfill earlier data. They state that you can use a dimension 24 to 48 hours after the data was sent and the dimension was created. Register the dimension on the day the parameter ships to avoid a gap.
Can I send a user ID as an event parameter?
Do not register a user ID as an event-scoped custom dimension. user_id is on Google's reserved list, and Google names a unique ID per user as a high-cardinality dimension to avoid. Google points to its User-ID feature for that case instead.
What happens to a parameter value longer than 100 characters?
GA4 does not log a parameter value that exceeds the limit for that parameter. The limit is 100 characters for most parameters, with exceptions of 300 for page_title, 420 for page_referrer and 1,000 for page_location. Trim or map long values to short categories before sending them.
Can I use the gtag set command to send a custom parameter?
Google warns against it. The set command may not reliably propagate custom parameters to all Google Analytics measurement streams. Send custom values through event or config instead, the two commands Google recommends for that job.
How many custom parameters can an ecommerce item carry?
The limits table caps item-level custom parameters at 27 per ecommerce event, on top of the item parameters GA4 already prescribes, such as item_id and item_name. That cap sits separate from the 25-parameter limit on the event itself.
Flowsery
Start Your 14-Day Free Trial
Real-time dashboard
Goal tracking
Cookie-free tracking
Can a custom dimension name include a hyphen?
Google's rule in the admin screen allows underscores and spaces in a custom dimension name but not hyphens. Stick to letters, numbers, underscores and spaces to avoid a validation error when you save the dimension.
What happens if I delete a custom dimension by mistake?
The wait applies once you have hit the custom dimension limit. Google's note says: "If you hit the limit for custom dimensions, you'll need to wait 48 hours after deleting dimensions to add new ones." With all 50 event-scoped slots full, deleting the wrong one to free up room costs two days before you can recreate it.
Was This Article Helpful?
Let us know what you think!
See us more often in Google
One click marks Flowsery as a preferred source, so our articles sit higher in your Top Stories, AI Mode, and AI Overviews.
Before you go...
Flowsery
Revenue-first analytics for your website
Track every visitor, source, and conversion in real time. Simple, powerful, and cookie-free.
Real-time dashboard
Goal tracking
Cookie-free tracking
Related Glossary Terms


What GA4 Custom Dimensions Do, and the Quotas That Cap Them
Registering GA4 custom dimensions turns your event parameters into report fields. See the three scopes, the 50, 25 and 10 quotas and the cardinality trap.


What Changed With Key Events vs Conversions in GA4
Google split one word in two: key events vs conversions in GA4 now name different objects in Analytics and Ads. What each one means and where each shows up.


Why Your GA4 Bounce Rate Is Just Engagement Rate Flipped
Your GA4 bounce rate is the share of sessions that were not engaged. How Google defines it, how it differs from Universal Analytics, and where to add it.


Setting GA4 User Properties and Reporting on Them
Set GA4 user properties with gtag or Tag Manager, register them as user-scoped custom dimensions and stay inside the 25-property limit.


How Pages per Session Is Calculated and What It Says About a Visit
In GA4, pages per session is called Views per session: page and screen views divided by sessions. The formula, where to find it, and how to read it.
What Website Click Tracking Records, and Which Clicks It Loses
Website click tracking records which element a visitor clicked, on which page and when. See the three methods, the fields to send, and why some clicks vanish.
Related Articles


How a Data Layer Feeds Events to Your Analytics Tags
A data layer is the queue a page pushes analytics events into. See how Tag Manager reads dataLayer, why pushes merge, and the mistakes that drop events.


Reading Entry Page vs Landing Page in GA4 and Adobe
The entry page vs landing page split matters because GA4 ships only a Landing page dimension and Adobe ships only Entry page, computed from different fields.


How an Event Naming Convention Survives Its First Rename
An event naming convention has to satisfy GA4's reserved names, 40 character ceiling and case sensitivity, because renaming after launch never touches history.

