Skip to content

Guide 165 · Events · GA4 + Tag Manager

Event naming rules: 40 characters, letters numbers and underscores, and the names you must never reuse

Checked 11 November 2026 · Verification: event reference validated structurally (event, parameters, rules, worked example); name lengths recomputed · Steps traced to Analytics Help, opened 11 November 2026 · 6-minute read

An event name is a contract: once the data is collected under it, the name is permanent, and a bad name splits the report forever. The rules are short — 40 characters, letters numbers and underscores, starting with a letter, case-sensitive — and the reserves are shorter still: never ga_, google_, or firebase_, never a recommended name for a different meaning, and never personal data in a name or a value.

Expected signal

After the check, every event name on the property passes the rules: each is under 40 characters, each starts with a letter, each uses only letters, numbers, and underscores, and none reuses a reserved name or prefix.

Download the reference: the event naming rules reference (JSON) (2992 bytes, MD5 aaf9b4ebbb29df4edff5586b0df358b0). It lists the worked example — four names checked against the rules, two passing and two failing with their reasons — the limits (40 characters, 25 parameters per event, 500 distinct event names on an app stream), and the reserved prefixes. The names themselves are not in the file as tags: the check is a list, not a container.

What you need

  • The names on the property, written down. Open the Events report and list every event name the property collects. The check is a list, not a feeling.
  • The rules, as Google states them. Names start with a letter, use only letters, numbers, and underscores, are at most 40 characters, and are case-sensitive.
  • The reserved list. The prefixes ga_, google_, and firebase_ are reserved, and a recommended name must never be reused for a different meaning.

The worked example

The check below runs four names against the rules. Two pass and two fail, and each failure has a different reason — which is why the check is per name, not per property.

Event nameLengthVerdict
newsletter_signup17PASS
Newsletter Signup17FAIL: spaces and capitals
google_quote_clicked20FAIL: reserved prefix google_
quote_requested_for_the_new_windows_and_doors_range51FAIL: over the 40-character limit
Characters left in newsletter_signup40 - 17 = 23

Those figures were recomputed here before publication: newsletter_signup is 17 characters, so 40 minus 17 is 23 characters remaining; the long name is 51 characters, which is 11 over the limit. The rule for a good name is the standard form:

newsletter_signup
lowercase, underscores, starts with a letter, 17 of 40 characters

The trace

  1. List the names. Open the Events report (Reports, then Engagement, then Events) and write down every event name the property collects, with the count beside each. A name that appears twice with different capitalization is two events, not one.
  2. Check the characters. For each name, confirm it starts with a letter and uses only letters, numbers, and underscores. A name with a space — Newsletter Signup — fails, and the fix is a new name with underscores, not an edit: the old name's history stays under the old name, as the rename guide explains.
  3. Check the length. For each name, count the characters against the 40-character limit. A name over the limit does not arrive as sent: the limit is enforced at collection time, so the data is cut or the event is not marked as a key event.
  4. Check the reserves. For each name, confirm it does not start with ga_, google_, or firebase_, and does not reuse a recommended name for a different meaning. A custom event named purchase that is not a purchase is dropped or mishandled.
  5. Check the variables. For each name, ask whether anything that changes per occurrence is baked into it — quote_requested_windows, quote_requested_doors. If it is, the name is a constant that should have been a parameter, and every new value becomes a new event. Move the variable into a parameter and keep one name.
  6. Check for personal data. For each name and each parameter value, confirm no email address, name, or phone number travels in it. Personal data in GA4 breaks Google's terms, and it is the one rule with no fix after collection: the data is already there.

Dead ends

DEAD END — THE SAME NAME IN TWO SPELLINGS. newsletter_signup and Newsletter_Signup are two events in the report, and the total is split across two rows. Pick one spelling per event and use it everywhere — the tag, the trigger, and the data layer push.

DEAD END — A NAME OVER 40 CHARACTERS THAT STILL FIRES. The tag fires cleanly and the event arrives cut, so the report shows a name nobody wrote. Count the characters before the tag ships, not after the data arrives.

DEAD END — A VARIABLE IN THE NAME. An event name such as click_button_red makes every new button a new event, and the 500 distinct names on an app stream fill up on colours. The name stays constant; the variable goes in a parameter.

End state

One list, every name passing. Each name is under 40 characters, starts with a letter, uses only letters, numbers, and underscores, and none reuses a reserved name or prefix. New names are planned first — the rename guide shows what a rename costs — and the list is checked again every time a tag is added, because a name that slips through at build time splits the report for as long as it collects.

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 reference file was validated structurally in Python 3.12.3 — it parses, four names are checked with their lengths and verdicts — and the lengths were recomputed: newsletter_signup is 17 characters with 23 remaining under the 40-character limit; the long name is 51 characters, 11 over the limit. Google moves menu items without warning; if a path on this page no longer matches, the linked help page is the current map.