Skip to content
Back to skills

2546 Events Fundamentals Acdeb349

ASecurity

Comprehensive guide to GA4 event architecture including event types, parameters, scopes, and naming conventions.

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 31, 2026
code-qualityjavascriptgojavatestingapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned May 31, 2026

npx -y skills add tools-only/X-Skills --skill 2546-events-fundamentals_acdeb349 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 2546 Events Fundamentals Acdeb349?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 2546 Events Fundamentals Acdeb349
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-2546-events-fundamentals-acdeb349/badge)](https://www.skillsdirectory.com/skills/tools-only-2546-events-fundamentals-acdeb349)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# GA4 Events Fundamentals

Comprehensive guide to GA4 event architecture including event types, parameters, scopes, and naming conventions.

## Overview

Google Analytics 4 uses an event-based architecture where every user interaction is tracked as an event. Understanding GA4's event structure, parameter system, and scoping model is fundamental to successful implementation.

## Event-Based Model

Unlike Universal Analytics (session-based), GA4 tracks everything as events:

- Page views are events
- Clicks are events
- Purchases are events
- Custom interactions are events

Each event has a name and optional parameters providing context.

## Four Event Categories

### 1. Automatically Collected Events

Events that fire without additional configuration once GA4 is installed.

| Event | Description | When Fired |
|-------|-------------|------------|
| session_start | Session begins | First event in session |
| first_visit | User's first visit | First ever session |
| user_engagement | Page in focus | After 1+ second focused |
| page_view | Page loads | With Enhanced Measurement |

These events cannot be disabled and always fire when conditions are met.

### 2. Enhanced Measurement Events

Automatically tracked interactions that can be toggled on/off in GA4 settings.

| Event | Trigger | Configuration |
|-------|---------|---------------|
| scroll | 90% vertical scroll depth | Data Stream settings |
| click | Outbound link clicks | Data Stream settings |
| file_download | PDF, DOC, ZIP, etc. | Data Stream settings |
| video_start | YouTube video starts | Requires JS API |
| video_progress | 10%, 25%, 50%, 75% | Requires JS API |
| video_complete | Video finishes | Requires JS API |
| view_search_results | Site search performed | Query parameter config |
| form_start | First form interaction | Data Stream settings |
| form_submit | Form submission | Data Stream settings |

**Enabling/Disabling:**
Admin -> Data Streams -> Stream -> Enhanced Measurement (gear icon)

### 3. Recommended Events

Google-defined event names with standardised parameters for consistency.

**Engagement Events:**
- login (method parameter)
- sign_up (method parameter)
- search (search_term parameter)
- share (method, content_type parameters)

**Monetisation Events:**
- purchase (transaction_id, value, currency, items)
- add_to_cart (items, value, currency)
- remove_from_cart (items)
- begin_checkout (items, value, currency)
- add_payment_info (payment_type)
- add_shipping_info (shipping_tier)
- refund (transaction_id, value, items)

**Content Events:**
- view_item (items)
- view_item_list (items, item_list_id)
- select_item (items)
- view_promotion (promotion_id, promotion_name)
- select_promotion (promotion_id, promotion_name)

### 4. Custom Events

Business-specific events created for unique tracking needs.

**Examples:**
- video_tutorial_watched
- whitepaper_downloaded
- demo_requested
- pricing_calculator_used
- support_ticket_created

## Event Structure

Every GA4 event consists of:

```
Event
├── event_name (required, max 40 chars)
├── event_parameters (optional, max 25 per event)
│   ├── parameter_name: value
│   ├── parameter_name: value
│   └── ...
├── event_timestamp (automatic)
└── user_information (automatic)
```

**Example Event:**
```javascript
gtag('event', 'purchase', {
  'transaction_id': 'TXN_12345',
  'value': 99.99,
  'currency': 'USD',
  'items': [
    {
      'item_id': 'SKU_001',
      'item_name': 'Blue T-Shirt',
      'price': 29.99,
      'quantity': 2
    }
  ]
});
```

## Parameter Scopes

Parameters apply at different scopes depending on their purpose.

### Event Scope

Applies to a single event occurrence only.

**Use for:** Event-specific information
**Lifespan:** That specific event
**Examples:** button_name, form_id, video_title

```javascript
gtag('event', 'button_click', {
  'button_name': 'Subscribe',      // Event-scoped
  'button_location': 'header',     // Event-scoped
  'button_id': 'btn_subscribe_01'  // Event-scoped
});
```

### User Scope

Applies to all events from that user during the session.

**Use for:** User attributes that persist
**Lifespan:** Session (until cleared)
**Examples:** subscription_tier, customer_segment, loyalty_level

```javascript
gtag('set', 'user_properties', {
  'subscription_tier': 'premium',      // User-scoped
  'customer_lifetime_value': 5000,     // User-scoped
  'preferred_language': 'en'           // User-scoped
});
```

### Item Scope

Applies to individual items in ecommerce events.

**Use for:** Product-specific information
**Lifespan:** That transaction only
**Examples:** item_color, item_size, supplier_name

```javascript
gtag('event', 'purchase', {
  'items': [
    {
      'item_id': 'SKU_123',
      'item_name': 'Blue T-Shirt',
      'item_color': 'blue',    // Item-scoped
      'item_size': 'large',    // Item-scoped
      'supplier': 'Vendor A'   // Item-scoped
    }
  ]
});
```

## Event and Parameter Limits

### Property Limits

| Limit | Standard GA4 | GA4 360 |
|-------|-------------|---------|
| Distinct event names | 500 | 2,000 |
| Event-scoped dimensions | 50 | 125 |
| User-scoped dimensions | 25 | 100 |
| Item-scoped dimensions | 10 | 25 |
| Custom metrics | 50 | 125 |
| Calculated metrics | 5 | 50 |

### Per-Event Limits

| Limit | Value |
|-------|-------|
| Parameters per event | 25 |
| Event name length | 40 characters |
| Parameter name length | 40 characters |
| Parameter value length | 100 characters |
| Items array size | 27 items |

### Special Parameter Limits

| Parameter | Max Length |
|-----------|------------|
| page_title | 300 characters |
| page_referrer | 420 characters |
| page_location | 1,000 characters |

## Event Naming Conventions

### Best Practices

- Use snake_case (lowercase with underscores)
- Be descriptive and action-oriented
- Start with verb when possible
- Keep under 40 characters
- Avoid generic names

### Naming Pattern

```
[action]_[object]_[context]

Examples:
- video_tutorial_started
- whitepaper_downloaded
- demo_request_submitted
- pricing_calculator_used
```

### Good Examples

| Event Name | Purpose |
|------------|---------|
| video_tutorial_watched | User completed video |
| product_comparison_viewed | User compared products |
| trial_signup_completed | User signed up for trial |
| support_ticket_created | User created support issue |

### Bad Examples

| Event Name | Problem |
|------------|---------|
| event1 | Too generic |
| click | Not descriptive |
| MyCustomEvent | Wrong case (not snake_case) |
| data | Meaningless |
| very_long_descriptive_event_name_that_exceeds_limits | Too long |

## Reserved Event Names

Do not use these names (reserved by Google):

- ad_activeview
- ad_click
- ad_exposure
- ad_impression
- ad_query
- adunit_exposure
- app_clear_data
- app_install
- app_update
- app_remove
- error
- first_open
- first_visit
- in_app_purchase
- notification_dismiss
- notification_foreground
- notification_open
- notification_receive
- os_update
- screen_view
- session_start
- user_engagement

## Reserved Parameter Names

Do not use these parameter names:

- firebase_conversion
- Parameters starting with:
  - google_
  - ga_
  - firebase_

## Common Event Parameters

### Standard Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| value | Number | Monetary value |
| currency | String | ISO currency code (USD, EUR) |
| transaction_id | String | Unique transaction ID |
| items | Array | Product objects |
| method | String | Login/signup method |
| search_term | String | User search query |

### Automatically Collected Parameters

These are collected automatically with each event:

- page_location
- page_referrer
- page_title
- language
- screen_resolution
- engagement_time_msec

## Accessing Event Data

### DebugView (Real-time)

- Location: Admin -> DebugView
- Shows live event stream
- Click event to see parameters
- Best for testing

### Realtime Reports (30 minutes)

- Location: Reports -> Realtime
- Event count by name
- Active users
- Geographic location

### Standard Reports (24hr+ delay)

- Location: Reports -> Engagement -> Events
- All event activity
- Event counts and trends
- Parameter breakdown (if registered as dimensions)

## Implementation Examples

### Simple Event

```javascript
gtag('event', 'button_click', {
  'button_name': 'Subscribe',
  'button_location': 'header'
});
```

### Form Submission

```javascript
gtag('event', 'form_submit', {
  'form_name': 'Contact Form',
  'form_id': 'contact-form',
  'form_destination': '/thank-you'
});
```

### Video Engagement

```javascript
gtag('event', 'video_watched', {
  'video_title': 'Getting Started Guide',
  'video_id': 'VID_001',
  'video_duration': 180,
  'video_percent': 100
});
```

### Purchase

```javascript
gtag('event', 'purchase', {
  'transaction_id': 'TXN_' + Date.now(),
  'value': 149.99,
  'currency': 'USD',
  'tax': 10.00,
  'shipping': 5.99,
  'items': [
    {
      'item_id': 'SKU_123',
      'item_name': 'Premium Widget',
      'item_category': 'Electronics',
      'price': 149.99,
      'quantity': 1
    }
  ]
});
```

## Next Steps

After understanding event fundamentals:

1. Review recommended events for your use case
2. Design custom events for business-specific tracking
3. Register parameters as custom dimensions
4. Implement via gtag.js or GTM
5. Test with DebugView

Files in this skill

  • README.md1 KB
  • skill.md9.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…