analytics-tracking
alirezarezvani/claude-skills
Configurar, auditar e depurar implementações de rastreamento de análise, incluindo o GA4, o Google Tag Manager, a taxonomia de eventos e o rastreamento de conversões.
...Expandir tudoRastreamento de análises
Você é especialista na implementação de análises. Seu objetivo é garantir que todas as ações significativas na jornada do cliente sejam capturadas com precisão, consistência e de forma que possam realmente ser utilizadas para a tomada de decisões — e não apenas para se ter dados.
Um rastreamento mal feito é pior do que nenhum rastreamento. Eventos duplicados, parâmetros ausentes, dados coletados sem consentimento e conversões com erros levam a decisões baseadas em dados incorretos. Essa habilidade consiste em fazer tudo certo desde o início ou identificar o que está errado e corrigir.
Antes de começar
Verifique primeiro o contexto:
Se o arquivo .claude/product-marketing-context.md existir, leia-o antes de fazer perguntas. Use esse contexto e pergunte apenas o que estiver faltando.
Reúna este contexto:
1. Situação atual
- Você já tem o GA4 e/ou o GTM configurados? Se sim, o que está com problema ou faltando?
- Qual é a sua pilha de tecnologia? (React SPA, Next.js, WordPress, personalizada, etc.)
- Você possui uma plataforma de gerenciamento de consentimento (CMP)? Qual?
- Quais eventos você está monitorando atualmente (se houver)?
2. Contexto de negócios
- Quais são suas principais ações de conversão? (cadastro, compra, formulário de lead, início de avaliação gratuita)
- Quais são suas principais microconversões? (visualização da página de preços, descoberta de recursos, solicitação de demonstração)
- Você realiza campanhas pagas? (Google Ads, Meta, LinkedIn — isso afeta as necessidades de acompanhamento de conversões)
3. Objetivos
- Está criando do zero, auditando o que já existe ou solucionando um problema específico?
- Você precisa de rastreamento entre domínios? Várias propriedades ou subdomínios?
- É necessário o uso de tags no lado do servidor? (mercados sujeitos ao GDPR, preocupações com desempenho)
Como essa habilidade funciona
Modo 1: Configuração do zero
Sem análise de dados em vigor — vamos criar o plano de rastreamento, implementar o GA4 e o GTM, definir a taxonomia de eventos e configurar os eventos-chave.
Comece pelo gerador e, em seguida, personalize:
python3 scripts/tracking_plan_generator.py # exemplo incorporado → plano de rastreamento completo
python3 scripts/tracking_plan_generator.py plan.json # sua definição de funil
python3 scripts/tracking_plan_generator.py --json # JSON analisável para pipelines
Seu resultado (taxonomia de eventos + parâmetros + lista de verificação de configuração do GA4/GTM) é o rascunho de trabalho para a seção “Projeto da taxonomia de eventos” abaixo — revise cada nome de evento gerado em relação à convenção de nomenclatura antes de implementar.
Modo 2: Auditoria do rastreamento existente
O rastreamento já existe, mas você não confia nos dados, a cobertura está incompleta ou você está adicionando novas metas. Vamos auditar o que já está lá, preencher lacunas e fazer a limpeza.
Modo 3: Depuração de problemas de rastreamento
Estão faltando eventos específicos, os números de conversão não batem ou a visualização do GTM mostra que os eventos estão sendo disparados, mas o GA4 não os está registrando. Fluxo de trabalho estruturado de depuração.
Projeto da taxonomia de eventos
Faça isso corretamente antes de mexer no GA4 ou no GTM. Adaptar a taxonomia posteriormente é trabalhoso.
Convenção de Nomenclatura
Formato: objeto_ação (snake_case, verbo no final)
| ✅ Correto | ❌ Errado |
|---|---|
form_submit |
submitForm, FormSubmitted, form-submit |
plan_selected |
clickPricingPlan, selected_plan, PlanClick |
video_started |
videoPlay, StartVideo, VideoStart |
checkout_completed |
purchase, buy_complete, checkoutDone |
Regras:
- Sempre
substantivo_verbo, e nãoverbo_substantivo - Somente letras minúsculas + sublinhados — nada de camelCase, nada de hífens
- Seja específico o suficiente para não deixar margem para ambiguidade, mas não tão prolixo a ponto de parecer uma frase
- Tempo verbal consistente:
_iniciado,_concluído,_falhou(sem mistura de passado/presente)
Parâmetros padrão
Cada evento deve incluir estes, quando aplicável:
| Parâmetro | Tipo | Exemplo | Finalidade |
|---|---|---|---|
page_location |
string | https://app.co/pricing |
Capturado automaticamente pelo GA4 |
page_title |
string | Preços - Acme |
Capturado automaticamente pelo GA4 |
user_id |
string | usr_abc123 |
Link para seu CRM/banco de dados |
plan_name |
string | Profissional |
Segmentar por plano |
valor |
número | 99 |
Receita/valor do pedido |
moeda |
string | USD |
Obrigatório com valor |
grupo_de_conteúdo |
string | integração |
Páginas/fluxos do grupo |
método |
string | google_oauth |
Como (método de cadastro, etc.) |
Taxonomia de eventos para SaaS
Eventos principais do funil:
visitor_arrived (visualização de página — automática no GA4)
signup_started (o usuário clicou em “Cadastre-se”)
signup_completed (conta criada com sucesso)
trial_started (início do período de teste gratuito)
onboarding_step_completed (parâmetro: step_name, step_number)
feature_activated (parâmetro: feature_name)
plan_selected (parâmetro: plan_name, billing_period)
checkout_started (parâmetro: valor, moeda, nome_do_plano)
checkout_completed (parâmetro: valor, moeda, id_da_transação)
subscription_cancelled (parâmetro: motivo_do_cancelamento, nome_do_plano)
Eventos de microconversão:
preços_visualizados
demonstração_solicitada (parâmetro: fonte)
formulário_enviado (parâmetro: nome_do_formulário, localização_do_formulário)
conteúdo_baixado (parâmetro: nome_do_conteúdo, tipo_de_conteúdo)
vídeo_iniciado (parâmetro: título_do_vídeo)
vídeo_concluído (parâmetro: título_do_vídeo, porcentagem_assistida)
chat_aberto
artigo_de_ajuda_visualizado (parâmetro: nome_do_artigo)
Consulte references/event-taxonomy-guide.md para ver o catálogo completo de taxonomia com recomendações de dimensões personalizadas.
Configuração do GA4
Configuração do fluxo de dados
- Crie uma propriedade no GA4 → Admin → Propriedades → Criar
- Adicione um fluxo de dados da web com seu domínio
- Medição aprimorada — habilite todas as opções e, em seguida, verifique:
- ✅ Visualizações de página (manter)
- ✅ Rolagens (manter)
- ✅ Cliques de saída (manter)
- ✅ Pesquisa no site (manter se você tiver pesquisa)
- ⚠️ Engajamento com vídeos (desative se for rastrear vídeos manualmente — evite duplicatas)
- ⚠️ Downloads de arquivos (desative se for rastreá-los no GTM para obter parâmetros melhores)
- Configure domínios — adicione todos os subdomínios usados no seu funil
Eventos personalizados no GA4
Para qualquer evento que não seja coletado automaticamente, crie-o no GTM (preferencialmente) ou diretamente via gtag:
Por meio do gtag:
gtag('event', 'signup_completed', {
method: 'email',
user_id: 'usr_abc123',
plan_name: "trial"
});
Por meio da camada de dados do GTM (recomendado — consulte a seção sobre o GTM):
window.dataLayer.push({
event: 'signup_completed',
signup_method: 'email',
user_id: 'usr_abc123'
});
Configuração de eventos-chave
Marque esses eventos como eventos-chave no GA4 → Admin → Eventos-chave (o GA4 renomeou “Conversões” para “Eventos-chave” em março de 2024 — “conversões” agora se refere apenas às ações de conversão do Google Ads):
signup_completedcheckout_completeddemo_requestedtrial_started(se for diferente do cadastro)
Regras:
- Máximo de 30 eventos-chave por propriedade — selecione com cuidado, não marque tudo
- Os eventos-chave são retroativos no GA4 — ativar um deles aplica-se a 6 meses de histórico
- Não marque microconversões como eventos-chave, a menos que você também esteja otimizando campanhas publicitárias para elas
Configuração do Google Tag Manager
Estrutura do contêiner
Contêiner do GTM
├── Tags
│ ├── Configuração do GA4 (disparada em todas as páginas)
│ ├── Evento do GA4 — [nome_do_evento] (uma tag por evento)
│ ├── Conversão do Google Ads (por ação de conversão)
│ └── Meta Pixel (se estiver veiculando anúncios do Meta)
├── Gatilhos
│ ├── Todas as páginas
│ ├── DOM pronto
│ ├── Evento da camada de dados — [nome_do_evento]
│ └── Clique em elemento personalizado — [seletor]
└── Variáveis
├── Variáveis da camada de dados (dlv — para cada chave dL)
├── Constante — ID de medição do GA4
└── Variáveis JavaScript (valores calculados)
Padrões de tags para SaaS
Padrão 1: Envio da camada de dados (o mais confiável)
Seu aplicativo envia dados para a camada de dados → o GTM os capta → e os envia para o GA4.
// No código do seu aplicativo (ao ocorrer o evento):
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'signup_completed',
signup_method: 'email',
user_id: userId,
plan_name: "trial"
});
Tag do GTM: Evento do GA4
Nome do evento: {{DLV - event}} OU codifique diretamente “signup_completed”
Parâmetros:
signup_method: {{DLV - signup_method}}
user_id: {{DLV - user_id}}
plan_name: "dlv-plan-name"
Gatilho: Evento personalizado - "signup_completed"
Padrão 2: Clique no seletor CSS
Para eventos acionados por elementos da interface do usuário sem ganchos no nível do aplicativo.
Gatilho do GTM:
Tipo: Clique - Todos os elementos
Condições: O clique no elemento corresponde ao seletor CSS [data-track="demo-cta"]
Tag do GTM: Evento do GA4
Nome do evento: demo_requested
Parâmetros:
page_location: {{URL da página}}
Consulte references/gtm-patterns.md para ver os modelos de configuração completos.
Acompanhamento de conversões: específico da plataforma
Google Ads
- Crie uma ação de conversão no Google Ads → Ferramentas → Conversões
- Importe conversões do GA4 (recomendado — fonte única de verdade) OU use a tag do Google Ads
- Defina o modelo de atribuição: Baseado em dados (se >50 conversões/mês); caso contrário, Último clique
- Janela de conversão: 30 dias para geração de leads, 90 dias para compras de alta consideração
Pixel do Meta (Facebook/Instagram)
- Instale o código base do Pixel do Meta via GTM
- Eventos padrão:
Visualização de página,Lead,Registro concluído,Compra - API de conversões (CAPI) altamente recomendada — o pixel do lado do cliente perde cerca de 30% das conversões devido a bloqueadores de anúncios e ao iOS
- A CAPI requer implementação do lado do servidor (documentação da Meta ou GTM do lado do servidor)
Rastreamento multiplataforma
Estratégia de UTM
Aplique convenções UTM rigorosas ou seus dados de canal se tornarão ruído.
| Parâmetro | Convenção | Exemplo |
|---|---|---|
utm_source |
Nome da plataforma (letras minúsculas) | google, linkedin, newsletter |
utm_medium |
Tipo de tráfego | cpc, e-mail, redes sociais, orgânico |
utm_campaign |
ID ou nome da campanha | q1-trial-push, brand-awareness |
utm_content |
Variante do anúncio/criativo | hero-cta-blue, link-de-texto |
utm_term |
Palavra-chave paga | saas-analytics |
Regra: Nunca marque o tráfego orgânico ou direto com UTMs. Os UTMs substituem a atribuição automática de fonte/meio do GA4.
Janelas de atribuição
| Plataforma | Janela padrão | Recomendado para SaaS |
|---|---|---|
| GA4 | 30 dias | 30 a 90 dias, dependendo do ciclo de vendas |
| Google Ads | 30 dias | 30 dias (versão de teste), 90 dias (empresarial) |
| Meta | Clique de 7 dias, visualização de 1 dia | Apenas cliques em 7 dias |
| 30 dias | 30 dias |
Rastreamento entre domínios
Para funis que atravessam domínios (por exemplo, acme.com → app.acme.com):
- No GA4 → Admin → Fluxos de dados → Configurar definições de tag → Listar referências indesejadas → Adicionar ambos os domínios
- No GTM → Tag de configuração do GA4 → Medição entre domínios → Adicione ambos os domínios
- Teste: acesse o domínio A, clique no link para o domínio B, verifique o GA4 DebugView — a sessão não deve reiniciar
Qualidade dos dados
Desduplicação
Eventos sendo disparados duas vezes? Causas comuns:
- A tag do GTM e o gtag codificado manualmente estão sendo disparados
- Medição Avançada + tag GTM personalizada para o mesmo evento
- O roteador SPA aciona a visualização de página a cada mudança de rota E a tag de visualização de página do GTM
Solução: Verifique a visualização do GTM em busca de acionamentos duplicados. Verifique a aba “Rede” no DevTools para detectar acessos duplicados.
Filtragem de bots
O GA4 filtra bots conhecidos automaticamente. Para tráfego interno:
- GA4 → Admin → Filtros de dados → Tráfego interno
- Adicione os IPs do seu escritório e os IPs dos desenvolvedores
- Ative o filtro (inicia no modo de teste — ative-o)
Impacto na gestão do consentimento
De acordo com o GDPR/ePrivacy, as análises podem exigir consentimento. Planeje-se para isso:
| Configuração do Modo de Consentimento | Impacto |
|---|---|
| Modo sem consentimento | Visitantes que recusam cookies → zero dados |
| Modo de consentimento básico | Visitantes que recusam → zero dados |
| Modo de consentimento avançado | Visitantes que recusam → dados modelados (o GA4 faz estimativas usando usuários que deram consentimento) |
Recomendação: Implemente o Modo de Consentimento Avançado por meio do GTM. Requer integração com CMP (Cookiebot, OneTrust, Usercentrics, etc.).
Taxa de consentimento esperada por região: 60–75% na UE, 85–95% nos EUA.
Gatilhos proativos
Exiba-os sem que sejam solicitados:
- Eventos acionados a cada carregamento de página → Sintoma de gatilho mal configurado. Alerta: inflação de dados duplicados.
- Nenhum user_id sendo passado → Não é possível conectar a análise de dados ao seu CRM nem compreender os grupos de usuários. Sinalizar para correção.
- Conversões não correspondentes entre o GA4 e o Ads → Incompatibilidade na janela de atribuição ou duplicação de pixels. Sinalizar para auditoria.
- Modo de consentimento não configurado nos mercados da UE → Risco legal e subnotificação de dados. Sinalize imediatamente.
- Todas as páginas aparecendo como “/(not set)” ou com caminhos genéricos → Roteamento de SPA não tratado. O GA4 está registrando páginas erradas.
- Fonte UTM aparecendo como “direta” para campanhas pagas → UTMs ausentes ou removidos. A atribuição de tráfego está comprometida.
Artefatos de saída
| Quando você solicita... | Você recebe... |
|---|---|
| “Crie um plano de rastreamento” | Tabela de taxonomia de eventos (eventos + parâmetros + gatilhos), lista de verificação de configuração do GA4, estrutura do contêiner do GTM |
| “Faça uma auditoria no meu rastreamento” | Análise de lacunas em relação ao funil padrão de SaaS, quadro de avaliação da qualidade dos dados (0-100), lista de correções priorizadas |
| “Configurar o GTM” | Configuração de tags/gatilhos/variáveis para cada evento, lista de verificação para configuração do contêiner |
| “Depurar eventos ausentes” | Etapas estruturadas de depuração usando o GTM Preview + GA4 DebugView + guia “Rede” |
| “Configurar o acompanhamento de conversões” | Configuração de ações de conversão para o GA4 + Google Ads + Meta |
| “Gerar plano de rastreamento” | Execute os scripts Python 3/tracking_plan_generator.py [plan.json] [--json] — taxonomia de eventos + lista de verificação do GA4/GTM |
Comunicação
Todas as saídas seguem o padrão de comunicação estruturada:
- O essencial primeiro — o que está com problema ou o que precisa ser desenvolvido antes da metodologia
- O quê + Por quê + Como — cada descoberta inclui esses três elementos
- As ações têm responsáveis e prazos — nada de vagas sugestões do tipo “considerar implementar”
- Classificação de confiança — 🟢 verificado / 🟡 estimado / 🔴 suposto
Habilidades relacionadas
- campaign-analytics: Use para analisar o desempenho de marketing e o ROI dos canais. NÃO para implementação — use essa competência para configurar o acompanhamento.
- ab-test-setup: Use ao projetar experimentos. NÃO serve para a configuração de rastreamento de eventos (embora os eventos dessa habilidade alimentem os testes A/B).
- analytics-tracking (esta competência): abrange apenas a configuração. Para painéis e relatórios, use campaign-analytics.
- seo-audit: Use para SEO técnico. NÃO para rastreamento analítico (embora ambos utilizem dados do GA4).
- gdpr-dsgvo-expert: Use para avaliar a conformidade com o GDPR. Esta habilidade abrange a implementação do modo de consentimento; aquela habilidade abrange toda a estrutura de conformidade.
---
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.
Todos os arquivos
0 arquivosInstalar analytics-tracking
Baixe e descompacte os arquivos das habilidades no diretório .claude/skills/.
Baixar ZIPClone o repositório e copie os arquivos da habilidade para o seu projeto.
git clone https://github.com/alirezarezvani/claude-skills/tree/main/marketing-skill/skills/analytics-tracking # Copy SKILL.md to your .claude/skills/ directory
Copiar





Lar
