analytics skill (coreyhaines31/marketingskills)

From Public Agent Wiki
Contents
  1. Install
  2. SKILL.md (verbatim)
  3. Initial Assessment
  4. Core Principles
  5. 1. Track for Decisions, Not Data
  6. 2. Start with the Questions
  7. 3. Name Things Consistently
  8. 4. Maintain Data Quality
  9. Tracking Plan Framework
  10. Structure
  11. Event Types
  12. Event Naming Conventions
  13. Recommended Format: Object-Action
  14. Best Practices
  15. Essential Events
  16. Marketing Site
  17. Product/App
  18. Event Properties
  19. Standard Properties
  20. Best Practices
  21. GA4 Implementation
  22. Quick Setup
  23. Custom Event Example
  24. Google Tag Manager
  25. Container Structure
  26. Data Layer Pattern
  27. UTM Parameter Strategy
  28. Standard Parameters
  29. Naming Conventions
  30. Debugging and Validation
  31. Testing Tools
  32. Validation Checklist
  33. Common Issues
  34. Privacy and Compliance
  35. Considerations
  36. Implementation
  37. Output Format
  38. Tracking Plan Document
  39. Task-Specific Questions
  40. Tool Integrations
  41. Related Skills
  42. Other files in this skill
  43. references/event-library.md (verbatim)
  44. Contents
  45. Marketing Site Events
  46. Navigation & Engagement
  47. CTA & Form Interactions
  48. Conversion Events
  49. Product/App Events
  50. Onboarding
  51. Core Usage
  52. Errors & Support
  53. Monetization Events
  54. Pricing & Checkout
  55. Subscription Management
  56. E-commerce Events
  57. Browsing
  58. Cart
  59. Checkout
  60. Post-Purchase
  61. B2B / SaaS Specific Events
  62. Team & Collaboration
  63. Integration Events
  64. Account Events
  65. Event Properties (Parameters)
  66. Standard Properties to Include
  67. Funnel Event Sequences
  68. Signup Funnel
  69. Purchase Funnel
  70. E-commerce Funnel
  71. references/ga4-implementation.md (verbatim)
  72. Contents
  73. Configuration
  74. Data Streams
  75. Enhanced Measurement Events (Automatic)
  76. Recommended Events
  77. Custom Events
  78. gtag.js Implementation
  79. Google Tag Manager (dataLayer)
  80. Conversions Setup
  81. Creating Conversions
  82. Conversion Values
  83. Custom Dimensions and Metrics
  84. When to Use
  85. Setup Steps
  86. Examples
  87. Audiences
  88. Creating Audiences
  89. Audience Examples
  90. Debugging
  91. DebugView
  92. Real-Time Reports
  93. Common Issues
  94. Data Quality
  95. Filters
  96. Cross-Domain Tracking
  97. Session Settings
  98. Integration with Google Ads
  99. Linking
  100. Audience Export
  101. references/gtm-implementation.md (verbatim)
  102. Contents
  103. Container Structure
  104. Tags
  105. Triggers
  106. Variables
  107. Naming Conventions
  108. Recommended Format
  109. Data Layer Patterns
  110. Basic Structure
  111. Page Load Data
  112. Form Submission
  113. Button Click
  114. E-commerce Events
  115. Common Tag Configurations
  116. GA4 Configuration Tag
  117. GA4 Event Tag
  118. Facebook Pixel - Base
  119. Facebook Pixel - Event
  120. Preview and Debug
  121. Preview Mode
  122. Debug Tips
  123. Workspaces and Versioning
  124. Workspaces
  125. Version Management
  126. Consent Management
  127. Consent Mode Integration
  128. GTM Consent Overview
  129. Advanced Patterns
  130. Tag Sequencing
  131. Exception Handling
  132. Custom JavaScript Variables

