GA4 Custom Events: Complete Implementation Guide
How to plan, implement, and validate custom events in GA4. Includes naming conventions, parameter best practices, and real examples.
GA4's event-based model is powerful but only if you implement custom events correctly. This guide covers everything from planning your event taxonomy to validating data quality.
Event Naming Rules
GA4 has strict rules for event names:
- Maximum 40 characters
- Must start with a letter
- Only letters, numbers, and underscores
- Case-sensitive (page_View ≠ page_view)
- Maximum 500 distinct event names per property
Naming convention tip: Use `snake_case` consistently. Group related events with prefixes:
- `blog_view`, `blog_scroll`, `blog_share`
- `checkout_start`, `checkout_payment`, `checkout_complete`
Event Parameters
Each event can have up to 25 custom parameters. Register important ones as custom dimensions/metrics in GA4 Admin.
gtag('event', 'generate_lead', { form_id: 'hero-contact', form_name: 'Hero Contact Form', lead_source: 'organic', page_section: 'above-fold' });javascript
Parameter tips:
- Keep parameter names under 40 characters
- Keep values under 100 characters
- Use consistent data types (don't mix strings and numbers)
- Register parameters as custom dimensions if you need them in reports
Recommended Events vs Custom Events
GA4 has [recommended events](https://support.google.com/analytics/answer/9267735) with predefined parameter schemas. Use these when they fit:
| Recommended Event | Use For |
|---|---|
| `sign_up` | Account creation |
| `login` | User login |
| `generate_lead` | Lead form submissions |
| `purchase` | Completed transactions |
| `share` | Social sharing |
| `search` | Site search |
Only create custom events when no recommended event fits your use case.
Validation Workflow
- DebugView: Enable GA4 Debug mode and watch events fire in real-time
- Realtime Report: Check that events appear within 30 seconds
- Event Report: After 24-48 hours, verify events show in standard reports
- Custom Dimensions: Confirm registered parameters populate correctly
Common Mistakes
- Sending PII (emails, phone numbers) as event parameters
- Creating too many unique event names (hitting the 500 limit)
- Not registering parameters as custom dimensions (data exists but isn't reportable)
- Using event names that conflict with GA4 reserved events
Audit your event tracking setup — start a free audit →
Check your GA4 implementation
Run a free AI-powered audit to see how your tracking stacks up.
Start Free Audit