# GA4 Event Naming Convention

**Last Updated:** 2026-02-17

Standard event names and parameters for Google Analytics 4 and GTM. Use when adding new conversion points or configuring GTM tags.

## Key Event Counting

Set key events to **"Once per event"** (GA4 Admin > Events > Key events > Change counting method). Google recommends this over "Once per session" to reflect actual user behavior.

## CTA Events

| Event | Source | Parameters | Key Event |
|-------|--------|------------|-----------|
| `cta_click` | dataLayer push from footer | `cta_name`, `cta_location` | Yes |
| `buttonclick_demo_testen` | GTM (legacy) | `button_text` | Optional |

**Valid `cta_name` values:** `Kostenlos testen`, `Demo vereinbaren`, `Rückruf anfordern`, `Kostenlos testen (Comparison)`, `View Plans (Comparison)`, `Partner registrieren - Hero`, `Payroll Demo buchen`.

## Form Events

| Event | Source | Parameters | Key Event |
|-------|--------|------------|-----------|
| `form_submit` | GTMFormTracker | `form_id`, `form_name`, `form_type`, `conversion_type`, `page_url`, UTM params | No |
| `generate_lead` | GTM (mapped from form_submit) | `conversion_type`, `form_id` | Yes |

## Conversion Type Values

Use `conversion_type` to segment form submissions in GA4. Register as event-scoped custom dimension for reporting.

| conversion_type | Description | Forms |
|-----------------|-------------|-------|
| `demo_request` | Demo/trial request | Main demo form, SDR form |
| `lead_capture_popup` | Lead capture popup (2 steps) | lead-capture.php |
| `template_download` | Template/Excel download | submit-template.php |
| `tools_export` | Calculator tool export (PDF/Excel/CSV) | collect-lead.php |
| `tools_generate` | AI tool generation (e.g. Firmennamen Generator) | generate-company-names.php |
| `webinar_registration` | Webinar sign-up | webinar-registration.php, payroll-webinar-registration.php |
| `gated_content` | Gated content download | content-form |
| `shiftops_unlock` | ShiftOps report unlock | shiftops-hubspot.php |
| `addon_request` | Add-on pricing request | addon-request.php |
| `event_registration` | Event registration | event-lead-capture.php |
| `email_capture` | Hero email capture | emailForm |

## Naming Rules

- **Events:** `snake_case` (e.g. `form_submit`, `cta_click`)
- **Parameters:** `snake_case` (e.g. `conversion_type`, `form_id`)
- **conversion_type:** Use values from table above; add new values here when introducing new form types

## Custom Dimensions to Register

Register these event-scoped custom dimensions in GA4 Admin > Custom definitions > Create custom dimension:

| Dimension Name | Event Parameter | Purpose |
|----------------|-----------------|---------|
| Conversion Type | `conversion_type` | Segment form_submit/generate_lead by form type |
| Form ID | `form_id` | Breakdown by specific form |
| CTA Name | `cta_name` | CTA click breakdown |
| CTA Location | `cta_location` | CTA placement analysis |

Allow 24–48 hours for custom dimensions to appear in reports after creation.

## GTM Configuration

1. **DataLayer Variables:** Create `DLV - conversion_type` for `conversion_type`
2. **GA4 Tag:** Pass `conversion_type` as event parameter when firing `generate_lead`
3. **GA4 Admin:** Register custom dimensions (see table above)

## References

- [CONVERSION_POINTS_AUDIT.md](CONVERSION_POINTS_AUDIT.md)
- [GTM_CONFIGURATION_GUIDE.md](GTM_CONFIGURATION_GUIDE.md)
- [v2/js/gtm-form-tracking.js](../../../v2/js/gtm-form-tracking.js)
