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
Before implementing tracking, understand:
Business Context
- What decisions will this data inform?
- What are the key conversion actions?
- What questions need answering?
Current State
- What tracking exists?
- What tools are in use (GA4, Mixpanel, Amplitude, etc.)?
- What's working/not working?
Technical Context
- What's the tech stack?
- Who will implement and maintain?
- 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 | Event Category | Properties | Trigger | Notes
---------- | ------------- | ---------- | ------- | -----
Event Types
Pageviews
- Automatic in most tools
- Enhanced with page metadata
User Actions
- Button clicks
- Form submissions
- Feature usage
- Content interactions
System Events
- Signup completed
- Purchase completed
- Subscription changed
- Errors occurred
Custom Conversions
- Goal completions
- Funnel stages
- Business-specific milestones
Event Naming Conventions
Format Options
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
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 to Track
Marketing Site
Navigation
- page_view (enhanced)
- outbound_link_clicked
- scroll_depth (25%, 50%, 75%, 100%)
Engagement
- cta_clicked (button_text, location)
- video_played (video_id, duration)
- form_started
- form_submitted (form_type)
- resource_downloaded (resource_name)
Conversion
- signup_started
- signup_completed
- demo_requested
- contact_submitted
Product/App
Onboarding
- signup_completed
- onboarding_step_completed (step_number, step_name)
- onboarding_completed
- first_key_action_completed
Core Usage
- feature_used (feature_name)
- action_completed (action_type)
- session_started
- session_ended
Monetization
- trial_started
- pricing_viewed
- checkout_started
- purchase_completed (plan, value)
- subscription_cancelled
E-commerce
Browsing
- product_viewed (product_id, category, price)
- product_list_viewed (list_name, products)
- product_searched (query, results_count)
Cart
- product_added_to_cart
- product_removed_from_cart
- cart_viewed
Checkout
- checkout_started
- checkout_step_completed (step)
- payment_info_entered
- purchase_completed (order_id, value, products)
Event Properties (Parameters)
Standard Properties to Consider
Page/Screen
- page_title
- page_location (URL)
- page_referrer
- content_group
User
- user_id (if logged in)
- user_type (free, paid, admin)
- account_id (B2B)
- plan_type
Campaign
- source
- medium
- campaign
- content
- term
Product (e-commerce)
- product_id
- product_name
- category
- price
- quantity
- currency
Timing
- timestamp
- session_duration
- time_on_page
Best Practices
- Use consistent property names
- Include relevant context
- Don't duplicate GA4 automatic properties
- Avoid PII in properties
- Document expected values
GA4 Implementation
Configuration
Data Streams
- One stream per platform (web, iOS, Android)
- Enable enhanced measurement
Enhanced Measurement Events
- page_view (automatic)
- scroll (90% depth)
- outbound_click
- site_search
- video_engagement
- file_download
Recommended Events
Custom Events (GA4)
// gtag.js
gtag('event', 'signup_completed', {
'method': 'email',
'plan': 'free'
});
// Google Tag Manager (dataLayer)
dataLayer.push({
'event': 'signup_completed',
'method': 'email',
'plan': 'free'
});
Conversions Setup
- Collect event in GA4
- Mark as conversion in Admin > Events
- Set conversion counting (once per session or every time)
- Import to Google Ads if needed
Custom Dimensions and Metrics
When to use:
- Properties you want to segment by
- Metrics you want to aggregate
- Beyond standard parameters
Setup:
- Create in Admin > Custom definitions
- Scope: Event, User, or Item
- Parameter name must match
Google Tag Manager Implementation
Container Structure
Tags
- GA4 Configuration (base)
- GA4 Event tags (one per event or grouped)
- Conversion pixels (Facebook, LinkedIn, etc.)
Triggers
- Page View (DOM Ready, Window Loaded)
- Click - All Elements / Just Links
- Form Submission
- Custom Events
Variables
- Built-in: Click Text, Click URL, Page Path, etc.
- Data Layer variables
- JavaScript variables
- Lookup tables
Best Practices
- Use folders to organize
- Consistent naming (Tag_Type_Description)
- Version notes on every publish
- Preview mode for testing
- Workspaces for team collaboration
Data Layer Pattern
// 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
}]
}
});
UTM Parameter Strategy
Standard Parameters
| 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 |
Naming Conventions
Lowercase everything
- google, not Google
- email, not Email
Use underscores or hyphens consistently
- product_launch or product-launch
- Pick one, stick with it
Be specific but concise
- blog_footer_cta, not cta1
- 2024_q1_promo, not promo
UTM Documentation
Track all UTMs in a spreadsheet or tool:
| Campaign |
Source |
Medium |
Content |
Full URL |
Owner |
Date |
| ... |
... |
... |
... |
... |
... |
... |
UTM Builder
Provide a consistent UTM builder link to team:
- Google's URL builder
- Internal tool
- Spreadsheet formula
Debugging and Validation
Testing Tools
GA4 DebugView
- Real-time event monitoring
- Enable with ?debug_mode=true
- Or via Chrome extension
GTM Preview Mode
- Test triggers and tags
- See data layer state
- Validate before publish
Browser Extensions
- GA Debugger
- Tag Assistant
- dataLayer Inspector
Validation Checklist
Common Issues
Events not firing
- Trigger misconfigured
- Tag paused
- GTM not loaded on page
Wrong values
- Variable not configured
- Data layer not pushing correctly
- Timing issues (fire before data ready)
Duplicate events
- Multiple GTM containers
- Multiple tag instances
- Trigger firing multiple times
Privacy and Compliance
Considerations
- Cookie consent required in EU/UK/CA
- No PII in analytics properties
- Data retention settings
- User deletion capabilities
- Cross-device tracking consent
Implementation
Consent Mode (GA4)
- Wait for consent before tracking
- Use consent mode for partial tracking
- Integrate with consent management platform
Data Minimization
- Only collect what you need
- IP anonymization
- No PII in custom dimensions
Output Format
Tracking Plan Document
# [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]
Implementation Code
Provide ready-to-use code snippets
Testing Checklist
Specific validation steps
Questions to Ask
If you need more context:
- What tools are you using (GA4, Mixpanel, etc.)?
- What key actions do you want to track?
- What decisions will this data inform?
- Who implements - dev team or marketing?
- Are there privacy/consent requirements?
- What's already tracked?
Related Skills
- ab-test-setup: For experiment tracking
- seo-audit: For organic traffic analysis
- page-cro: For conversion optimization (uses this data)
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: analytics-tracking-43description: 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. Use when this capability is needed.4---56# Analytics Tracking78You 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.910## Initial Assessment1112Before implementing tracking, understand:13141. **Business Context**15 - What decisions will this data inform?16 - What are the key conversion actions?17 - What questions need answering?18192. **Current State**20 - What tracking exists?21 - What tools are in use (GA4, Mixpanel, Amplitude, etc.)?22 - What's working/not working?23243. **Technical Context**25 - What's the tech stack?26 - Who will implement and maintain?27 - Any privacy/compliance requirements?2829---3031## Core Principles3233### 1. Track for Decisions, Not Data34- Every event should inform a decision35- Avoid vanity metrics36- Quality > quantity of events3738### 2. Start with the Questions39- What do you need to know?40- What actions will you take based on this data?41- Work backwards to what you need to track4243### 3. Name Things Consistently44- Naming conventions matter45- Establish patterns before implementing46- Document everything4748### 4. Maintain Data Quality49- Validate implementation50- Monitor for issues51- Clean data > more data5253---5455## Tracking Plan Framework5657### Structure5859```60Event Name | Event Category | Properties | Trigger | Notes61---------- | ------------- | ---------- | ------- | -----62```6364### Event Types6566**Pageviews**67- Automatic in most tools68- Enhanced with page metadata6970**User Actions**71- Button clicks72- Form submissions73- Feature usage74- Content interactions7576**System Events**77- Signup completed78- Purchase completed79- Subscription changed80- Errors occurred8182**Custom Conversions**83- Goal completions84- Funnel stages85- Business-specific milestones8687---8889## Event Naming Conventions9091### Format Options9293**Object-Action (Recommended)**94```95signup_completed96button_clicked97form_submitted98article_read99```100101**Action-Object**102```103click_button104submit_form105complete_signup106```107108**Category_Object_Action**109```110checkout_payment_completed111blog_article_viewed112onboarding_step_completed113```114115### Best Practices116117- Lowercase with underscores118- Be specific: `cta_hero_clicked` vs. `button_clicked`119- Include context in properties, not event name120- Avoid spaces and special characters121- Document decisions122123---124125## Essential Events to Track126127### Marketing Site128129**Navigation**130- page_view (enhanced)131- outbound_link_clicked132- scroll_depth (25%, 50%, 75%, 100%)133134**Engagement**135- cta_clicked (button_text, location)136- video_played (video_id, duration)137- form_started138- form_submitted (form_type)139- resource_downloaded (resource_name)140141**Conversion**142- signup_started143- signup_completed144- demo_requested145- contact_submitted146147### Product/App148149**Onboarding**150- signup_completed151- onboarding_step_completed (step_number, step_name)152- onboarding_completed153- first_key_action_completed154155**Core Usage**156- feature_used (feature_name)157- action_completed (action_type)158- session_started159- session_ended160161**Monetization**162- trial_started163- pricing_viewed164- checkout_started165- purchase_completed (plan, value)166- subscription_cancelled167168### E-commerce169170**Browsing**171- product_viewed (product_id, category, price)172- product_list_viewed (list_name, products)173- product_searched (query, results_count)174175**Cart**176- product_added_to_cart177- product_removed_from_cart178- cart_viewed179180**Checkout**181- checkout_started182- checkout_step_completed (step)183- payment_info_entered184- purchase_completed (order_id, value, products)185186---187188## Event Properties (Parameters)189190### Standard Properties to Consider191192**Page/Screen**193- page_title194- page_location (URL)195- page_referrer196- content_group197198**User**199- user_id (if logged in)200- user_type (free, paid, admin)201- account_id (B2B)202- plan_type203204**Campaign**205- source206- medium207- campaign208- content209- term210211**Product** (e-commerce)212- product_id213- product_name214- category215- price216- quantity217- currency218219**Timing**220- timestamp221- session_duration222- time_on_page223224### Best Practices225226- Use consistent property names227- Include relevant context228- Don't duplicate GA4 automatic properties229- Avoid PII in properties230- Document expected values231232---233234## GA4 Implementation235236### Configuration237238**Data Streams**239- One stream per platform (web, iOS, Android)240- Enable enhanced measurement241242**Enhanced Measurement Events**243- page_view (automatic)244- scroll (90% depth)245- outbound_click246- site_search247- video_engagement248- file_download249250**Recommended Events**251- Use Google's predefined events when possible252- Correct naming for enhanced reporting253- See: https://support.google.com/analytics/answer/9267735254255### Custom Events (GA4)256257```javascript258// gtag.js259gtag('event', 'signup_completed', {260 'method': 'email',261 'plan': 'free'262});263264// Google Tag Manager (dataLayer)265dataLayer.push({266 'event': 'signup_completed',267 'method': 'email',268 'plan': 'free'269});270```271272### Conversions Setup2732741. Collect event in GA42752. Mark as conversion in Admin > Events2763. Set conversion counting (once per session or every time)2774. Import to Google Ads if needed278279### Custom Dimensions and Metrics280281**When to use:**282- Properties you want to segment by283- Metrics you want to aggregate284- Beyond standard parameters285286**Setup:**2871. Create in Admin > Custom definitions2882. Scope: Event, User, or Item2893. Parameter name must match290291---292293## Google Tag Manager Implementation294295### Container Structure296297**Tags**298- GA4 Configuration (base)299- GA4 Event tags (one per event or grouped)300- Conversion pixels (Facebook, LinkedIn, etc.)301302**Triggers**303- Page View (DOM Ready, Window Loaded)304- Click - All Elements / Just Links305- Form Submission306- Custom Events307308**Variables**309- Built-in: Click Text, Click URL, Page Path, etc.310- Data Layer variables311- JavaScript variables312- Lookup tables313314### Best Practices315316- Use folders to organize317- Consistent naming (Tag_Type_Description)318- Version notes on every publish319- Preview mode for testing320- Workspaces for team collaboration321322### Data Layer Pattern323324```javascript325// Push custom event326dataLayer.push({327 'event': 'form_submitted',328 'form_name': 'contact',329 'form_location': 'footer'330});331332// Set user properties333dataLayer.push({334 'user_id': '12345',335 'user_type': 'premium'336});337338// E-commerce event339dataLayer.push({340 'event': 'purchase',341 'ecommerce': {342 'transaction_id': 'T12345',343 'value': 99.99,344 'currency': 'USD',345 'items': [{346 'item_id': 'SKU123',347 'item_name': 'Product Name',348 'price': 99.99349 }]350 }351});352```353354---355356## UTM Parameter Strategy357358### Standard Parameters359360| Parameter | Purpose | Example |361|-----------|---------|---------|362| utm_source | Where traffic comes from | google, facebook, newsletter |363| utm_medium | Marketing medium | cpc, email, social, referral |364| utm_campaign | Campaign name | spring_sale, product_launch |365| utm_content | Differentiate versions | hero_cta, sidebar_link |366| utm_term | Paid search keywords | running+shoes |367368### Naming Conventions369370**Lowercase everything**371- google, not Google372- email, not Email373374**Use underscores or hyphens consistently**375- product_launch or product-launch376- Pick one, stick with it377378**Be specific but concise**379- blog_footer_cta, not cta1380- 2024_q1_promo, not promo381382### UTM Documentation383384Track all UTMs in a spreadsheet or tool:385386| Campaign | Source | Medium | Content | Full URL | Owner | Date |387|----------|--------|--------|---------|----------|-------|------|388| ... | ... | ... | ... | ... | ... | ... |389390### UTM Builder391392Provide a consistent UTM builder link to team:393- Google's URL builder394- Internal tool395- Spreadsheet formula396397---398399## Debugging and Validation400401### Testing Tools402403**GA4 DebugView**404- Real-time event monitoring405- Enable with ?debug_mode=true406- Or via Chrome extension407408**GTM Preview Mode**409- Test triggers and tags410- See data layer state411- Validate before publish412413**Browser Extensions**414- GA Debugger415- Tag Assistant416- dataLayer Inspector417418### Validation Checklist419420- [ ] Events firing on correct triggers421- [ ] Property values populating correctly422- [ ] No duplicate events423- [ ] Works across browsers424- [ ] Works on mobile425- [ ] Conversions recorded correctly426- [ ] User ID passing when logged in427- [ ] No PII leaking428429### Common Issues430431**Events not firing**432- Trigger misconfigured433- Tag paused434- GTM not loaded on page435436**Wrong values**437- Variable not configured438- Data layer not pushing correctly439- Timing issues (fire before data ready)440441**Duplicate events**442- Multiple GTM containers443- Multiple tag instances444- Trigger firing multiple times445446---447448## Privacy and Compliance449450### Considerations451452- Cookie consent required in EU/UK/CA453- No PII in analytics properties454- Data retention settings455- User deletion capabilities456- Cross-device tracking consent457458### Implementation459460**Consent Mode (GA4)**461- Wait for consent before tracking462- Use consent mode for partial tracking463- Integrate with consent management platform464465**Data Minimization**466- Only collect what you need467- IP anonymization468- No PII in custom dimensions469470---471472## Output Format473474### Tracking Plan Document475476```477# [Site/Product] Tracking Plan478479## Overview480- Tools: GA4, GTM481- Last updated: [Date]482- Owner: [Name]483484## Events485486### Marketing Events487488| Event Name | Description | Properties | Trigger |489|------------|-------------|------------|---------|490| signup_started | User initiates signup | source, page | Click signup CTA |491| signup_completed | User completes signup | method, plan | Signup success page |492493### Product Events494[Similar table]495496## Custom Dimensions497498| Name | Scope | Parameter | Description |499|------|-------|-----------|-------------|500| user_type | User | user_type | Free, trial, paid |501502## Conversions503504| Conversion | Event | Counting | Google Ads |505|------------|-------|----------|------------|506| Signup | signup_completed | Once per session | Yes |507508## UTM Convention509510[Guidelines]511```512513### Implementation Code514515Provide ready-to-use code snippets516517### Testing Checklist518519Specific validation steps520521---522523## Questions to Ask524525If you need more context:5261. What tools are you using (GA4, Mixpanel, etc.)?5272. What key actions do you want to track?5283. What decisions will this data inform?5294. Who implements - dev team or marketing?5305. Are there privacy/consent requirements?5316. What's already tracked?532533---534535## Related Skills536537- **ab-test-setup**: For experiment tracking538- **seo-audit**: For organic traffic analysis539- **page-cro**: For conversion optimization (uses this data)540541---542> Converted and distributed by [TomeVault](https://tomevault.io/claim/davila7) — claim your Tome and manage your conversions.543<!-- tomevault:4.0:skill_md:2026-04-11 -->