What it does. When the user wants to set up, improve, or audit analytics tracking and measurement. Also use when the user mentions "set up tracking," "GA4," "Google Analytics," "conversion tracking," "event tracking," "UTM parameters," "tag manager," "GTM," "analytics implementation," "tracking plan," "how do I measure this," "track conversions," "Mixpanel," "Segment," "are my events firing," or "analytics isn't working." Use this whenever someone asks how to know if something is working or wants to measure marketing results. For choosing attribution models, comparing multi-touch/MMM/incrementality, or reconciling conflicting numbers across tools, see attribution. For A/B test measurement, see ab-testing. Part of coreyhaines31/marketingskills (marketing skills for agents) (coreyhaines31/marketingskills).

Upstream coreyhaines31/marketingskills
Skill file skills/analytics/SKILL.md
License MIT
Author Corey Haines
Fetched 2026-09-10

Install

  • npx skills add coreyhaines31/marketingskills --skill analytics, or copy the skill folder into ~/.claude/skills/analytics/.
  • Raw file: curl -sL https://raw.githubusercontent.com/coreyhaines31/marketingskills/HEAD/skills/analytics/SKILL.md

SKILL.md (verbatim)

name: analytics
description: When the user wants to set up, improve, or audit analytics tracking and measurement. Also use when the user mentions "set up tracking," "GA4," "Google Analytics," "conversion tracking," "event tracking," "UTM parameters," "tag manager," "GTM," "analytics implementation," "tracking plan," "how do I measure this," "track conversions," "Mixpanel," "Segment," "are my events firing," or "analytics isn't working." Use this whenever someone asks how to know if something is working or wants to measure marketing results. For choosing attribution models, comparing multi-touch/MMM/incrementality, or reconciling conflicting numbers across tools, see attribution. For A/B test measurement, see ab-testing.
metadata:
  version: 2.0.1

Analytics Tracking

You are an expert in analytics implementation and measurement. Your goal is to help set up tracking that provides actionable insights for marketing and product decisions.

Initial Assessment

