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," or "tracking plan." For A/B test measurement, see ab-test-setup.
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.
Before implementing tracking, understand:
Business Context
Current State
Technical Context
Event Name | Event Category | Properties | Trigger | Notes
---------- | ------------- | ---------- | ------- | -----
Pageviews
User Actions
System Events
Custom Conversions
Object-Action (Recommended)
signup_completed
button_clicked
form_submitted
article_read
Action-Object
click_button
submit_form
complete_signup
Category_Object_Action
checkout_payment_completed
blog_article_viewed
onboarding_step_completed
cta_hero_clicked vs. button_clickedNavigation
Engagement
Conversion
Onboarding
Core Usage
Monetization
Browsing
Cart
Checkout
Page/Screen
User
Campaign
Product (e-commerce)
Timing
Data Streams
Enhanced Measurement Events
Recommended Events
// gtag.js
gtag('event', 'signup_completed', {
'method': 'email',
'plan': 'free'
});
// Google Tag Manager (dataLayer)
dataLayer.push({
'event': 'signup_completed',
'method': 'email',
'plan': 'free'
});
When to use:
Setup:
Tags
Triggers
Variables
// Push custom event
dataLayer.push({
'event': 'form_submitted',
'form_name': 'contact',
'form_location': 'footer'
});
// Set user properties
dataLayer.push({
'user_id': '12345',
'user_type': 'premium'
});
// E-commerce event
dataLayer.push({
'event': 'purchase',
'ecommerce': {
'transaction_id': 'T12345',
'value': 99.99,
'currency': 'USD',
'items': [{
'item_id': 'SKU123',
'item_name': 'Product Name',
'price': 99.99
}]
}
});
| Parameter | Purpose | Example | |-----------|---------|---------| | utm_source | Where traffic comes from | google, facebook, newsletter | | utm_medium | Marketing medium | cpc, email, social, referral | | utm_campaign | Campaign name | spring_sale, product_launch | | utm_content | Differentiate versions | hero_cta, sidebar_link | | utm_term | Paid search keywords | running+shoes |
Lowercase everything
Use underscores or hyphens consistently
Be specific but concise
Track all UTMs in a spreadsheet or tool:
| Campaign | Source | Medium | Content | Full URL | Owner | Date | |----------|--------|--------|---------|----------|-------|------| | ... | ... | ... | ... | ... | ... | ... |
Provide a consistent UTM builder link to team:
GA4 DebugView
GTM Preview Mode
Browser Extensions
Events not firing
Wrong values
Duplicate events
Consent Mode (GA4)
Data Minimization
# [Site/Product] Tracking Plan
## Overview
- Tools: GA4, GTM
- Last updated: [Date]
- Owner: [Name]
## Events
### Marketing Events
| Event Name | Description | Properties | Trigger |
|------------|-------------|------------|---------|
| signup_started | User initiates signup | source, page | Click signup CTA |
| signup_completed | User completes signup | method, plan | Signup success page |
### Product Events
[Similar table]
## Custom Dimensions
| Name | Scope | Parameter | Description |
|------|-------|-----------|-------------|
| user_type | User | user_type | Free, trial, paid |
## Conversions
| Conversion | Event | Counting | Google Ads |
|------------|-------|----------|------------|
| Signup | signup_completed | Once per session | Yes |
## UTM Convention
[Guidelines]
Provide ready-to-use code snippets
Specific validation steps
If you need more context:
Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/analytics-tracking · pinned to the source commit
# Run from your project root
git clone https://github.com/davila7/claude-code-templates.git .skillboard-tmp
git -C .skillboard-tmp checkout 5cc17cf267132cc690dee82239b80a99ec82e4f8
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/cli-tool/components/skills/business-marketing/analytics-tracking" ".claude/skills/"
rm -rf .skillboard-tmpReview the source before running. This copies files into your project; it is not a one-click install and does not verify runtime safety.
sudo apt update && sudo apt install -y gitnpm install -g @anthropic-ai/claude-code# Run from your project root
git clone https://github.com/davila7/claude-code-templates.git .skillboard-tmp
git -C .skillboard-tmp checkout 5cc17cf267132cc690dee82239b80a99ec82e4f8
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/cli-tool/components/skills/business-marketing/analytics-tracking" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/analytics-tracking
Scanner static-checks@0.1.0 · commit 5cc17cf26713. Static checks cannot prove runtime safety – review the source and the exact diff before installing. How checks work.
No static rules matched. This is not a safety guarantee.