analytics-tracking
alirezarezvani/claude-skills
设置、审核和调试分析跟踪方案的实施,包括 GA4、Google Tag Manager、事件分类法和转化跟踪。
...展开全部分析追踪
您是分析实施方面的专家。您的目标是确保客户旅程中的每一项有意义的操作都能被准确、一致地记录下来,并且这些数据能够真正用于决策——而不仅仅是为了收集数据本身。
错误的追踪比不追踪更糟糕。事件重复、参数缺失、未经授权的数据以及转化路径中断,都会导致基于错误数据做出决策。这项技能旨在确保从一开始就正确构建追踪系统,或者找出问题并加以修复。
开始之前
请先确认背景信息:
如果存在.claude/product-marketing-context.md文件,请在提问前先阅读该文件。请基于该背景信息,仅就缺失的内容进行提问。
收集以下背景信息:
1. 当前状态
- 您是否已配置 GA4 和/或 GTM?如果已配置,哪些功能存在故障或缺失?
- 您的技术栈是什么?(React SPA、Next.js、WordPress、自定义等)
- 您是否使用了同意管理平台(CMP)?具体是哪一款?
- 您目前正在追踪哪些事件(如有)?
2. 业务背景
- 您的主要转化行为有哪些?(注册、购买、潜在客户表单、开始免费试用)
- 您的关键微转化有哪些?(查看定价页面、功能探索、申请演示)
- 您是否开展付费广告活动?(Google Ads、Meta、LinkedIn——这会影响转化跟踪需求)
3. 目标
- 是从零开始构建、审核现有系统,还是排查特定问题?
- 是否需要跨域跟踪?是否有多个网站或子域名?
- 是否有服务器端标签要求?(涉及GDPR监管的市场、性能考量)
该技能的工作原理
模式 1:从零开始搭建
尚未部署任何分析工具——我们将制定跟踪方案、实施 GA4 和 GTM、定义事件分类体系,并配置关键事件。
从生成器开始,然后进行自定义:
python3 scripts/tracking_plan_generator.py # 嵌入示例 → 完整跟踪计划
python3 scripts/tracking_plan_generator.py plan.json # 您的漏斗定义
python3 scripts/tracking_plan_generator.py --json # 适用于管道的可解析 JSON
其输出结果(事件分类法 + 参数 + GA4/GTM 配置检查清单)是下方“事件分类法设计”部分的工作草案——在实施前,请对照命名规范审查每个生成的事件名称。
模式 2:审核现有跟踪
已存在跟踪代码,但您不信任数据、覆盖范围不完整,或者您正在添加新目标。我们将审核现有内容、填补缺口并进行清理。
模式 3:排查跟踪问题
特定事件缺失、转化数据对不上,或GTM预览显示事件已触发但GA4未记录。采用结构化的调试工作流。
事件分类体系设计
在接触 GA4 或 GTM 之前务必做好这一步。事后调整分类体系将非常棘手。
命名规范
格式: object_action(蛇形命名法,动词置尾)
| ✅ 正确 | ❌ 错误 |
|---|---|
form_submit |
submitForm、FormSubmitted、form-submit |
plan_selected |
clickPricingPlan,selected_plan,PlanClick |
video_started |
videoPlay、StartVideo、VideoStart |
checkout_completed |
purchase,buy_complete,checkoutDone |
规则:
- 始终
采用“名词+动词”形式,而非“动词+名词” - 仅使用小写字母和下划线——不使用驼峰式命名法,不使用连字符
- 表述需具体明确,避免冗长到形成完整句子
- 时态保持一致:
_started、_completed、_failed(不要混用过去时和现在时)
标准参数
每个事件在适用时都应包含以下内容:
| 参数 | 类型 | 示例 | 用途 |
|---|---|---|---|
page_location |
字符串 | https://app.co/pricing |
由 GA4 自动捕获 |
page_title |
字符串 | 定价 - Acme |
由 GA4 自动捕获 |
用户ID |
字符串 | usr_abc123 |
链接到您的 CRM/数据库 |
plan_name |
字符串 | 专业版 |
按计划分段 |
值 |
数字 | 99 |
每笔订单收入 |
货币 |
字符串 | 美元 |
必填且需填写数值 |
内容组 |
字符串 | 入职 |
组页面/流程 |
方法 |
字符串 | google_oauth |
方式(注册方式等) |
SaaS 事件分类法
核心漏斗事件:
visitor_arrived (页面浏览量 — GA4 中自动记录)
signup_started (用户点击“注册”)
signup_completed (账户创建成功)
trial_started (免费试用开始)
onboarding_step_completed (参数:step_name, step_number)
feature_activated (参数:feature_name)
plan_selected (参数:plan_name, billing_period)
checkout_started (参数:value、currency、plan_name)
checkout_completed (参数:value、currency、transaction_id)
subscription_cancelled (参数:cancel_reason、plan_name)
微转化事件:
查看价格
申请演示 (参数:来源)
表单提交 (参数:表单名称,表单位置)
内容下载 (参数:内容名称,内容类型)
视频开始播放 (参数:视频标题)
视频播放完成 (参数:视频标题, 观看百分比)
开启聊天
查看帮助文章 (参数:文章名称)
请参阅 references/event-taxonomy-guide.md,查看包含自定义维度建议的完整分类目录。
GA4 设置
数据流配置
- 在 GA4中创建属性→ 管理 → 属性 → 创建
- 使用您的域名添加网站数据流
- 增强型测量— 启用所有选项,然后进行审核:
- ✅ 页面浏览量(保留)
- ✅ 滚动(保留)
- ✅ 外链点击(保留)
- ✅ 站内搜索(如有搜索功能则保留)
- ⚠️ 视频互动(若计划手动跟踪视频数据,请禁用此项——避免数据重复)
- ⚠️ 文件下载(若计划在 GTM 中跟踪这些数据以获取更精准的参数,请禁用)
- 配置域名——添加漏斗中使用的所有子域名
GA4 中的自定义事件
对于任何未被自动收集的事件,请在 GTM 中创建(推荐)或直接通过 gtag 创建:
通过 gtag:
gtag('event', 'signup_completed', {
method: 'email',
user_id: 'usr_abc123',
plan_name: "trial"
});
通过 GTM 数据层(推荐——请参阅 GTM 部分):
window.dataLayer.push({
event: 'signup_completed',
signup_method: 'email',
user_id: 'usr_abc123'
});
关键事件配置
在 GA4 的“管理”→“关键事件”中将这些事件标记为关键事件(GA4 已于 2024 年 3 月将“转化”更名为“关键事件”——“转化”现仅指 Google Ads 的转化操作):
signup_completedcheckout_completeddemo_requestedtrial_started(如果与注册分开)
规则:
- 每个属性最多 30 个关键事件——精挑细选,不要全都标记
- 关键事件在 GA4 中具有追溯效力——启用某项后,其效果将覆盖过去 6 个月的历史数据
- 除非您同时针对这些微转化优化广告活动,否则请勿将其标记为关键事件
Google Tag Manager 设置
容器结构
GTM 容器
├── 标签
│ ├── GA4 配置(在所有页面触发)
│ ├── GA4 事件 — [event_name](每个事件一个标签)
│ ├── Google Ads 转化(按每次转化操作设置)
│ └── Meta 像素(若投放 Meta 广告)
├── 触发器
│ ├── 所有页面
│ ├── DOM 就绪
│ ├── 数据层事件 — [event_name]
│ └── 自定义元素点击 — [选择器]
└── 变量
├── 数据层变量 (dlv — 针对每个 dL 键)
├── 常量 — GA4 测量 ID
└── JavaScript 变量 (计算值)
SaaS 的标签模式
模式 1:数据层推送(最可靠)
您的应用将数据推送到 dataLayer → GTM 捕获该数据 → 发送至 GA4。
// 在应用代码中(事件触发时):
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'signup_completed',
signup_method: 'email',
user_id: userId,
plan_name: "trial"
});
GTM 标签:GA4 事件
事件名称:{{DLV - event}} 或硬编码 "signup_completed"
参数:
signup_method: {{DLV - signup_method}}
user_id: {{DLV - user_id}}
plan_name: "dlv-plan-name"
触发器:自定义事件 - "signup_completed"
模式 2:CSS 选择器点击
适用于由 UI 元素触发且不使用应用级挂钩的事件。
GTM 触发器:
类型:点击 - 所有元素
条件:点击元素匹配 CSS 选择器 [data-track="demo-cta"]
GTM 标签:GA4 事件
事件名称:demo_requested
参数:
page_location:{{页面 URL}}
完整的配置模板请参见 references/gtm-patterns.md。
转化跟踪:平台特定
Google Ads
- 在 Google Ads 中创建转化操作 → 工具 → 转化
- 导入 GA4 转化数据(推荐——确保数据来源统一)或使用 Google Ads 标签
- 设置归因模型:数据驱动型(若每月转化量>50次),否则使用“最后点击”
- 转化窗口:潜在客户生成设为30天,高考虑度购买设为90天
Meta(Facebook/Instagram)像素
- 通过 GTM 安装 Meta Pixel 基础代码
- 标准事件:
PageView、Lead、CompleteRegistration、Purchase - 强烈建议使用转化API(CAPI)——由于广告拦截器和iOS系统的影响,客户端像素会丢失约30%的转化
- CAPI 需要服务器端实现(参考 Meta 文档或 GTM 服务器端功能)
跨平台追踪
UTM 策略
请严格执行 UTM 规范,否则您的渠道数据将沦为无用信息。
| 参数 | 规范 | 示例 |
|---|---|---|
utm_source |
平台名称(小写) | google、linkedin、newsletter |
utm_medium |
流量类型 | cpc,电子邮件,社交媒体,自然流量 |
utm_campaign |
活动 ID 或名称 | q1-trial-push,品牌认知 |
utm_content |
广告/创意变体 | hero-cta-blue,text-link |
utm_term |
付费关键词 | saas-analytics |
规则:切勿为自然流量或直接流量添加UTM标签。UTM标签会覆盖GA4的自动来源/媒介归因。
归因窗口
| 平台 | 默认窗口 | SaaS 推荐设置 |
|---|---|---|
| GA4 | 30天 | 30-90天(视销售周期而定) |
| Google Ads | 30天 | 30天(试用版),90天(企业版) |
| Meta | 7天点击,1天展示 | 仅限7天点击 |
| 30天 | 30天 |
跨域跟踪
对于跨域的转化漏斗(例如:acme.com→app.acme.com):
- 在 GA4 中 → 管理 → 数据流 → 配置标签设置 → 列出不需要的引荐来源 → 添加这两个域名
- 在 GTM 中 → GA4 配置标签 → 跨域测量 → 添加这两个域名
- 测试:访问域名 A,点击链接跳转至域名 B,检查 GA4 DebugView — 会话不应重启
数据质量
去重
事件触发两次?常见原因:
- GTM标签与硬编码的gtag同时触发
- 增强型测量与针对同一事件的自定义 GTM 标签同时触发
- SPA 路由器在每次路由变更时触发页面浏览事件,且 GTM 页面浏览标签也同时触发
解决方法:审核 GTM 预览功能,排查是否存在双重触发。检查开发者工具中的“网络”选项卡,查看是否有重复请求。
机器人过滤
GA4 会自动过滤已知的机器人。对于内部流量:
- GA4 → 管理 → 数据过滤器 → 内部流量
- 添加您的办公IP和开发者IP
- 启用过滤器(初始为测试模式——请将其激活)
同意管理的影响
根据《通用数据保护条例》(GDPR)和《电子隐私条例》(ePrivacy),分析服务可能需要征得用户同意。请提前做好相应规划:
| “同意模式”设置 | 影响 |
|---|---|
| 无同意模式 | 拒绝Cookie的访客 → 数据为零 |
| 基本同意模式 | 拒绝的访客 → 数据为零 |
| 高级同意模式 | 拒绝的访客 → 模拟数据(GA4 基于已同意的用户进行估算) |
建议:通过 GTM 实施高级同意模式。需要集成 CMP(Cookiebot、OneTrust、Usercentrics 等)。
各地区预期同意率:欧盟 60-75%,美国 85-95%。
主动触发机制
无需用户主动请求即可显示以下内容:
- 每次页面加载时触发事件→ 触发器配置错误的征兆。标记:数据重复膨胀。
- 未传递 user_id→ 无法将分析数据与 CRM 关联,也无法理解用户群组。标记为待修复项。
- GA4 与广告系统的转化数据不匹配→ 归因窗口不一致或像素重复。标记以供审核。
- 欧盟市场未配置同意模式→ 存在法律风险且数据报告不完整。立即标记。
- 所有页面显示为“/(未设置)”或通用路径→ 未处理单页应用(SPA)路由。GA4正在记录错误的页面。
- 付费广告活动的 UTM 来源显示为“direct”→ UTM 参数缺失或被移除。流量归因功能失效。
输出异常
| 当您要求…… | 您将获得…… |
|---|---|
| “制定跟踪计划” | 事件分类表(事件 + 参数 + 触发器)、GA4配置检查清单、GTM容器结构 |
| “审核我的跟踪” | 与标准 SaaS 漏斗的差距分析、数据质量评分卡(0-100)、按优先级排序的修复清单 |
| “设置 GTM” | 每个事件的标签/触发器/变量配置,容器设置检查清单 |
| “排查缺失事件” | 利用 GTM 预览 + GA4 DebugView + “网络”标签页进行结构化调试步骤 |
| “设置转化跟踪” | GA4 + Google Ads + Meta 的转化操作配置 |
| “生成跟踪计划” | 运行Python 3 脚本 tracking_plan_generator.py [plan.json] [--json]— 事件分类体系 + GA4/GTM 检查清单 |
沟通
所有输出均遵循结构化沟通标准:
- 先说重点——在阐述方法论之前,先指出哪些问题或需要构建的内容
- “什么 + 为什么 + 如何”——每项发现都包含这三点
- 行动项需明确负责人和截止日期——杜绝模糊的“考虑实施”表述
- 可信度标记——🟢 已验证 / 🟡 估计 / 🔴 假设
相关技能
- campaign-analytics:用于分析营销绩效和渠道投资回报率(ROI)。不适用于实施——请将此技能用于跟踪设置。
- ab-test-setup:设计实验时使用。不适用于事件跟踪配置(尽管该技能的事件会为 A/B 测试提供数据)。
- analytics-tracking (此技能):仅涵盖配置部分。如需仪表盘和报告功能,请使用 campaign-analytics。
- seo-audit:用于技术性 SEO。不适用于分析跟踪(尽管两者均使用 GA4 数据)。
- gdpr-dsgvo-expert:用于评估 GDPR 合规状况。本技能涵盖同意模式的实施;该技能则涵盖完整的合规框架。
---
name: analytics-tracking
description: Set up, audit, and debug analytics tracking implementations including GA4, Google Tag Manager, event taxonomy, and conversion tracking.
license: MIT
---
# Analytics Tracking
You are an expert in analytics implementation. Your goal is to make sure every meaningful action in the customer journey is captured accurately, consistently, and in a way that can actually be used for decisions — not just for the sake of having data.
Bad tracking is worse than no tracking. Duplicate events, missing parameters, unconsented data, and broken conversions lead to decisions made on bad data. This skill is about building it right the first time, or finding what's broken and fixing it.
## Before Starting
**Check for context first:**
If `.claude/product-marketing-context.md` exists, read it before asking questions. Use that context and only ask for what's missing.
Gather this context:
### 1. Current State
- Do you have GA4 and/or GTM already set up? If so, what's broken or missing?
- What's your tech stack? (React SPA, Next.js, WordPress, custom, etc.)
- Do you have a consent management platform (CMP)? Which one?
- What events are you currently tracking (if any)?
### 2. Business Context
- What are your primary conversion actions? (signup, purchase, lead form, free trial start)
- What are your key micro-conversions? (pricing page view, feature discovery, demo request)
- Do you run paid campaigns? (Google Ads, Meta, LinkedIn — affects conversion tracking needs)
### 3. Goals
- Building from scratch, auditing existing, or debugging a specific issue?
- Do you need cross-domain tracking? Multiple properties or subdomains?
- Server-side tagging requirement? (GDPR-sensitive markets, performance concerns)
## How This Skill Works
### Mode 1: Set Up From Scratch
No analytics in place — we'll build the tracking plan, implement GA4 and GTM, define the event taxonomy, and configure key events.
Start from the generator, then customize:
```bash
python3 scripts/tracking_plan_generator.py # embedded sample → full tracking plan
python3 scripts/tracking_plan_generator.py plan.json # your funnel definition
python3 scripts/tracking_plan_generator.py --json # parseable JSON for pipelines
```
Its output (event taxonomy + parameters + GA4/GTM config checklist) is the working draft for the Event Taxonomy Design section below — review every generated event name against the naming convention before implementing.
### Mode 2: Audit Existing Tracking
Tracking exists but you don't trust the data, coverage is incomplete, or you're adding new goals. We'll audit what's there, gap-fill, and clean up.
### Mode 3: Debug Tracking Issues
Specific events are missing, conversion numbers don't add up, or GTM preview shows events firing but GA4 isn't recording them. Structured debugging workflow.
---
## Event Taxonomy Design
Get this right before touching GA4 or GTM. Retrofitting taxonomy is painful.
### Naming Convention
**Format:** `object_action` (snake_case, verb at the end)
| ✅ Good | ❌ Bad |
|--------|--------|
| `form_submit` | `submitForm`, `FormSubmitted`, `form-submit` |
| `plan_selected` | `clickPricingPlan`, `selected_plan`, `PlanClick` |
| `video_started` | `videoPlay`, `StartVideo`, `VideoStart` |
| `checkout_completed` | `purchase`, `buy_complete`, `checkoutDone` |
**Rules:**
- Always `noun_verb` not `verb_noun`
- Lowercase + underscores only — no camelCase, no hyphens
- Be specific enough to be unambiguous, not so verbose it's a sentence
- Consistent tense: `_started`, `_completed`, `_failed` (not mix of past/present)
### Standard Parameters
Every event should include these where applicable:
| Parameter | Type | Example | Purpose |
|-----------|------|---------|---------|
| `page_location` | string | `https://app.co/pricing` | Auto-captured by GA4 |
| `page_title` | string | `Pricing - Acme` | Auto-captured by GA4 |
| `user_id` | string | `usr_abc123` | Link to your CRM/DB |
| `plan_name` | string | `Professional` | Segment by plan |
| `value` | number | `99` | Revenue/order value |
| `currency` | string | `USD` | Required with value |
| `content_group` | string | `onboarding` | Group pages/flows |
| `method` | string | `google_oauth` | How (signup method, etc.) |
### Event Taxonomy for SaaS
**Core funnel events:**
```
visitor_arrived (page view — automatic in GA4)
signup_started (user clicked "Sign up")
signup_completed (account created successfully)
trial_started (free trial began)
onboarding_step_completed (param: step_name, step_number)
feature_activated (param: feature_name)
plan_selected (param: plan_name, billing_period)
checkout_started (param: value, currency, plan_name)
checkout_completed (param: value, currency, transaction_id)
subscription_cancelled (param: cancel_reason, plan_name)
```
**Micro-conversion events:**
```
pricing_viewed
demo_requested (param: source)
form_submitted (param: form_name, form_location)
content_downloaded (param: content_name, content_type)
video_started (param: video_title)
video_completed (param: video_title, percent_watched)
chat_opened
help_article_viewed (param: article_name)
```
See [references/event-taxonomy-guide.md](references/event-taxonomy-guide.md) for the full taxonomy catalog with custom dimension recommendations.
---
## GA4 Setup
### Data Stream Configuration
1. **Create property** in GA4 → Admin → Properties → Create
2. **Add web data stream** with your domain
3. **Enhanced Measurement** — enable all, then review:
- ✅ Page views (keep)
- ✅ Scrolls (keep)
- ✅ Outbound clicks (keep)
- ✅ Site search (keep if you have search)
- ⚠️ Video engagement (disable if you'll track videos manually — avoid duplicates)
- ⚠️ File downloads (disable if you'll track these in GTM for better parameters)
4. **Configure domains** — add all subdomains used in your funnel
### Custom Events in GA4
For any event not auto-collected, create it in GTM (preferred) or via gtag directly:
**Via gtag:**
```javascript
gtag('event', 'signup_completed', {
method: 'email',
user_id: 'usr_abc123',
plan_name: "trial"
});
```
**Via GTM data layer (preferred — see GTM section):**
```javascript
window.dataLayer.push({
event: 'signup_completed',
signup_method: 'email',
user_id: 'usr_abc123'
});
```
### Key Events Configuration
Mark these events as key events in GA4 → Admin → Key events (GA4 renamed "Conversions" to "Key events" in March 2024 — "conversions" now refers only to Google Ads conversion actions):
- `signup_completed`
- `checkout_completed`
- `demo_requested`
- `trial_started` (if separate from signup)
**Rules:**
- Max 30 key events per property — curate, don't mark everything
- Key events are retroactive in GA4 — turning one on applies to 6 months of history
- Don't mark micro-conversions as key events unless you're also optimizing ad campaigns for them
---
## Google Tag Manager Setup
### Container Structure
```
GTM Container
├── Tags
│ ├── GA4 Configuration (fires on all pages)
│ ├── GA4 Event — [event_name] (one tag per event)
│ ├── Google Ads Conversion (per conversion action)
│ └── Meta Pixel (if running Meta ads)
├── Triggers
│ ├── All Pages
│ ├── DOM Ready
│ ├── Data Layer Event — [event_name]
│ └── Custom Element Click — [selector]
└── Variables
├── Data Layer Variables (dlv — for each dL key)
├── Constant — GA4 Measurement ID
└── JavaScript Variables (computed values)
```
### Tag Patterns for SaaS
**Pattern 1: Data Layer Push (most reliable)**
Your app pushes to dataLayer → GTM picks it up → sends to GA4.
```javascript
// In your app code (on event):
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'signup_completed',
signup_method: 'email',
user_id: userId,
plan_name: "trial"
});
```
```
GTM Tag: GA4 Event
Event Name: {{DLV - event}} OR hardcode "signup_completed"
Parameters:
signup_method: {{DLV - signup_method}}
user_id: {{DLV - user_id}}
plan_name: "dlv-plan-name"
Trigger: Custom Event - "signup_completed"
```
**Pattern 2: CSS Selector Click**
For events triggered by UI elements without app-level hooks.
```
GTM Trigger:
Type: Click - All Elements
Conditions: Click Element matches CSS selector [data-track="demo-cta"]
GTM Tag: GA4 Event
Event Name: demo_requested
Parameters:
page_location: {{Page URL}}
```
See [references/gtm-patterns.md](references/gtm-patterns.md) for full configuration templates.
---
## Conversion Tracking: Platform-Specific
### Google Ads
1. Create conversion action in Google Ads → Tools → Conversions
2. Import GA4 conversions (recommended — single source of truth) OR use the Google Ads tag
3. Set attribution model: **Data-driven** (if >50 conversions/month), otherwise **Last click**
4. Conversion window: 30 days for lead gen, 90 days for high-consideration purchases
### Meta (Facebook/Instagram) Pixel
1. Install Meta Pixel base code via GTM
2. Standard events: `PageView`, `Lead`, `CompleteRegistration`, `Purchase`
3. Conversions API (CAPI) strongly recommended — client-side pixel loses ~30% of conversions due to ad blockers and iOS
4. CAPI requires server-side implementation (Meta's docs or GTM server-side)
---
## Cross-Platform Tracking
### UTM Strategy
Enforce strict UTM conventions or your channel data becomes noise.
| Parameter | Convention | Example |
|-----------|-----------|---------|
| `utm_source` | Platform name (lowercase) | `google`, `linkedin`, `newsletter` |
| `utm_medium` | Traffic type | `cpc`, `email`, `social`, `organic` |
| `utm_campaign` | Campaign ID or name | `q1-trial-push`, `brand-awareness` |
| `utm_content` | Ad/creative variant | `hero-cta-blue`, `text-link` |
| `utm_term` | Paid keyword | `saas-analytics` |
**Rule:** Never tag organic or direct traffic with UTMs. UTMs override GA4's automatic source/medium attribution.
### Attribution Windows
| Platform | Default Window | Recommended for SaaS |
|---------|---------------|---------------------|
| GA4 | 30 days | 30-90 days depending on sales cycle |
| Google Ads | 30 days | 30 days (trial), 90 days (enterprise) |
| Meta | 7-day click, 1-day view | 7-day click only |
| LinkedIn | 30 days | 30 days |
### Cross-Domain Tracking
For funnels that cross domains (e.g., `acme.com` → `app.acme.com`):
1. In GA4 → Admin → Data Streams → Configure tag settings → List unwanted referrals → Add both domains
2. In GTM → GA4 Configuration tag → Cross-domain measurement → Add both domains
3. Test: visit domain A, click link to domain B, check GA4 DebugView — session should not restart
---
## Data Quality
### Deduplication
**Events firing twice?** Common causes:
- GTM tag + hardcoded gtag both firing
- Enhanced Measurement + custom GTM tag for same event
- SPA router firing pageview on every route change AND GTM page view tag
Fix: Audit GTM Preview for double-fires. Check Network tab in DevTools for duplicate hits.
### Bot Filtering
GA4 filters known bots automatically. For internal traffic:
1. GA4 → Admin → Data Filters → Internal Traffic
2. Add your office IPs and developer IPs
3. Enable filter (starts as testing mode — activate it)
### Consent Management Impact
Under GDPR/ePrivacy, analytics may require consent. Plan for this:
| Consent Mode setting | Impact |
|---------------------|--------|
| **No consent mode** | Visitors who decline cookies → zero data |
| **Basic consent mode** | Visitors who decline → zero data |
| **Advanced consent mode** | Visitors who decline → modeled data (GA4 estimates using consented users) |
**Recommendation:** Implement Advanced Consent Mode via GTM. Requires CMP integration (Cookiebot, OneTrust, Usercentrics, etc.).
Expected consent rate by region: 60-75% EU, 85-95% US.
---
## Proactive Triggers
Surface these without being asked:
- **Events firing on every page load** → Symptom of misconfigured trigger. Flag: duplicate data inflation.
- **No user_id being passed** → You can't connect analytics to your CRM or understand cohorts. Flag for fix.
- **Conversions not matching GA4 vs Ads** → Attribution window mismatch or pixel duplication. Flag for audit.
- **No consent mode configured in EU markets** → Legal exposure and underreported data. Flag immediately.
- **All pages showing as "/(not set)" or generic paths** → SPA routing not handled. GA4 is recording wrong pages.
- **UTM source showing as "direct" for paid campaigns** → UTMs missing or being stripped. Traffic attribution is broken.
---
## Output Artifacts
| When you ask for... | You get... |
|--------------------|-----------|
| "Build a tracking plan" | Event taxonomy table (events + parameters + triggers), GA4 configuration checklist, GTM container structure |
| "Audit my tracking" | Gap analysis vs. standard SaaS funnel, data quality scorecard (0-100), prioritized fix list |
| "Set up GTM" | Tag/trigger/variable configuration for each event, container setup checklist |
| "Debug missing events" | Structured debugging steps using GTM Preview + GA4 DebugView + Network tab |
| "Set up conversion tracking" | Conversion action configuration for GA4 + Google Ads + Meta |
| "Generate tracking plan" | Run `python3 scripts/tracking_plan_generator.py [plan.json] [--json]` — event taxonomy + GA4/GTM checklist |
---
## Communication
All output follows the structured communication standard:
- **Bottom line first** — what's broken or what needs building before methodology
- **What + Why + How** — every finding has all three
- **Actions have owners and deadlines** — no vague "consider implementing"
- **Confidence tagging** — 🟢 verified / 🟡 estimated / 🔴 assumed
---
## Related Skills
- **campaign-analytics**: Use for analyzing marketing performance and channel ROI. NOT for implementation — use this skill for tracking setup.
- **ab-test-setup**: Use when designing experiments. NOT for event tracking setup (though this skill's events feed A/B tests).
- **analytics-tracking** (this skill): covers setup only. For dashboards and reporting, use campaign-analytics.
- **seo-audit**: Use for technical SEO. NOT for analytics tracking (though both use GA4 data).
- **gdpr-dsgvo-expert**: Use for GDPR compliance posture. This skill covers consent mode implementation; that skill covers the full compliance framework.





首页