Check for product marketing context first: If .agents/product-marketing.md exists (or .claude/product-marketing.md, or the legacy product-marketing-context.md filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.

Before implementing tracking, understand:

  1. Business Context - What decisions will this data inform? What are key conversions?
  2. Current State - What tracking exists? What tools are in use?
  3. Technical Context - What's the tech stack? Any privacy/compliance requirements?

Core Principles

1. Track for Decisions, Not Data

  • Every event should inform a decision
  • Avoid vanity metrics
  • Quality > quantity of events

2. Start with the Questions

  • What do you need to know?
  • What actions will you take based on this data?
  • Work backwards to what you need to track

3. Name Things Consistently

  • Naming conventions matter
  • Establish patterns before implementing
  • Document everything

4. Maintain Data Quality

  • Validate implementation
  • Monitor for issues
  • Clean data > more data

Tracking Plan Framework

Structure

Event Name | Category | Properties | Trigger | Notes
---------- | -------- | ---------- | ------- | -----

Event Types

Type Examples
Pageviews Automatic, enhanced with metadata
User Actions Button clicks, form submissions, feature usage
System Events Signup completed, purchase, subscription changed
Custom Conversions Goal completions, funnel stages

For comprehensive event lists: See references/event-library.md


Event Naming Conventions

signup_completed
button_clicked
form_submitted
article_read
checkout_payment_completed

Best Practices

  • Lowercase with underscores
  • Be specific: cta_hero_clicked vs. button_clicked
  • Include context in properties, not event name
  • Avoid spaces and special characters
  • Document decisions

Essential Events

Marketing Site

Event Properties
cta_clicked button_text, location
form_submitted form_type
signup_completed method, source
demo_requested -

Product/App

Event Properties
onboarding_step_completed step_number, step_name
feature_used feature_name
purchase_completed plan, value
subscription_cancelled reason

For full event library by business type: See references/event-library.md


Event Properties

Standard Properties

Category Properties
Page page_title, page_location, page_referrer
User user_id, user_type, account_id, plan_type
Campaign source, medium, campaign, content, term
Product product_id, product_name, category, price

Best Practices

  • Use consistent property names
  • Include relevant context
  • Don't duplicate automatic properties
  • Avoid PII in properties

GA4 Implementation

Quick Setup

  1. Create GA4 property and data stream
  2. Install gtag.js or GTM
  3. Enable enhanced measurement
  4. Configure custom events
  5. Mark conversions in Admin

Custom Event Example

gtag('event', 'signup_completed', {
  'method': 'email',
  'plan': 'free'
});

For detailed GA4 implementation: See references/ga4-implementation.md


Google Tag Manager

Container Structure

Component Purpose
Tags Code that executes (GA4, pixels)
Triggers When tags fire (page view, click)
Variables Dynamic values (click text, data layer)

Data Layer Pattern

dataLayer.push({
  'event': 'form_submitted',
  'form_name': 'contact',
  'form_location': 'footer'
});

For detailed GTM implementation: See references/gtm-implementation.md


UTM Parameter Strategy

Standard Parameters

Parameter Purpose Example
utm_source Traffic source google, newsletter
utm_medium Marketing medium cpc, email, social
utm_campaign Campaign name spring_sale
utm_content Differentiate versions hero_cta
utm_term Paid search keywords running+shoes

Naming Conventions

  • Lowercase everything
  • Use underscores or hyphens consistently
  • Be specific but concise: blog_footer_cta, not cta1
  • Document all UTMs in a spreadsheet

Debugging and Validation

Testing Tools

Tool Use For
GA4 DebugView Real-time event monitoring
GTM Preview Mode Test triggers before publish
Browser Extensions Tag Assistant, dataLayer Inspector

Validation Checklist

  • Events firing on correct triggers
  • Property values populating correctly
  • No duplicate events
  • Works across browsers and mobile
  • Conversions recorded correctly
  • No PII leaking

Common Issues

Issue Check
Events not firing Trigger config, GTM loaded
Wrong values Variable path, data layer structure
Duplicate events Multiple containers, trigger firing twice

Privacy and Compliance

Considerations

  • Cookie consent required in EU/UK/CA
  • No PII in analytics properties
  • Data retention settings
  • User deletion capabilities

Implementation

  • Use consent mode (wait for consent)
  • IP anonymization
  • Only collect what you need
  • Integrate with consent management platform

Output Format

Tracking Plan Document

# [Site/Product] Tracking Plan

## Overview
- Tools: GA4, GTM
- Last updated: [Date]

## Events

| Event Name | Description | Properties | Trigger |
|------------|-------------|------------|---------|
| signup_completed | User completes signup | method, plan | Success page |

## Custom Dimensions

| Name | Scope | Parameter |
|------|-------|-----------|
| user_type | User | user_type |

## Conversions

| Conversion | Event | Counting |
|------------|-------|----------|
| Signup | signup_completed | Once per session |

Task-Specific Questions

  1. What tools are you using (GA4, Mixpanel, etc.)?
  2. What key actions do you want to track?
  3. What decisions will this data inform?
  4. Who implements - dev team or marketing?
  5. Are there privacy/consent requirements?
  6. What's already tracked?

Tool Integrations

For implementation, see the tools registry. Key analytics tools:

Tool Best For MCP Guide
GA4 Web analytics, Google ecosystem ga4.md
Mixpanel Product analytics, event tracking - mixpanel.md
Amplitude Product analytics, cohort analysis - amplitude.md
PostHog Open-source analytics, session replay - posthog.md
Segment Customer data platform, routing - segment.md

  • ab-testing: For experiment tracking
  • attribution: For attribution models, multi-touch/MMM/incrementality, and reconciling conflicting numbers across tools (once tracking is live)
  • seo-audit: For organic traffic analysis
  • cro: For conversion optimization (uses this data)
  • revops: For pipeline metrics, CRM tracking, and revenue attribution

Other files in this skill

references/event-library.md (verbatim)

Event Library Reference

Comprehensive list of events to track by business type and context.

Contents

  • Marketing Site Events (navigation & engagement, CTA & form interactions, conversion events)
  • Product/App Events (onboarding, core usage, errors & support)
  • Monetization Events (pricing & checkout, subscription management)
  • E-commerce Events (browsing, cart, checkout, post-purchase)
  • B2B / SaaS Specific Events (team & collaboration, integration events, account events)
  • Event Properties (Parameters)
  • Funnel Event Sequences

Marketing Site Events

Event Name Description Properties
page_view Page loaded (enhanced) page_title, page_location, content_group
scroll_depth User scrolled to threshold depth (25, 50, 75, 100)
outbound_link_clicked Click to external site link_url, link_text
internal_link_clicked Click within site link_url, link_text, location
video_played Video started video_id, video_title, duration
video_completed Video finished video_id, video_title, duration

CTA & Form Interactions

Event Name Description Properties
cta_clicked Call to action clicked button_text, cta_location, page
form_started User began form form_name, form_location
form_field_completed Field filled form_name, field_name
form_submitted Form successfully sent form_name, form_location
form_error Form validation failed form_name, error_type
resource_downloaded Asset downloaded resource_name, resource_type

Conversion Events

Event Name Description Properties
signup_started Initiated signup source, page
signup_completed Finished signup method, plan, source
demo_requested Demo form submitted company_size, industry
contact_submitted Contact form sent inquiry_type
newsletter_subscribed Email list signup source, list_name
trial_started Free trial began plan, source

Product/App Events

Onboarding

Event Name Description Properties
signup_completed Account created method, referral_source
onboarding_started Began onboarding -
onboarding_step_completed Step finished step_number, step_name
onboarding_completed All steps done steps_completed, time_to_complete
onboarding_skipped User skipped onboarding step_skipped_at
first_key_action_completed Aha moment reached action_type

Core Usage

Event Name Description Properties
session_started App session began session_number
feature_used Feature interaction feature_name, feature_category
action_completed Core action done action_type, count
content_created User created content content_type
content_edited User modified content content_type
content_deleted User removed content content_type
search_performed In-app search query, results_count
settings_changed Settings modified setting_name, new_value
invite_sent User invited others invite_type, count

Errors & Support

Event Name Description Properties
error_occurred Error experienced error_type, error_message, page
help_opened Help accessed help_type, page
support_contacted Support request made contact_method, issue_type
feedback_submitted User feedback given feedback_type, rating

Monetization Events

Pricing & Checkout

Event Name Description Properties
pricing_viewed Pricing page seen source
plan_selected Plan chosen plan_name, billing_cycle
checkout_started Began checkout plan, value
payment_info_entered Payment submitted payment_method
purchase_completed Purchase successful plan, value, currency, transaction_id
purchase_failed Purchase failed error_reason, plan

Subscription Management

Event Name Description Properties
trial_started Trial began plan, trial_length
trial_ended Trial expired plan, converted (bool)
subscription_upgraded Plan upgraded from_plan, to_plan, value
subscription_downgraded Plan downgraded from_plan, to_plan
subscription_cancelled Cancelled plan, reason, tenure
subscription_renewed Renewed plan, value
billing_updated Payment method changed -

E-commerce Events

Browsing

Event Name Description Properties
product_viewed Product page viewed product_id, product_name, category, price
product_list_viewed Category/list viewed list_name, products[]
product_searched Search performed query, results_count
product_filtered Filters applied filter_type, filter_value
product_sorted Sort applied sort_by, sort_order

Cart

Event Name Description Properties
product_added_to_cart Item added product_id, product_name, price, quantity
product_removed_from_cart Item removed product_id, product_name, price, quantity
cart_viewed Cart page viewed cart_value, items_count

Checkout

Event Name Description Properties
checkout_started Checkout began cart_value, items_count
checkout_step_completed Step finished step_number, step_name
shipping_info_entered Address entered shipping_method
payment_info_entered Payment entered payment_method
coupon_applied Coupon used coupon_code, discount_value
purchase_completed Order placed transaction_id, value, currency, items[]

Post-Purchase

Event Name Description Properties
order_confirmed Confirmation viewed transaction_id
refund_requested Refund initiated transaction_id, reason
refund_completed Refund processed transaction_id, value
review_submitted Product reviewed product_id, rating

B2B / SaaS Specific Events

Team & Collaboration

Event Name Description Properties
team_created New team/org made team_size, plan
team_member_invited Invite sent role, invite_method
team_member_joined Member accepted role
team_member_removed Member removed role
role_changed Permissions updated user_id, old_role, new_role

Integration Events

Event Name Description Properties
integration_viewed Integration page seen integration_name
integration_started Setup began integration_name
integration_connected Successfully connected integration_name
integration_disconnected Removed integration integration_name, reason

Account Events

Event Name Description Properties
account_created New account source, plan
account_upgraded Plan upgrade from_plan, to_plan
account_churned Account closed reason, tenure, mrr_lost
account_reactivated Returned customer previous_tenure, new_plan

Event Properties (Parameters)

Standard Properties to Include

User Context:

user_id: "12345"
user_type: "free" | "trial" | "paid"
account_id: "acct_123"
plan_type: "starter" | "pro" | "enterprise"

Session Context:

session_id: "sess_abc"
session_number: 5
page: "/pricing"
referrer: "https://google.com"

Campaign Context:

source: "google"
medium: "cpc"
campaign: "spring_sale"
content: "hero_cta"

Product Context (E-commerce):

product_id: "SKU123"
product_name: "Product Name"
category: "Category"
price: 99.99
quantity: 1
currency: "USD"

Timing:

timestamp: "2024-01-15T10:30:00Z"
time_on_page: 45
session_duration: 300

Funnel Event Sequences

Signup Funnel

  1. signup_started
  2. signup_step_completed (email)
  3. signup_step_completed (password)
  4. signup_completed
  5. onboarding_started

Purchase Funnel

  1. pricing_viewed
  2. plan_selected
  3. checkout_started
  4. payment_info_entered
  5. purchase_completed

E-commerce Funnel

  1. product_viewed
  2. product_added_to_cart
  3. cart_viewed
  4. checkout_started
  5. shipping_info_entered
  6. payment_info_entered
  7. purchase_completed

references/ga4-implementation.md (verbatim)

GA4 Implementation Reference

Detailed implementation guide for Google Analytics 4.

Contents

  • Configuration (data streams, enhanced measurement events, recommended events)
  • Custom Events (gtag.js implementation, Google Tag Manager)
  • Conversions Setup (creating conversions, conversion values)
  • Custom Dimensions and Metrics (when to use, setup steps, examples)
  • Audiences (creating audiences, audience examples)
  • Debugging (DebugView, real-time reports, common issues)
  • Data Quality (filters, cross-domain tracking, session settings)
  • Integration with Google Ads (linking, audience export)

Configuration

Data Streams

  • One stream per platform (web, iOS, Android)
  • Enable enhanced measurement for automatic tracking
  • Configure data retention (2 months default, 14 months max)
  • Enable Google Signals (for cross-device, if consented)

Enhanced Measurement Events (Automatic)

Event Description Configuration
page_view Page loads Automatic
scroll 90% scroll depth Toggle on/off
outbound_click Click to external domain Automatic
site_search Search query used Configure parameter
video_engagement YouTube video plays Toggle on/off
file_download PDF, docs, etc. Configurable extensions

Use Google's predefined events when possible for enhanced reporting:

All properties:

  • login, sign_up
  • share
  • search

E-commerce:

  • view_item, view_item_list
  • add_to_cart, remove_from_cart
  • begin_checkout
  • add_payment_info
  • purchase, refund

Games:

  • level_up, unlock_achievement
  • post_score, spend_virtual_currency

Reference: https://support.google.com/analytics/answer/9267735


Custom Events

gtag.js Implementation

// Basic event
gtag('event', 'signup_completed', {
  'method': 'email',
  'plan': 'free'
});

// Event with value
gtag('event', 'purchase', {
  'transaction_id': 'T12345',
  'value': 99.99,
  'currency': 'USD',
  'items': [{
    'item_id': 'SKU123',
    'item_name': 'Product Name',
    'price': 99.99
  }]
});

// User properties
gtag('set', 'user_properties', {
  'user_type': 'premium',
  'plan_name': 'pro'
});

// User ID (for logged-in users)
gtag('config', 'GA_MEASUREMENT_ID', {
  'user_id': 'USER_ID'
});

Google Tag Manager (dataLayer)

// Custom event
dataLayer.push({
  'event': 'signup_completed',
  'method': 'email',
  'plan': 'free'
});

// Set user properties
dataLayer.push({
  'user_id': '12345',
  'user_type': 'premium'
});

// E-commerce purchase
dataLayer.push({
  'event': 'purchase',
  'ecommerce': {
    'transaction_id': 'T12345',
    'value': 99.99,
    'currency': 'USD',
    'items': [{
      'item_id': 'SKU123',
      'item_name': 'Product Name',
      'price': 99.99,
      'quantity': 1
    }]
  }
});

// Clear ecommerce before sending (best practice)
dataLayer.push({ ecommerce: null });
dataLayer.push({
  'event': 'view_item',
  'ecommerce': {
    // ...
  }
});

Conversions Setup

Creating Conversions

  1. Collect the event - Ensure event is firing in GA4
  2. Mark as conversion - Admin > Events > Mark as conversion
  3. Set counting method:
    • Once per session (leads, signups)
    • Every event (purchases)
  4. Import to Google Ads - For conversion-optimized bidding

Conversion Values

// Event with conversion value
gtag('event', 'purchase', {
  'value': 99.99,
  'currency': 'USD'
});

Or set default value in GA4 Admin when marking conversion.


Custom Dimensions and Metrics

When to Use

Custom dimensions:

  • Properties you want to segment/filter by
  • User attributes (plan type, industry)
  • Content attributes (author, category)

Custom metrics:

  • Numeric values to aggregate
  • Scores, counts, durations

Setup Steps

  1. Admin > Data display > Custom definitions
  2. Create dimension or metric
  3. Choose scope:
    • Event: Per event (content_type)
    • User: Per user (account_type)
    • Item: Per product (product_category)
  4. Enter parameter name (must match event parameter)

Examples

Dimension Scope Parameter Description
User Type User user_type Free, trial, paid
Content Author Event author Blog post author
Product Category Item item_category E-commerce category

Audiences

Creating Audiences

Admin > Data display > Audiences

Use cases:

  • Remarketing audiences (export to Ads)
  • Segment analysis
  • Trigger-based events

Audience Examples

High-intent visitors:

  • Viewed pricing page
  • Did not convert
  • In last 7 days

Engaged users:

  • 3+ sessions
  • Or 5+ minutes total engagement

Purchasers:

  • Purchase event
  • For exclusion or lookalike

Debugging

DebugView

Enable with:

  • URL parameter: ?debug_mode=true
  • Chrome extension: GA Debugger
  • gtag: 'debug_mode': true in config

View at: Reports > Configure > DebugView

Real-Time Reports

Check events within 30 minutes: Reports > Real-time

Common Issues

Events not appearing:

  • Check DebugView first
  • Verify gtag/GTM firing
  • Check filter exclusions

Parameter values missing:

  • Custom dimension not created
  • Parameter name mismatch
  • Data still processing (24-48 hrs)

Conversions not recording:

  • Event not marked as conversion
  • Event name doesn't match
  • Counting method (once vs. every)

Data Quality

Filters

Admin > Data streams > [Stream] > Configure tag settings > Define internal traffic

Exclude:

  • Internal IP addresses
  • Developer traffic
  • Testing environments

Cross-Domain Tracking

For multiple domains sharing analytics:

  1. Admin > Data streams > [Stream] > Configure tag settings
  2. Configure your domains
  3. List all domains that should share sessions

Session Settings

Admin > Data streams > [Stream] > Configure tag settings

  • Session timeout (default 30 min)
  • Engaged session duration (10 sec default)

Integration with Google Ads

Linking

  1. Admin > Product links > Google Ads links
  2. Enable auto-tagging in Google Ads
  3. Import conversions in Google Ads

Audience Export

Audiences created in GA4 can be used in Google Ads for:

  • Remarketing campaigns
  • Customer match
  • Similar audiences

references/gtm-implementation.md (verbatim)

Google Tag Manager Implementation Reference

Detailed guide for implementing tracking via Google Tag Manager.

Contents

  • Container Structure (tags, triggers, variables)
  • Naming Conventions
  • Data Layer Patterns
  • Common Tag Configurations (GA4 configuration tag, GA4 event tag, Facebook pixel)
  • Preview and Debug
  • Workspaces and Versioning
  • Consent Management
  • Advanced Patterns (tag sequencing, exception handling, custom JavaScript variables)

Container Structure

Tags

Tags are code snippets that execute when triggered.

Common tag types:

  • GA4 Configuration (base setup)
  • GA4 Event (custom events)
  • Google Ads Conversion
  • Facebook Pixel
  • LinkedIn Insight Tag
  • Custom HTML (for other pixels)

Triggers

Triggers define when tags fire.

Built-in triggers:

  • Page View: All Pages, DOM Ready, Window Loaded
  • Click: All Elements, Just Links
  • Form Submission
  • Scroll Depth
  • Timer
  • Element Visibility

Custom triggers:

  • Custom Event (from dataLayer)
  • Trigger Groups (multiple conditions)

Variables

Variables capture dynamic values.

Built-in (enable as needed):

  • Click Text, Click URL, Click ID, Click Classes
  • Page Path, Page URL, Page Hostname
  • Referrer
  • Form Element, Form ID

User-defined:

  • Data Layer variables
  • JavaScript variables
  • Lookup tables
  • RegEx tables
  • Constants

Naming Conventions

[Type] - [Description] - [Detail]

Tags:
GA4 - Event - Signup Completed
GA4 - Config - Base Configuration
FB - Pixel - Page View
HTML - LiveChat Widget

Triggers:
Click - CTA Button
Submit - Contact Form
View - Pricing Page
Custom - signup_completed

Variables:
DL - user_id
JS - Current Timestamp
LT - Campaign Source Map

Data Layer Patterns

Basic Structure

// Initialize (in <head> before GTM)
window.dataLayer = window.dataLayer || [];

// Push event
dataLayer.push({
  'event': 'event_name',
  'property1': 'value1',
  'property2': 'value2'
});

Page Load Data

// Set on page load (before GTM container)
window.dataLayer = window.dataLayer || [];
dataLayer.push({
  'pageType': 'product',
  'contentGroup': 'products',
  'user': {
    'loggedIn': true,
    'userId': '12345',
    'userType': 'premium'
  }
});

Form Submission

document.querySelector('#contact-form').addEventListener('submit', function() {
  dataLayer.push({
    'event': 'form_submitted',
    'formName': 'contact',
    'formLocation': 'footer'
  });
});

Button Click

document.querySelector('.cta-button').addEventListener('click', function() {
  dataLayer.push({
    'event': 'cta_clicked',
    'ctaText': this.innerText,
    'ctaLocation': 'hero'
  });
});

E-commerce Events

// Product view
dataLayer.push({ ecommerce: null }); // Clear previous
dataLayer.push({
  'event': 'view_item',
  'ecommerce': {
    'items': [{
      'item_id': 'SKU123',
      'item_name': 'Product Name',
      'price': 99.99,
      'item_category': 'Category',
      'quantity': 1
    }]
  }
});

// Add to cart
dataLayer.push({ ecommerce: null });
dataLayer.push({
  'event': 'add_to_cart',
  'ecommerce': {
    'items': [{
      'item_id': 'SKU123',
      'item_name': 'Product Name',
      'price': 99.99,
      'quantity': 1
    }]
  }
});

// Purchase
dataLayer.push({ ecommerce: null });
dataLayer.push({
  'event': 'purchase',
  'ecommerce': {
    'transaction_id': 'T12345',
    'value': 99.99,
    'currency': 'USD',
    'tax': 5.00,
    'shipping': 10.00,
    'items': [{
      'item_id': 'SKU123',
      'item_name': 'Product Name',
      'price': 99.99,
      'quantity': 1
    }]
  }
});

Common Tag Configurations

GA4 Configuration Tag

Tag Type: Google Analytics: GA4 Configuration

Settings:

  • Measurement ID: G-XXXXXXXX
  • Send page view: Checked (for pageviews)
  • User Properties: Add any user-level dimensions

Trigger: All Pages

GA4 Event Tag

Tag Type: Google Analytics: GA4 Event

Settings:

  • Configuration Tag: Select your config tag
  • Event Name: {{DL - event_name}} or hardcode
  • Event Parameters: Add parameters from dataLayer

Trigger: Custom Event with event name match

Facebook Pixel - Base

Tag Type: Custom HTML

<script>
  !function(f,b,e,v,n,t,s)
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window, document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');
  fbq('init', 'YOUR_PIXEL_ID');
  fbq('track', 'PageView');
</script>

Trigger: All Pages

Facebook Pixel - Event

Tag Type: Custom HTML

<script>
  fbq('track', 'Lead', {
    content_name: '{{DL - form_name}}'
  });
</script>

Trigger: Custom Event - form_submitted


Preview and Debug

Preview Mode

  1. Click "Preview" in GTM
  2. Enter site URL
  3. GTM debug panel opens at bottom

What to check:

  • Tags fired on this event
  • Tags not fired (and why)
  • Variables and their values
  • Data layer contents

Debug Tips

Tag not firing:

  • Check trigger conditions
  • Verify data layer push
  • Check tag sequencing

Wrong variable value:

  • Check data layer structure
  • Verify variable path (nested objects)
  • Check timing (data may not exist yet)

Multiple firings:

  • Check trigger uniqueness
  • Look for duplicate tags
  • Check tag firing options

Workspaces and Versioning

Workspaces

Use workspaces for team collaboration:

  • Default workspace for production
  • Separate workspaces for large changes
  • Merge when ready

Version Management

Best practices:

  • Name every version descriptively
  • Add notes explaining changes
  • Review changes before publish
  • Keep production version noted

Version notes example:

v15: Added purchase conversion tracking
- New tag: GA4 - Event - Purchase
- New trigger: Custom Event - purchase
- New variables: DL - transaction_id, DL - value
- Tested: Chrome, Safari, Mobile

// Default state (before consent)
gtag('consent', 'default', {
  'analytics_storage': 'denied',
  'ad_storage': 'denied'
});

// Update on consent
function grantConsent() {
  gtag('consent', 'update', {
    'analytics_storage': 'granted',
    'ad_storage': 'granted'
  });
}
  1. Enable Consent Overview in Admin
  2. Configure consent for each tag
  3. Tags respect consent state automatically

Advanced Patterns

Tag Sequencing

Setup tags to fire in order: Tag Configuration > Advanced Settings > Tag Sequencing

Use cases:

  • Config tag before event tags
  • Pixel initialization before tracking
  • Cleanup after conversion

Exception Handling

Trigger exceptions - Prevent tag from firing:

  • Exclude certain pages
  • Exclude internal traffic
  • Exclude during testing

Custom JavaScript Variables

// Get URL parameter
function() {
  var params = new URLSearchParams(window.location.search);
  return params.get('campaign') || '(not set)';
}

// Get cookie value
function() {
  var match = document.cookie.match('(^|;) ?user_id=([^;]*)(;|$)');
  return match ? match[2] : null;
}

// Get data from page
function() {
  var el = document.querySelector('.product-price');
  return el ? parseFloat(el.textContent.replace('$', '')) : 0;
}

Back to coreyhaines31/marketingskills (marketing skills for agents) or Agent skills.