A consistent naming convention is the foundation of clean analytics data. Without standardized naming, your GA4 reports become cluttered with duplicate events like button_click, Button_Click, and buttonClick — all tracking the same interaction but appearing as separate events.
This guide covers official GA4 naming rules, practical patterns for events and parameters, and GTM organization strategies that scale across teams and projects.
GA4 Official Naming Rules
Before exploring best practices, understand Google’s hard requirements. Violating these rules means your events won’t be recorded or will be recorded incorrectly.
Event Name Requirements
| Rule | Requirement | Example |
|---|---|---|
| Character Limit | 40 characters maximum | newsletter_subscription_complete (31 chars) ✓ |
| Starting Character | Must start with a letter | view_item ✓ / 2nd_click ✗ |
| Allowed Characters | Letters, numbers, underscores only | add_to_cart ✓ / add-to-cart ✗ |
| Case Sensitivity | Event names are case-sensitive | sign_up ≠ Sign_Up |
| Reserved Prefixes | Cannot start with ga_, firebase_, google_ |
ga_custom_event ✗ |
Parameter Limits
| Element | Character Limit | Count Limit |
|---|---|---|
| Event Name | 40 characters | 500 unique events per property |
| Parameter Name | 40 characters | 25 parameters per event |
| Parameter Value | 100 characters | — |
| User Property Name | 24 characters | 25 per event |
| User Property Value | 36 characters | — |
Event Naming Patterns
While Google’s rules define what’s technically possible, establishing consistent patterns ensures your data stays organized as tracking expands.
Pattern 1: snake_case (Recommended)
Use lowercase letters with underscores separating words. This matches Google’s recommended events and prevents case-sensitivity issues.
| Good ✓ | Bad ✗ | Why It Fails |
|---|---|---|
generate_lead |
Generate_Lead |
Mixed case creates duplicate events |
file_download |
fileDownload |
camelCase inconsistent with GA4 standards |
button_click |
button-click |
Hyphens not allowed in event names |
video_start |
Video Start |
Spaces create invalid events |
Pattern 2: object_action Structure
Structure event names as [object]_[action] where the object comes first and the action follows. This groups related events together in alphabetical reports.
Examples by Category
| Category | Events |
|---|---|
| Forms | form_start, form_submit, form_error |
| Video | video_start, video_progress, video_complete |
| Search | search_perform, search_results_view, search_filter_apply |
| Newsletter | newsletter_view, newsletter_signup, newsletter_confirm |
| File | file_download, file_preview, file_share |
Pattern 3: Custom Prefix Strategy
Prefix custom events to distinguish them from GA4’s automatically collected and enhanced measurement events.
| Prefix | Use Case | Example |
|---|---|---|
c_ |
Custom events (general) | c_feature_used |
ui_ |
UI interactions | ui_modal_close |
exp_ |
Experiment events | exp_variant_shown |
err_ |
Error tracking | err_api_timeout |
Note: Prefixes count toward the 40-character limit. Keep them short.
Parameter Naming Strategy
GA4 allows only 50 event-scoped custom dimensions per property. Reusing parameter names across events conserves this limited resource.
Reusable Parameters
| Generic Name | Use Across | Instead Of |
|---|---|---|
element_type |
All click events | button_type, link_type, card_type |
element_text |
All click events | button_text, link_text, cta_text |
location |
All events | click_location, banner_location |
value |
Conversion events | form_value, order_value |
content_type |
Content interactions | article_type, video_type, file_type |
Avoid Parameter Name Conflicts
Some parameter names are reserved or have special meaning in GA4:
page_location,page_referrer,page_title— automatically collectedcurrency,value— used for revenue trackingitems— reserved for e-commerce item arrays- Parameters starting with
ga_orgoogle_— reserved by Google
GTM Organization Conventions
Consistent naming in Google Tag Manager prevents confusion when multiple team members work in the same container.
Tag Naming Pattern
Use the format: [Platform] [Type] – [Event/Purpose]
| Platform | Format | Example |
|---|---|---|
| GA4 | GA4 Event – [event_name] |
GA4 Event – generate_lead |
| GA4 | GA4 Config – [property] |
GA4 Config – Production |
| Meta | Meta – [event_type] |
Meta – Lead |
| Google Ads | GAds – [conversion_name] |
GAds – Purchase |
| Custom HTML | cHTML – [purpose] |
cHTML – Form Listener |
Variable Naming Pattern
Prefix variables with their type for instant recognition:
| Prefix | Variable Type | Example |
|---|---|---|
dlv – |
Data Layer Variable | dlv – ecommerce.value |
cookie – |
First-Party Cookie | cookie – user_id |
js – |
JavaScript Variable | js – document.title |
cjs – |
Custom JavaScript | cjs – Get Clean URL |
const – |
Constant | const – GA4 Measurement ID |
lookup – |
Lookup Table | lookup – Country to Region |
regex – |
RegEx Table | regex – Extract Product ID |
Trigger Naming Pattern
Format: [Type] – [Target] – [Condition]
| Trigger Type | Example Name |
|---|---|
| Page View | Page View – All Pages |
| Page View (specific) | Page View – Checkout Pages |
| Click | Click – CTA Buttons |
| Link Click | Link Click – Outbound Links |
| Form Submit | Form Submit – Contact Form |
| Custom Event | Custom – purchase_complete |
| Blocking | Blocking – Internal Traffic |
Folder Organization
Organize tags, triggers, and variables into folders by either vendor or purpose:
| By Vendor | By Purpose |
|---|---|
| Google Analytics 4 | Analytics |
| Google Ads | Advertising |
| Meta Pixel | Conversion Tracking |
| LinkedIn Insight | CRO / Testing |
| Hotjar / Clarity | User Research |
| Custom Scripts | Utilities |
Complete Naming Checklist
Before Publishing Any Event
- Event Name: Uses snake_case with all lowercase
- Event Name: Starts with a letter (not number or underscore)
- Event Name: Contains only letters, numbers, underscores
- Event Name: 40 characters or fewer
- Event Name: Does not use reserved prefixes (ga_, firebase_, google_)
- Event Name: Is not a reserved event name
- Parameters: Use consistent names across similar events
- Parameters: 40 characters or fewer for names
- Parameters: 100 characters or fewer for values
- GTM Tags: Follow [Platform] [Type] – [Event] pattern
- GTM Variables: Include type prefix (dlv –, cjs –, etc.)
- Documentation: Event added to tracking specification sheet
Reserved Event Names
These event names are reserved by GA4 and cannot be used for custom events:
Documentation Template
Maintain a living document (Google Sheet or Notion) with all implemented events. Include these columns:
| Column | Purpose | Example Value |
|---|---|---|
| Event Name | Exact GA4 event name | form_submit |
| Category | Grouping for organization | Lead Generation |
| Description | When this event fires | User submits any form |
| Parameters | List of parameters sent | form_name, form_id, page_path |
| GTM Tag | Name of GTM tag | GA4 Event – form_submit |
| Trigger | When tag fires | Form Submit – All Forms |
| Key Event | Marked as conversion? | Yes |
| Date Added | Implementation date | 2025-01-09 |
| Owner | Person responsible | Analytics Team |
Key Takeaways
Use snake_case Always
Lowercase letters with underscores. Matches Google’s format and prevents case-sensitivity issues.
Reuse Parameters
Generic parameter names like element_type conserve your 50 custom dimension slots.
Prefix GTM Elements
Type prefixes (dlv –, cjs –) make variables instantly recognizable.
Document Everything
A tracking spec sheet prevents duplicate events and keeps teams aligned.
Further Reading
- Event naming rules — Google Analytics Help
- Event collection limits — Google Analytics Help
- GTM and GA4 Naming Conventions — Analytics Mania
- GTM & GA4 Naming Conventions — MeasureSchool
Product Analytics Specialist based in Munich. Helping teams implement clean, actionable analytics since 2015.