{"id":"bed64ddd-d51f-4115-95ec-dbe69522d705","shortId":"wfRP4J","kind":"skill","title":"ga4-events","tagline":"GA4 Event Implementation Reference — complete event taxonomy, parameter lists, implementation patterns (gtag.js, GTM, Measurement Protocol), and validation techniques","description":"# GA4 Event Implementation Reference\n\nComplete reference for implementing Google Analytics 4 events: automatically collected, enhanced measurement, recommended, and custom events with exact parameter lists, code examples, and validation techniques.\n\nFull docs: https://cogny.com/docs/ga4-event-implementation\n\n## Usage\n\n```\n/ga4-events                          # Show event model overview\n/ga4-events purchase                 # Show purchase event parameters and code\n/ga4-events ecommerce                # Full e-commerce event funnel reference\n/ga4-events enhanced measurement     # Enhanced measurement events list\n/ga4-events custom events            # Custom event naming rules and limits\n/ga4-events validation               # DebugView, Realtime, and BigQuery checks\n/ga4-events gtm                      # GTM dataLayer implementation patterns\n/ga4-events measurement protocol     # Server-side Measurement Protocol examples\n```\n\n## Instructions\n\nYou are a GA4 event implementation expert. Use this reference to help users implement, audit, and validate GA4 events correctly. Provide precise, copy-paste-ready code examples.\n\nWhen the user asks a question, find the relevant section below and provide actionable answers with ready-to-use code. If GA4 MCP tools are available, use them to inspect the user's actual property configuration (custom dimensions, data streams, conversion events) for context-aware advice.\n\nIf the user provides a specific event name or topic as an argument, focus on that area. Otherwise, provide an overview of the event model.\n\n---\n\n## Event Model Overview\n\nGA4 uses an event-based data model where **everything is an event**. Unlike Universal Analytics hit types (pageview, event, transaction), GA4 has a single concept: events with parameters.\n\n| Concept | Universal Analytics | GA4 |\n|---------|-------------------|-----|\n| Data model | Hit-based (pageview, event, transaction) | Event-based (everything is an event) |\n| Event structure | Category / Action / Label / Value | Event name + parameters (key-value pairs) |\n| Sessions | Server-defined, 30-min timeout | Derived from `session_start` event |\n| Pageviews | Dedicated hit type | `page_view` event with `page_location` parameter |\n| E-commerce | Enhanced Ecommerce plugin | Built-in recommended events with items array |\n| Custom data | Custom dimensions/metrics (index-based) | Event parameters + custom dimensions/metrics (name-based) |\n\nEvery GA4 event has:\n- **Event name**: String identifier (e.g., `page_view`, `purchase`)\n- **Event parameters**: Key-value pairs (e.g., `page_location`, `transaction_id`)\n- **User properties**: Persistent user attributes (e.g., `membership_tier`)\n\n## Automatically Collected Events\n\nCollected automatically with no configuration. Cannot be disabled.\n\n### Web\n\n| Event | Trigger | Key Parameters |\n|-------|---------|----------------|\n| `first_visit` | First time user visits (new cookie) | None |\n| `session_start` | New session begins (30-min timeout) | `ga_session_id`, `ga_session_number` |\n| `page_view` | Every page load (or `history.pushState` in SPAs) | `page_location`, `page_title`, `page_referrer` |\n| `user_engagement` | Page in focus for 1+ second with interaction | `engagement_time_msec` |\n\n### Mobile (Firebase SDK)\n\n| Event | Trigger | Key Parameters |\n|-------|---------|----------------|\n| `first_open` | First app open after install | `previous_gmp_app_id`, `updated_with_analytics` |\n| `session_start` | New session begins | `ga_session_id`, `ga_session_number` |\n| `screen_view` | Screen transition | `firebase_screen`, `firebase_screen_class`, `firebase_screen_id` |\n| `user_engagement` | App in foreground 1+ second | `engagement_time_msec` |\n| `app_update` | App updated and launched | `previous_app_version` |\n| `app_remove` | App removed (Android only) | None |\n| `os_update` | OS updated | `previous_os_version` |\n\n### Auto-attached Parameters (every event)\n\n`language`, `page_location`, `page_referrer`, `page_title`, `screen_resolution`, `ga_session_id`, `ga_session_number`, `engagement_time_msec`\n\n## Enhanced Measurement Events\n\nCollected automatically when enabled in **Admin > Data Streams > Enhanced Measurement**. Each can be toggled individually.\n\n| Event | Trigger | Key Parameters |\n|-------|---------|----------------|\n| `scroll` | User scrolls past 90% of page | `percent_scrolled` (always 90) |\n| `click` | Outbound link click | `link_url`, `link_domain`, `link_classes`, `link_id`, `outbound` |\n| `view_search_results` | URL contains search query parameter | `search_term` |\n| `video_start` | YouTube embed starts playing | `video_url`, `video_title`, `video_provider`, `video_current_time`, `visible` |\n| `video_progress` | YouTube video reaches 10/25/50/75% | Same as `video_start` plus `video_percent` |\n| `video_complete` | YouTube video reaches end | Same as `video_start` |\n| `file_download` | Click on file link (pdf, xls, doc, zip, etc.) | `file_name`, `file_extension`, `link_url`, `link_text`, `link_domain` |\n| `form_start` | First interaction with a form | `form_id`, `form_name`, `form_destination` |\n| `form_submit` | Form submitted | `form_id`, `form_name`, `form_destination`, `form_submit_text` |\n\n**Note:** Video tracking only works with YouTube embeds using `enablejsapi=1`.\n\n## Recommended Events — All Properties\n\n| Event | Parameters |\n|-------|-----------|\n| `login` | `method` (STRING) |\n| `sign_up` | `method` (STRING) |\n| `share` | `method` (STRING), `content_type` (STRING), `item_id` (STRING) |\n| `search` | `search_term` (STRING) |\n| `select_content` | `content_type` (STRING), `content_id` (STRING) |\n\n```javascript\ngtag('event', 'login', { method: 'Google' });\ngtag('event', 'sign_up', { method: 'Email' });\ngtag('event', 'search', { search_term: 'running shoes' });\n```\n\n## Recommended Events — E-commerce\n\nImplement in order for full funnel reporting.\n\n### view_item_list\n```javascript\ngtag('event', 'view_item_list', {\n  item_list_id: 'category_123',\n  item_list_name: 'Running Shoes',\n  items: [{\n    item_id: 'SKU_123', item_name: 'Trail Runner Pro', item_brand: 'RunCo',\n    item_category: 'Shoes', item_category2: 'Running', item_variant: 'Blue',\n    price: 129.99, currency: 'USD', index: 0,\n    item_list_id: 'category_123', item_list_name: 'Running Shoes'\n  }]\n});\n```\n\n### select_item\n```javascript\ngtag('event', 'select_item', {\n  item_list_id: 'category_123', item_list_name: 'Running Shoes',\n  items: [{ item_id: 'SKU_123', item_name: 'Trail Runner Pro', price: 129.99, currency: 'USD', index: 0 }]\n});\n```\n\n### view_item\n```javascript\ngtag('event', 'view_item', {\n  currency: 'USD', value: 129.99,\n  items: [{ item_id: 'SKU_123', item_name: 'Trail Runner Pro', item_brand: 'RunCo',\n    item_category: 'Shoes', item_variant: 'Blue', price: 129.99, currency: 'USD', quantity: 1 }]\n});\n```\n\n### add_to_cart\n```javascript\ngtag('event', 'add_to_cart', {\n  currency: 'USD', value: 129.99,\n  items: [{ item_id: 'SKU_123', item_name: 'Trail Runner Pro', price: 129.99, currency: 'USD', quantity: 1 }]\n});\n```\n\n### remove_from_cart\n```javascript\ngtag('event', 'remove_from_cart', {\n  currency: 'USD', value: 129.99,\n  items: [{ item_id: 'SKU_123', item_name: 'Trail Runner Pro', price: 129.99, currency: 'USD', quantity: 1 }]\n});\n```\n\n### view_cart\n```javascript\ngtag('event', 'view_cart', {\n  currency: 'USD', value: 259.98,\n  items: [\n    { item_id: 'SKU_123', item_name: 'Trail Runner Pro', price: 129.99, currency: 'USD', quantity: 1 },\n    { item_id: 'SKU_456', item_name: 'Road Runner Elite', price: 149.99, currency: 'USD', quantity: 1 }\n  ]\n});\n```\n\n### begin_checkout\n```javascript\ngtag('event', 'begin_checkout', {\n  currency: 'USD', value: 259.98, coupon: 'SUMMER20',\n  items: [\n    { item_id: 'SKU_123', item_name: 'Trail Runner Pro', price: 129.99, currency: 'USD', quantity: 1 },\n    { item_id: 'SKU_456', item_name: 'Road Runner Elite', price: 149.99, currency: 'USD', quantity: 1 }\n  ]\n});\n```\n\n### add_shipping_info\n```javascript\ngtag('event', 'add_shipping_info', {\n  currency: 'USD', value: 259.98, coupon: 'SUMMER20', shipping_tier: 'Express',\n  items: [{ item_id: 'SKU_123', item_name: 'Trail Runner Pro', price: 129.99, currency: 'USD', quantity: 1 }]\n});\n```\n\n### add_payment_info\n```javascript\ngtag('event', 'add_payment_info', {\n  currency: 'USD', value: 259.98, coupon: 'SUMMER20', payment_type: 'Credit Card',\n  items: [{ item_id: 'SKU_123', item_name: 'Trail Runner Pro', price: 129.99, currency: 'USD', quantity: 1 }]\n});\n```\n\n### purchase\n```javascript\ngtag('event', 'purchase', {\n  transaction_id: 'T12345',  // REQUIRED — unique transaction ID\n  value: 259.98,             // REQUIRED — total value\n  currency: 'USD',           // REQUIRED — ISO 4217\n  tax: 20.80,\n  shipping: 9.99,\n  coupon: 'SUMMER20',\n  items: [\n    { item_id: 'SKU_123', item_name: 'Trail Runner Pro', affiliation: 'Online Store',\n      coupon: 'ITEM10OFF', discount: 13.00, item_brand: 'RunCo', item_category: 'Shoes',\n      item_category2: 'Running', item_variant: 'Blue', price: 129.99, currency: 'USD', quantity: 1 },\n    { item_id: 'SKU_456', item_name: 'Road Runner Elite', affiliation: 'Online Store',\n      item_brand: 'RunCo', item_category: 'Shoes', price: 149.99, currency: 'USD', quantity: 1 }\n  ]\n});\n```\n\n**Critical:** `purchase` requires `transaction_id`, `value`, and `currency`. GA4 deduplicates by `transaction_id` within 72 hours.\n\n### refund\n```javascript\n// Full refund\ngtag('event', 'refund', { transaction_id: 'T12345', value: 259.98, currency: 'USD' });\n\n// Partial refund\ngtag('event', 'refund', {\n  transaction_id: 'T12345', value: 129.99, currency: 'USD',\n  items: [{ item_id: 'SKU_123', price: 129.99, currency: 'USD', quantity: 1 }]\n});\n```\n\n## Recommended Events — Lead Generation\n\n### generate_lead\n```javascript\ngtag('event', 'generate_lead', { currency: 'USD', value: 50.00 });\n```\n\n## Recommended Events — Gaming\n\n| Event | Parameters |\n|-------|-----------|\n| `earn_virtual_currency` | `virtual_currency_name` (STRING), `value` (NUMBER) |\n| `spend_virtual_currency` | `virtual_currency_name` (STRING), `value` (NUMBER), `item_name` (STRING) |\n| `level_up` | `level` (NUMBER), `character` (STRING) |\n| `post_score` | `score` (NUMBER, required), `level` (NUMBER), `character` (STRING) |\n| `tutorial_begin` | None |\n| `tutorial_complete` | None |\n| `unlock_achievement` | `achievement_id` (STRING, required) |\n\n```javascript\ngtag('event', 'earn_virtual_currency', { virtual_currency_name: 'Coins', value: 100 });\ngtag('event', 'spend_virtual_currency', { virtual_currency_name: 'Coins', value: 50, item_name: 'Power Boost' });\ngtag('event', 'level_up', { level: 5, character: 'Warrior' });\ngtag('event', 'post_score', { score: 15000, level: 5, character: 'Warrior' });\ngtag('event', 'tutorial_begin');\ngtag('event', 'tutorial_complete');\ngtag('event', 'unlock_achievement', { achievement_id: 'first_blood' });\n```\n\n## Item Parameter Reference\n\nThe `items` array supports these parameters per item:\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `item_id` | STRING | SKU/ID (recommended) |\n| `item_name` | STRING | Display name (recommended) |\n| `affiliation` | STRING | Store or affiliation |\n| `coupon` | STRING | Item-level coupon |\n| `discount` | NUMBER | Discount amount |\n| `index` | NUMBER | Position in list |\n| `item_brand` | STRING | Brand name |\n| `item_category` | STRING | Primary category |\n| `item_category2`-`5` | STRING | Category levels 2-5 |\n| `item_list_id` | STRING | List ID |\n| `item_list_name` | STRING | List name |\n| `item_variant` | STRING | Variant (color, size) |\n| `location_id` | STRING | Physical location |\n| `price` | NUMBER | Item price |\n| `currency` | STRING | ISO 4217 code |\n| `quantity` | NUMBER | Quantity |\n| `promotion_id` | STRING | Promotion ID |\n| `promotion_name` | STRING | Promotion name |\n| `creative_name` | STRING | Promotion creative |\n| `creative_slot` | STRING | Creative slot |\n\nAt least one of `item_id` or `item_name` is required. Max 200 items per event.\n\n## Custom Events\n\nUse when no automatically collected, enhanced measurement, or recommended event fits.\n\n### Naming Rules\n\n- Max **40 characters**\n- Must start with alphabetic character\n- Only `[a-zA-Z][a-zA-Z0-9_]*`\n- **Case sensitive** — `Add_To_Cart` and `add_to_cart` are different events\n- Cannot use reserved prefixes: `firebase_`, `google_`, `ga_`\n- Cannot use reserved event names (e.g., `first_visit`, `session_start`, `app_install`, `in_app_purchase`, etc.)\n\n### Limits\n\n| Limit | Value |\n|-------|-------|\n| Unique event names per property | 500 |\n| Parameters per event | 25 |\n| Parameter name length | 40 characters |\n| Parameter value (string) | 100 characters |\n| User property name length | 24 characters |\n| User property value (string) | 36 characters |\n| User properties per project | 25 |\n\n### Examples\n\n```javascript\ngtag('event', 'newsletter_signup', {\n  newsletter_type: 'weekly_digest', signup_location: 'footer'\n});\n\ngtag('event', 'feature_used', {\n  feature_name: 'export_csv', feature_category: 'data_tools', plan_tier: 'pro'\n});\n\ngtag('event', 'article_read', {\n  article_id: 'post_12345', article_category: 'technology', read_time_seconds: 245\n});\n```\n\n## Custom Dimensions and Metrics\n\nRegister event parameters or user properties for reporting in **Admin > Custom definitions**.\n\n### Scoping\n\n| Scope | Source | Use Case |\n|-------|--------|----------|\n| Event-scoped dimension | Event parameter | Page/action attributes |\n| User-scoped dimension | User property | Persistent user attributes |\n| Custom metric | Event parameter (numeric) | Numeric aggregation |\n\n### Quotas\n\n| Resource | Standard | Analytics 360 |\n|----------|----------|---------------|\n| Event-scoped custom dimensions | 50 | 125 |\n| User-scoped custom dimensions | 25 | 100 |\n| Custom metrics | 50 | 125 |\n\nProcessing time: 24-48 hours for standard reports (immediate in Realtime/DebugView).\n\n```javascript\n// Set user properties\ngtag('set', 'user_properties', {\n  membership_tier: 'gold', signup_date: '2025-01-15'\n});\n```\n\n## GTM dataLayer Implementation\n\n```javascript\n// Custom event\nwindow.dataLayer = window.dataLayer || [];\nwindow.dataLayer.push({\n  event: 'newsletter_signup',\n  newsletter_type: 'weekly_digest',\n  signup_location: 'footer'\n});\n\n// E-commerce — ALWAYS clear ecommerce first\nwindow.dataLayer.push({ ecommerce: null });\nwindow.dataLayer.push({\n  event: 'purchase',\n  ecommerce: {\n    transaction_id: 'T12345', value: 259.98, currency: 'USD',\n    tax: 20.80, shipping: 9.99, coupon: 'SUMMER20',\n    items: [{ item_id: 'SKU_123', item_name: 'Trail Runner Pro',\n      item_brand: 'RunCo', item_category: 'Shoes', price: 129.99, quantity: 1 }]\n  }\n});\n```\n\n## Measurement Protocol (Server-Side)\n\n```bash\nPOST https://www.google-analytics.com/mp/collect?measurement_id=G-XXXXXXXXXX&api_secret=YOUR_API_SECRET\n\n{\n  \"client_id\": \"abc123.def456\",\n  \"events\": [{\n    \"name\": \"offline_purchase\",\n    \"params\": {\n      \"transaction_id\": \"OFFLINE_T789\",\n      \"value\": 250.00,\n      \"currency\": \"USD\"\n    }\n  }]\n}\n```\n\n```python\nimport requests, json\n\nurl = 'https://www.google-analytics.com/mp/collect?measurement_id=G-XXXXXXXXXX&api_secret=YOUR_API_SECRET'\npayload = {\n    'client_id': 'abc123.def456',\n    'events': [{'name': 'offline_purchase', 'params': {\n        'transaction_id': 'OFFLINE_T789', 'value': 250.00, 'currency': 'USD'\n    }}]\n}\nresponse = requests.post(url, data=json.dumps(payload))\n```\n\n**Limitations:** No response validation (use debug endpoint), `client_id` must match existing GA4 cookie, events not in Realtime (30-min delay), cannot trigger `first_visit`/`session_start`.\n\n### Validation Server\n\n```bash\nPOST https://www.google-analytics.com/debug/mp/collect?measurement_id=G-XXXXXXXXXX&api_secret=YOUR_API_SECRET\n# Returns validation errors instead of silently accepting\n```\n\n## Validation and Debugging\n\n### DebugView\n\nEnable debug mode to see events in near real-time in **Admin > DebugView**:\n\n```javascript\ngtag('config', 'G-XXXXXXXXXX', { debug_mode: true });\n// Or per-event:\ngtag('event', 'purchase', { debug_mode: true, transaction_id: 'T12345', value: 99.99, currency: 'USD' });\n```\n\n### BigQuery Validation Queries\n\n**Event volume audit:**\n```sql\nSELECT event_name, COUNT(*) as event_count, COUNT(DISTINCT user_pseudo_id) as unique_users\nFROM `project.analytics_123456789.events_*`\nWHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', CURRENT_DATE() - 1)\nGROUP BY event_name ORDER BY event_count DESC\n```\n\n**Missing purchase parameters:**\n```sql\nSELECT 'missing_transaction_id' as issue, COUNT(*) as count\nFROM `project.analytics_123456789.events_*`\nWHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', CURRENT_DATE() - 1)\n  AND event_name = 'purchase'\n  AND (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'transaction_id') IS NULL\nUNION ALL\nSELECT 'missing_currency', COUNT(*)\nFROM `project.analytics_123456789.events_*`\nWHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', CURRENT_DATE() - 1)\n  AND event_name = 'purchase'\n  AND (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'currency') IS NULL\n```\n\n**Duplicate transactions:**\n```sql\nSELECT transaction_id, COUNT(*) as dupes\nFROM (\n  SELECT (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'transaction_id') as transaction_id\n  FROM `project.analytics_123456789.events_*`\n  WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY))\n                          AND FORMAT_DATE('%Y%m%d', CURRENT_DATE() - 1)\n    AND event_name = 'purchase'\n)\nWHERE transaction_id IS NOT NULL\nGROUP BY transaction_id HAVING COUNT(*) > 1\nORDER BY dupes DESC\n```\n\n**Naming convention audit:**\n```sql\nSELECT event_name, COUNT(*) as event_count,\n  CASE\n    WHEN LENGTH(event_name) > 40 THEN 'exceeds_40_chars'\n    WHEN REGEXP_CONTAINS(event_name, r'^(firebase_|google_|ga_)') THEN 'reserved_prefix'\n    WHEN NOT REGEXP_CONTAINS(event_name, r'^[a-zA-Z][a-zA-Z0-9_]*$') THEN 'invalid_characters'\n    WHEN event_name != LOWER(event_name) THEN 'mixed_case_warning'\n    ELSE 'valid'\n  END as naming_issue\nFROM `project.analytics_123456789.events_*`\nWHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', CURRENT_DATE() - 1)\nGROUP BY event_name HAVING naming_issue != 'valid'\n```\n\n**Parameter truncation check:**\n```sql\nSELECT event_name, ep.key, MAX(LENGTH(ep.value.string_value)) as max_len,\n  COUNTIF(LENGTH(ep.value.string_value) >= 100) as at_limit\nFROM `project.analytics_123456789.events_*`, UNNEST(event_params) as ep\nWHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', CURRENT_DATE() - 1)\n  AND ep.value.string_value IS NOT NULL\nGROUP BY 1, 2 HAVING max_len >= 100\n```\n\n## Common Pitfalls\n\n1. **Case sensitivity** — `Purchase` != `purchase`. Always use `snake_case`.\n2. **String truncation at 100 chars** — URLs and long values get silently cut.\n3. **Custom dimension quotas** — 50 event-scoped, 25 user-scoped (standard). Plan carefully.\n4. **Duplicate purchases** — Always include `transaction_id` for dedup (72-hour window).\n5. **Missing currency** — `value` without `currency` is ignored in monetization reports.\n6. **Stale dataLayer** — Always push `{ ecommerce: null }` before ecommerce events in GTM.\n7. **PII in parameters** — No emails, phone numbers, or names. Violates GA4 ToS.\n8. **Dynamic event names** — Burns through the 500-name limit. Use parameters instead.\n\n## Resources\n\n- **GA4 Event Reference:** https://developers.google.com/analytics/devguides/collection/ga4/reference/events\n- **Recommended Events:** https://support.google.com/analytics/answer/9267735\n- **Measurement Protocol:** https://developers.google.com/analytics/devguides/collection/protocol/ga4\n- **Enhanced Measurement:** https://support.google.com/analytics/answer/9216061\n- **Event Limits & Quotas:** https://support.google.com/analytics/answer/9267744\n- **Full Cogny Docs:** https://cogny.com/docs/ga4-event-implementation","tags":["ga4","events","claude","code","marketing","skills","cognyai","agent-skills","ai-agents","claude-code","claude-skills","cluade-mcp"],"capabilities":["skill","source-cognyai","skill-ga4-events","topic-agent-skills","topic-ai-agents","topic-claude-code","topic-claude-skills","topic-cluade-mcp","topic-cursor","topic-geo","topic-growth-hacking","topic-llm","topic-marketing","topic-mcp","topic-seo"],"categories":["claude-code-marketing-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cognyai/claude-code-marketing-skills/ga4-events","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cognyai/claude-code-marketing-skills","source_repo":"https://github.com/cognyai/claude-code-marketing-skills","install_from":"skills.sh"}},"qualityScore":"0.471","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 42 github stars · SKILL.md body (19,824 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-01T06:56:26.427Z","embedding":null,"createdAt":"2026-04-18T22:23:33.597Z","updatedAt":"2026-05-01T06:56:26.427Z","lastSeenAt":"2026-05-01T06:56:26.427Z","tsv":"'-01':1737 '-15':1738 '-48':1715 '-5':1421 '/analytics/answer/9216061':2409 '/analytics/answer/9267735':2399 '/analytics/answer/9267744':2415 '/analytics/devguides/collection/ga4/reference/events':2394 '/analytics/devguides/collection/protocol/ga4':2404 '/debug/mp/collect?measurement_id=g-xxxxxxxxxx&api_secret=your_api_secret':1895 '/docs/ga4-event-implementation':55,2421 '/ga4-events':57,62,70,79,86,95,102,108 '/mp/collect?measurement_id=g-xxxxxxxxxx&api_secret=your_api_secret':1814 '/mp/collect?measurement_id=g-xxxxxxxxxx&api_secret=your_api_secret''':1838 '0':797,840 '1':425,481,685,876,905,934,961,976,1005,1020,1054,1089,1152,1176,1229,1804,1981,2016,2053,2122,2139,2224,2273,2282,2290 '10/25/50/75':610 '100':1309,1582,1707,2252,2287,2303 '123':764,774,802,819,829,856,894,923,950,994,1043,1078,1122,1223,1789 '12345':1636 '125':1700,1711 '129.99':793,836,851,872,889,901,918,930,957,1001,1050,1085,1148,1216,1225,1802 '13.00':1134 '149.99':972,1016,1172 '15000':1338 '2':1420,2283,2299 '20.80':1113,1780 '200':1489 '2025':1736 '24':1588,1714 '245':1643 '25':1573,1600,1706,2320 '250.00':1828,1853 '259.98':945,987,1033,1067,1103,1204,1776 '3':2312 '30':287,395,1880 '36':1594 '360':1693 '4':32,2327 '40':1509,1577,2160,2163 '4217':1111,1452 '456':965,1009,1156 '5':1330,1340,1416,2339 '50':1320,1699,1710,2316 '50.00':1244 '500':1569,2382 '6':2350 '7':2112,2362 '72':1191,2336 '8':2375 '9':1525,2192 '9.99':1115,1782 '90':559,565 '99.99':1944 'a-za-z':1517,2184 'a-za-z0':1521,2188 'abc123.def456':1817,1842 'accept':1902 'achiev':1293,1294,1354,1355 'action':159,273 'actual':180 'add':877,883,1021,1027,1055,1061,1528,1532 'admin':541,1657,1919 'advic':193 'affili':1128,1162,1384,1388 'aggreg':1688 'alphabet':1514 'alway':564,1761,2295,2330,2353 'amount':1398 'analyt':31,237,253,452,1692 'android':499 'answer':160 'app':442,448,478,486,488,493,495,497,1555,1558 'area':210 'argument':206 'array':319,1364 'articl':1631,1633,1637 'ask':149 'attach':511 'attribut':361,1672,1681 'audit':132,1952,2146 'auto':510 'auto-attach':509 'automat':34,365,369,537,1498 'avail':172 'awar':192 'base':227,259,265,326,333 'bash':1810,1891 'begin':394,457,977,982,1287,1346 'bigqueri':100,1947 'blood':1358 'blue':791,870,1146 'boost':1324 'brand':781,863,1136,1166,1405,1407,1796 'built':313 'built-in':312 'burn':2379 'cannot':373,1538,1545,1883 'card':1073 'care':2326 'cart':879,885,908,914,936,941,1530,1534 'case':1526,1664,2155,2204,2291,2298 'categori':272,763,784,801,818,866,1139,1169,1410,1413,1418,1623,1638,1799 'category2':787,1142,1415 'char':2164,2304 'charact':1275,1284,1331,1341,1510,1515,1578,1583,1589,1595,2195 'check':101,2235 'checkout':978,983 'class':472,575 'clear':1762 'click':566,569,630 'client':1815,1840,1869 'code':46,69,144,166,1453 'cogni':2417 'cogny.com':54,2420 'cogny.com/docs/ga4-event-implementation':53,2419 'coin':1307,1318 'collect':35,366,368,536,1499 'color':1438 'commerc':75,308,743,1760 'common':2288 'complet':8,26,619,1290,1350 'concept':247,251 'config':1923 'configur':182,372 'contain':583,2167,2180 'content':702,713,714,717 'context':191 'context-awar':190 'convent':2145 'convers':187 'cooki':388,1875 'copi':141 'copy-paste-readi':140 'correct':137 'count':1957,1960,1961,1989,2001,2003,2040,2077,2138,2151,2154 'countif':2248 'coupon':988,1034,1068,1116,1131,1389,1394,1783 'creativ':1467,1471,1472,1475 'credit':1072 'critic':1177 'csv':1621 'currenc':794,837,848,873,886,902,915,931,942,958,973,984,1002,1017,1030,1051,1064,1086,1107,1149,1173,1184,1205,1217,1226,1241,1252,1254,1261,1263,1303,1305,1314,1316,1449,1777,1829,1854,1945,2039,2068,2341,2344 'current':602,1979,2014,2051,2109,2120,2222,2271 'custom':40,87,89,183,320,322,329,1493,1644,1658,1682,1697,1704,1708,1743,2313 'cut':2311 'd':1978,2013,2050,2106,2119,2221,2270 'data':185,228,255,321,542,1624,1859 'datalay':105,1740,2352 'date':1735,1975,1980,2010,2015,2047,2052,2103,2107,2110,2116,2121,2218,2223,2267,2272 'day':2113 'debug':1867,1905,1908,1927,1937 'debugview':97,1906,1920 'dedic':296 'dedup':2335 'dedupl':1186 'defin':286 'definit':1659 'delay':1882 'deriv':290 'desc':1990,2143 'descript':1372 'destin':661,671 'developers.google.com':2393,2403 'developers.google.com/analytics/devguides/collection/ga4/reference/events':2392 'developers.google.com/analytics/devguides/collection/protocol/ga4':2402 'differ':1536 'digest':1610,1754 'dimens':184,1645,1668,1676,1698,1705,2314 'dimensions/metrics':323,330 'disabl':375 'discount':1133,1395,1397 'display':1381 'distinct':1962 'doc':52,636,2418 'domain':573,648 'download':629 'dupe':2079,2142 'duplic':2071,2328 'dynam':2376 'e':74,307,742,1759 'e-commerc':73,306,741,1758 'e.g':342,352,362,1550 'earn':1250,1301 'ecommerc':71,310,1763,1766,1771,2355,2358 'elit':970,1014,1161 'els':2206 'email':731,2367 'emb':592,682 'enabl':539,1907 'enablejsapi':684 'end':623,2208 'endpoint':1868 'engag':420,429,477,483,530 'enhanc':36,80,82,309,533,544,1500,2405 'ep':2262 'ep.key':2240 'ep.value.string':2243,2250,2275 'error':1898 'etc':638,1560 'event':3,5,9,23,33,41,59,66,76,84,88,90,122,136,188,200,217,219,226,234,241,248,261,264,269,270,276,294,301,316,327,336,338,346,367,377,435,514,535,551,687,690,722,727,733,740,756,812,845,882,911,939,981,1026,1060,1093,1198,1210,1231,1238,1246,1248,1300,1311,1326,1334,1344,1348,1352,1492,1494,1504,1537,1548,1565,1572,1604,1615,1630,1649,1666,1669,1684,1695,1744,1748,1769,1818,1843,1876,1912,1933,1935,1950,1955,1959,1984,1988,2018,2027,2055,2064,2087,2124,2149,2153,2158,2168,2181,2197,2200,2227,2238,2259,2318,2359,2377,2390,2396,2410 'event-bas':225,263 'event-scop':1665,1694,2317 'everi':334,406,513 'everyth':231,266 'exact':43 'exampl':47,116,145,1601 'exceed':2162 'exist':1873 'expert':124 'export':1620 'express':1038 'extens':642 'featur':1616,1618,1622 'file':628,632,639,641 'find':152 'firebas':433,468,470,473,1542,2171 'first':381,383,439,441,651,1357,1551,1764,1885 'fit':1505 'focus':207,423 'footer':1613,1757 'foreground':480 'form':649,655,656,658,660,662,664,666,668,670,672 'format':1974,2009,2046,2102,2115,2217,2266 'full':51,72,748,1195,2416 'funnel':77,749 'g':1925 'g-xxxxxxxxxx':1924 'ga':398,401,458,461,524,527,1544,2173 'ga4':2,4,22,121,135,168,222,243,254,335,1185,1874,2373,2389 'ga4-events':1 'game':1247 'generat':1233,1234,1239 'get':2309 'gmp':447 'gold':1733 'googl':30,725,1543,2172 'group':1982,2133,2225,2280 'gtag':721,726,732,755,811,844,881,910,938,980,1025,1059,1092,1197,1209,1237,1299,1310,1325,1333,1343,1347,1351,1603,1614,1629,1727,1922,1934 'gtag.js':15 'gtm':16,103,104,1739,2361 'help':129 'history.pushstate':410 'hit':238,258,297 'hit-bas':257 'hour':1192,1716,2337 'id':356,400,449,460,475,526,577,657,667,706,718,762,772,800,817,827,854,892,921,948,963,992,1007,1041,1076,1096,1101,1120,1154,1181,1189,1201,1213,1221,1295,1356,1374,1424,1427,1441,1458,1461,1482,1634,1773,1787,1816,1824,1841,1849,1870,1941,1965,1998,2032,2076,2092,2095,2129,2136,2333 'identifi':341 'ignor':2346 'immedi':1720 'implement':6,13,24,29,106,123,131,744,1741 'import':1832 'includ':2331 'index':325,796,839,1399 'index-bas':324 'individu':550 'info':1023,1029,1057,1063 'inspect':176 'instal':445,1556 'instead':1899,2387 'instruct':117 'interact':428,652 'interv':2111 'invalid':2194 'iso':1110,1451 'issu':2000,2211,2231 'item':318,705,752,758,760,765,770,771,775,780,783,786,789,798,803,809,814,815,820,825,826,830,842,847,852,853,857,862,865,868,890,891,895,919,920,924,946,947,951,962,966,990,991,995,1006,1010,1039,1040,1044,1074,1075,1079,1118,1119,1123,1135,1138,1141,1144,1153,1157,1165,1168,1219,1220,1268,1321,1359,1363,1369,1373,1378,1392,1404,1409,1414,1422,1428,1434,1447,1481,1484,1490,1785,1786,1790,1795,1798 'item-level':1391 'item10off':1132 'javascript':720,754,810,843,880,909,937,979,1024,1058,1091,1194,1236,1298,1602,1723,1742,1921 'json':1834 'json.dumps':1860 'key':280,349,379,437,553,2030,2067,2090 'key-valu':279,348 'label':274 'languag':515 'launch':491 'lead':1232,1235,1240 'least':1478 'len':2247,2286 'length':1576,1587,2157,2242,2249 'level':1271,1273,1282,1327,1329,1339,1393,1419 'limit':94,1561,1562,1862,2255,2384,2411 'link':568,570,572,574,576,633,643,645,647 'list':12,45,85,753,759,761,766,799,804,816,821,1403,1423,1426,1429,1432 'load':408 'locat':304,354,414,517,1440,1444,1612,1756 'login':692,723 'long':2307 'lower':2199 'm':1977,2012,2049,2105,2118,2220,2269 'match':1872 'max':1488,1508,2241,2246,2285 'mcp':169 'measur':17,37,81,83,109,114,534,545,1501,1805,2400,2406 'membership':363,1731 'method':693,697,700,724,730 'metric':1647,1683,1709 'min':288,396,1881 'miss':1991,1996,2038,2340 'mix':2203 'mobil':432 'mode':1909,1928,1938 'model':60,218,220,229,256 'monet':2348 'msec':431,485,532 'must':1511,1871 'name':91,201,277,332,339,640,659,669,767,776,805,822,831,858,896,925,952,967,996,1011,1045,1080,1124,1158,1255,1264,1269,1306,1317,1322,1379,1382,1408,1430,1433,1463,1466,1468,1485,1506,1549,1566,1575,1586,1619,1791,1819,1844,1956,1985,2019,2056,2125,2144,2150,2159,2169,2182,2198,2201,2210,2228,2230,2239,2371,2378,2383 'name-bas':331 'near':1914 'new':387,392,455 'newslett':1605,1607,1749,1751 'none':389,501,1288,1291 'note':675 'null':1767,2034,2070,2132,2279,2356 'number':403,463,529,1258,1267,1274,1280,1283,1396,1400,1446,1455,2369 'numer':1686,1687 'offlin':1820,1825,1845,1850 'one':1479 'onlin':1129,1163 'open':440,443 'order':746,1986,2140 'os':502,504,507 'otherwis':211 'outbound':567,578 'overview':61,214,221 'page':299,303,343,353,404,407,413,415,417,421,516,518,520,561 'page/action':1671 'pageview':240,260,295 'pair':282,351 'param':1822,1847,2028,2065,2088,2260 'paramet':11,44,67,250,278,305,328,347,380,438,512,554,586,691,1249,1360,1367,1370,1570,1574,1579,1650,1670,1685,1993,2233,2365,2386 'partial':1207 'past':142,558 'pattern':14,107 'payload':1839,1861 'payment':1056,1062,1070 'pdf':634 'per':1368,1491,1567,1571,1598,1932 'per-ev':1931 'percent':562,617 'persist':359,1679 'phone':2368 'physic':1443 'pii':2363 'pitfal':2289 'plan':1626,2325 'play':594 'plugin':311 'plus':615 'posit':1401 'post':1277,1335,1635,1811,1892 'power':1323 'precis':139 'prefix':1541,2176 'previous':446,492,506 'price':792,835,871,900,929,956,971,1000,1015,1049,1084,1147,1171,1224,1445,1448,1801 'primari':1412 'pro':779,834,861,899,928,955,999,1048,1083,1127,1628,1794 'process':1712 'progress':606 'project':1599 'project.analytics_123456789.events':1970,2005,2042,2097,2213,2257 'promot':1457,1460,1462,1465,1470 'properti':181,358,689,1568,1585,1591,1597,1653,1678,1726,1730 'protocol':18,110,115,1806,2401 'provid':138,158,197,212,600 'pseudo':1964 'purchas':63,65,345,1090,1094,1178,1559,1770,1821,1846,1936,1992,2020,2057,2126,2293,2294,2329 'push':2354 'python':1831 'quantiti':875,904,933,960,975,1004,1019,1053,1088,1151,1175,1228,1454,1456,1803 'queri':585,1949 'question':151 'quota':1689,2315,2412 'r':2170,2183 'reach':609,622 'read':1632,1640 'readi':143,163 'ready-to-us':162 'real':1916 'real-tim':1915 'realtim':98,1879 'realtime/debugview':1722 'recommend':38,315,686,739,1230,1245,1377,1383,1503,2395 'refer':7,25,27,78,127,1361,2391 'referr':418,519 'refund':1193,1196,1199,1208,1211 'regexp':2166,2179 'regist':1648 'relev':154 'remov':496,498,906,912 'report':750,1655,1719,2349 'request':1833 'requests.post':1857 'requir':1098,1104,1109,1179,1281,1297,1487 'reserv':1540,1547,2175 'resolut':523 'resourc':1690,2388 'respons':1856,1864 'result':581 'return':1896 'road':968,1012,1159 'rule':92,1507 'run':737,768,788,806,823,1143 'runco':782,864,1137,1167,1797 'runner':778,833,860,898,927,954,969,998,1013,1047,1082,1126,1160,1793 'scope':1660,1661,1667,1675,1696,1703,2319,2323 'score':1278,1279,1336,1337 'screen':464,466,469,471,474,522 'scroll':555,557,563 'sdk':434 'search':580,584,587,708,709,734,735 'second':426,482,1642 'section':155 'see':1911 'select':712,808,813,1954,1995,2022,2037,2059,2074,2081,2082,2148,2237 'sensit':1527,2292 'server':112,285,1808,1890 'server-defin':284 'server-sid':111,1807 'session':283,292,390,393,399,402,453,456,459,462,525,528,1553,1887 'set':1724,1728 'share':699 'ship':1022,1028,1036,1114,1781 'shoe':738,769,785,807,824,867,1140,1170,1800 'show':58,64 'side':113,1809 'sign':695,728 'signup':1606,1611,1734,1750,1755 'silent':1901,2310 'singl':246 'size':1439 'skill' 'skill-ga4-events' 'sku':773,828,855,893,922,949,964,993,1008,1042,1077,1121,1155,1222,1788 'sku/id':1376 'slot':1473,1476 'snake':2297 'sourc':1662 'source-cognyai' 'spas':412 'specif':199 'spend':1259,1312 'sql':1953,1994,2073,2147,2236 'stale':2351 'standard':1691,1718,2324 'start':293,391,454,590,593,614,627,650,1512,1554,1888 'store':1130,1164,1386 'stream':186,543 'string':340,694,698,701,704,707,711,716,719,1256,1265,1270,1276,1285,1296,1375,1380,1385,1390,1406,1411,1417,1425,1431,1436,1442,1450,1459,1464,1469,1474,1581,1593,2300 'structur':271 'sub':2108 'submit':663,665,673 'suffix':1973,2008,2045,2100,2216,2265 'summer20':989,1035,1069,1117,1784 'support':1365 'support.google.com':2398,2408,2414 'support.google.com/analytics/answer/9216061':2407 'support.google.com/analytics/answer/9267735':2397 'support.google.com/analytics/answer/9267744':2413 't12345':1097,1202,1214,1774,1942 't789':1826,1851 'tabl':1972,2007,2044,2099,2215,2264 'tax':1112,1779 'taxonomi':10 'techniqu':21,50 'technolog':1639 'term':588,710,736 'text':646,674 'tier':364,1037,1627,1732 'time':384,430,484,531,603,1641,1713,1917 'timeout':289,397 'titl':416,521,598 'toggl':549 'tool':170,1625 'topic':203 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-code' 'topic-claude-skills' 'topic-cluade-mcp' 'topic-cursor' 'topic-geo' 'topic-growth-hacking' 'topic-llm' 'topic-marketing' 'topic-mcp' 'topic-seo' 'tos':2374 'total':1105 'track':677 'trail':777,832,859,897,926,953,997,1046,1081,1125,1792 'transact':242,262,355,1095,1100,1180,1188,1200,1212,1772,1823,1848,1940,1997,2031,2072,2075,2091,2094,2128,2135,2332 'transit':467 'trigger':378,436,552,1884 'true':1929,1939 'truncat':2234,2301 'tutori':1286,1289,1345,1349 'type':239,298,703,715,1071,1371,1608,1752 'union':2035 'uniqu':1099,1564,1967 'univers':236,252 'unlik':235 'unlock':1292,1353 'unnest':2026,2063,2086,2258 'updat':450,487,489,503,505 'url':571,582,596,644,1835,1858,2305 'usag':56 'usd':795,838,849,874,887,903,916,932,943,959,974,985,1003,1018,1031,1052,1065,1087,1108,1150,1174,1206,1218,1227,1242,1778,1830,1855,1946 'use':125,165,173,223,683,1495,1539,1546,1617,1663,1866,2296,2385 'user':130,148,178,196,357,360,385,419,476,556,1584,1590,1596,1652,1674,1677,1680,1702,1725,1729,1963,1968,2322 'user-scop':1673,1701,2321 'valid':20,49,96,134,1865,1889,1897,1903,1948,2207,2232 'valu':275,281,350,850,888,917,944,986,1032,1066,1102,1106,1182,1203,1215,1243,1257,1266,1308,1319,1563,1580,1592,1775,1827,1852,1943,2024,2061,2084,2244,2251,2276,2308,2342 'value.string':2023,2060,2083 'variant':790,869,1145,1435,1437 'version':494,508 'video':589,595,597,599,601,605,608,613,616,618,621,626,676 'view':300,344,405,465,579,751,757,841,846,935,940 'violat':2372 'virtual':1251,1253,1260,1262,1302,1304,1313,1315 'visibl':604 'visit':382,386,1552,1886 'volum':1951 'warn':2205 'warrior':1332,1342 'web':376 'week':1609,1753 'window':2338 'window.datalayer':1745,1746 'window.datalayer.push':1747,1765,1768 'within':1190 'without':2343 'work':679 'www.google-analytics.com':1813,1837,1894 'www.google-analytics.com/debug/mp/collect?measurement_id=g-xxxxxxxxxx&api_secret=your_api_secret':1893 'www.google-analytics.com/mp/collect?measurement_id=g-xxxxxxxxxx&api_secret=your_api_secret':1812 'www.google-analytics.com/mp/collect?measurement_id=g-xxxxxxxxxx&api_secret=your_api_secret''':1836 'xls':635 'xxxxxxxxxx':1926 'y':1976,2011,2048,2104,2117,2219,2268 'youtub':591,607,620,681 'z':1520,2187 'z0':1524,2191 'za':1519,1523,2186,2190 'zip':637","prices":[{"id":"c0a3fbba-1cc7-482a-a1d4-1e4637a30b88","listingId":"bed64ddd-d51f-4115-95ec-dbe69522d705","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cognyai","category":"claude-code-marketing-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:23:33.597Z"}],"sources":[{"listingId":"bed64ddd-d51f-4115-95ec-dbe69522d705","source":"github","sourceId":"cognyai/claude-code-marketing-skills/ga4-events","sourceUrl":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/ga4-events","isPrimary":false,"firstSeenAt":"2026-04-18T22:23:33.597Z","lastSeenAt":"2026-05-01T06:56:26.427Z"}],"details":{"listingId":"bed64ddd-d51f-4115-95ec-dbe69522d705","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cognyai","slug":"ga4-events","github":{"repo":"cognyai/claude-code-marketing-skills","stars":42,"topics":["agent-skills","ai-agents","claude-code","claude-skills","cluade-mcp","cursor","geo","growth-hacking","llm","marketing","mcp","seo","vibe","windsurf"],"license":null,"html_url":"https://github.com/cognyai/claude-code-marketing-skills","pushed_at":"2026-04-29T13:43:50Z","description":"Marketing skills for Claude Code — SEO audits and implementation, ad analysis, ad optimization. Free skills need no account. $9/mo for live Search Console, Bing & LinkedIn data.","skill_md_sha":"4b7642f7d8ad4d3a909a7bf258a8046d7800d455","skill_md_path":"skills/ga4-events/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/ga4-events"},"layout":"multi","source":"github","category":"claude-code-marketing-skills","frontmatter":{"name":"ga4-events","description":"GA4 Event Implementation Reference — complete event taxonomy, parameter lists, implementation patterns (gtag.js, GTM, Measurement Protocol), and validation techniques"},"skills_sh_url":"https://skills.sh/cognyai/claude-code-marketing-skills/ga4-events"},"updatedAt":"2026-05-01T06:56:26.427Z"}}