cdp-edge 1.9.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/bin/cdp-edge.js +8 -0
  2. package/docs/CI-CD-SETUP.md +217 -0
  3. package/docs/PixelBuilder-Documentacao-Completa (2).docx +0 -0
  4. package/docs/events-reference.md +359 -0
  5. package/docs/installation.md +155 -0
  6. package/docs/quick-start.md +185 -0
  7. package/docs/sdk-reference.md +371 -0
  8. package/docs/whatsapp-ctwa.md +209 -0
  9. package/extracted-skill/tracking-events-generator/INDEX.md +94 -0
  10. package/extracted-skill/tracking-events-generator/INSTALACAO-CDPEDGE.md +58 -0
  11. package/extracted-skill/tracking-events-generator/INTEGRACAO-COMPLETA.md +594 -0
  12. package/extracted-skill/tracking-events-generator/MELHORIAS-IMPLEMENTADAS.md +412 -0
  13. package/extracted-skill/tracking-events-generator/Premium-Tracking-Intelligence-Resumo.md +333 -0
  14. package/extracted-skill/tracking-events-generator/SKILL.md +257 -0
  15. package/extracted-skill/tracking-events-generator/advanced-matching.js +364 -0
  16. package/extracted-skill/tracking-events-generator/agents/ab-testing-agent.md +54 -0
  17. package/extracted-skill/tracking-events-generator/agents/attribution-agent.md +1304 -0
  18. package/extracted-skill/tracking-events-generator/agents/bing-agent.md +76 -0
  19. package/extracted-skill/tracking-events-generator/agents/browser-tracking.md +264 -0
  20. package/extracted-skill/tracking-events-generator/agents/code-guardian-agent.md +149 -0
  21. package/extracted-skill/tracking-events-generator/agents/compliance-agent.md +2077 -0
  22. package/extracted-skill/tracking-events-generator/agents/crm-integration-agent.md +1419 -0
  23. package/extracted-skill/tracking-events-generator/agents/dashboard-agent.md +456 -0
  24. package/extracted-skill/tracking-events-generator/agents/database-agent.md +667 -0
  25. package/extracted-skill/tracking-events-generator/agents/debug-agent.md +1455 -0
  26. package/extracted-skill/tracking-events-generator/agents/domain-setup-agent.md +224 -0
  27. package/extracted-skill/tracking-events-generator/agents/email-agent.md +61 -0
  28. package/extracted-skill/tracking-events-generator/agents/fingerprint-agent.md +52 -0
  29. package/extracted-skill/tracking-events-generator/agents/google-agent.md +109 -0
  30. package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +365 -0
  31. package/extracted-skill/tracking-events-generator/agents/intelligence-scheduling.md +643 -0
  32. package/extracted-skill/tracking-events-generator/agents/linkedin-agent.md +62 -0
  33. package/extracted-skill/tracking-events-generator/agents/localization-agent.md +55 -0
  34. package/extracted-skill/tracking-events-generator/agents/ltv-predictor-agent.md +59 -0
  35. package/extracted-skill/tracking-events-generator/agents/master-feedback-loop.md +900 -0
  36. package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +1922 -0
  37. package/extracted-skill/tracking-events-generator/agents/memory-agent.json +109 -0
  38. package/extracted-skill/tracking-events-generator/agents/memory-agent.md +703 -0
  39. package/extracted-skill/tracking-events-generator/agents/meta-agent.md +110 -0
  40. package/extracted-skill/tracking-events-generator/agents/page-analyzer.md +255 -0
  41. package/extracted-skill/tracking-events-generator/agents/performance-agent.md +1157 -0
  42. package/extracted-skill/tracking-events-generator/agents/performance-optimization-agent.md +1432 -0
  43. package/extracted-skill/tracking-events-generator/agents/pinterest-agent.md +310 -0
  44. package/extracted-skill/tracking-events-generator/agents/premium-tracking-intelligence-agent.md +849 -0
  45. package/extracted-skill/tracking-events-generator/agents/r2-setup-agent.md +250 -0
  46. package/extracted-skill/tracking-events-generator/agents/reddit-agent.md +313 -0
  47. package/extracted-skill/tracking-events-generator/agents/security-enterprise-agent.md +1752 -0
  48. package/extracted-skill/tracking-events-generator/agents/server-tracking.md +1188 -0
  49. package/extracted-skill/tracking-events-generator/agents/spotify-agent.md +383 -0
  50. package/extracted-skill/tracking-events-generator/agents/tiktok-agent.md +111 -0
  51. package/extracted-skill/tracking-events-generator/agents/tracking-plan-agent.md +364 -0
  52. package/extracted-skill/tracking-events-generator/agents/validator-agent.md +267 -0
  53. package/extracted-skill/tracking-events-generator/agents/webhook-agent.md +69 -0
  54. package/extracted-skill/tracking-events-generator/agents/whatsapp-agent.md +76 -0
  55. package/extracted-skill/tracking-events-generator/agents/whatsapp-ctwa-setup-agent.md +699 -0
  56. package/extracted-skill/tracking-events-generator/agents/youtube-agent.md +422 -0
  57. package/extracted-skill/tracking-events-generator/anti-blocking.js +285 -0
  58. package/extracted-skill/tracking-events-generator/cdpTrack.js +641 -0
  59. package/extracted-skill/tracking-events-generator/contracts/api-versions.json +368 -0
  60. package/extracted-skill/tracking-events-generator/docs/guia-cloudflare-iniciante.md +107 -0
  61. package/extracted-skill/tracking-events-generator/engagement-scoring.js +226 -0
  62. package/extracted-skill/tracking-events-generator/evals/evals.json +235 -0
  63. package/extracted-skill/tracking-events-generator/integration-test.js +497 -0
  64. package/extracted-skill/tracking-events-generator/knowledge-base.md +2894 -0
  65. package/extracted-skill/tracking-events-generator/micro-events.js +992 -0
  66. package/extracted-skill/tracking-events-generator/models/captura-de-lead.md +78 -0
  67. package/extracted-skill/tracking-events-generator/models/captura-lead-evento-externo.md +99 -0
  68. package/extracted-skill/tracking-events-generator/models/checkout-proprio.md +111 -0
  69. package/extracted-skill/tracking-events-generator/models/multi-step-checkout.md +672 -0
  70. package/extracted-skill/tracking-events-generator/models/pagina-obrigado.md +55 -0
  71. package/extracted-skill/tracking-events-generator/models/pinterest/conversions-api-template.js +144 -0
  72. package/extracted-skill/tracking-events-generator/models/pinterest/event-mappings.json +48 -0
  73. package/extracted-skill/tracking-events-generator/models/pinterest/tag-template.js +28 -0
  74. package/extracted-skill/tracking-events-generator/models/quiz-funnel.md +68 -0
  75. package/extracted-skill/tracking-events-generator/models/reddit/conversions-api-template.js +205 -0
  76. package/extracted-skill/tracking-events-generator/models/reddit/event-mappings.json +56 -0
  77. package/extracted-skill/tracking-events-generator/models/reddit/pixel-template.js +19 -0
  78. package/extracted-skill/tracking-events-generator/models/scenarios/behavior-engine.js +425 -0
  79. package/extracted-skill/tracking-events-generator/models/scenarios/real-estate-logic.md +50 -0
  80. package/extracted-skill/tracking-events-generator/models/scenarios/sales-page-logic.md +50 -0
  81. package/extracted-skill/tracking-events-generator/models/trafego-direto.md +582 -0
  82. package/extracted-skill/tracking-events-generator/models/webinar-registration.md +63 -0
  83. package/extracted-skill/tracking-events-generator/tracking.config.js +46 -0
  84. package/extracted-skill/tracking-events-generator/walkthrough.md +26 -0
  85. package/package.json +4 -1
  86. package/server-edge-tracker/INSTALAR.md +328 -0
  87. package/server-edge-tracker/migrate-new-db.sql +137 -0
  88. package/server-edge-tracker/migrate-v2.sql +16 -0
  89. package/server-edge-tracker/migrate-v3.sql +6 -0
  90. package/server-edge-tracker/migrate-v4.sql +18 -0
  91. package/server-edge-tracker/migrate-v5.sql +17 -0
  92. package/server-edge-tracker/migrate-v6.sql +24 -0
  93. package/server-edge-tracker/migrate.sql +111 -0
  94. package/server-edge-tracker/schema.sql +265 -0
  95. package/server-edge-tracker/worker.js +2574 -0
  96. package/server-edge-tracker/wrangler.toml +85 -0
  97. package/templates/afiliado-sem-landing.md +312 -0
  98. package/templates/install/.claude/commands/cdp.md +1 -0
  99. package/templates/install/CLAUDE.md +65 -0
  100. package/templates/vsl-page.md +292 -0
@@ -0,0 +1,155 @@
1
+ # CDP Edge — Instalação em Projetos de Clientes
2
+
3
+ Como integrar o CDP Edge em qualquer projeto para que Claude Code, VS Code, Cursor e outras IDEs com IA o reconheçam automaticamente.
4
+
5
+ ---
6
+
7
+ ## Estrutura recomendada
8
+
9
+ ```
10
+ meu-projeto-cliente/ ← abrir esta pasta no Claude Code / VS Code
11
+ ├── CLAUDE.md ← ⭐ faz o Claude Code ativar o CDP Edge automaticamente
12
+ ├── .cursorrules ← (opcional) para Cursor IDE
13
+ ├── cdp-edge/ ← CDP Edge instalado aqui
14
+ │ ├── extracted-skill/
15
+ │ ├── server-edge-tracker/
16
+ │ ├── templates/
17
+ │ └── docs/
18
+ ├── src/ ← código do projeto do cliente
19
+ └── ...
20
+ ```
21
+
22
+ ---
23
+
24
+ ## Passo 1 — Instalar o CDP Edge na pasta do projeto
25
+
26
+ ```bash
27
+ # Dentro da pasta do projeto do cliente:
28
+ cd meu-projeto-cliente
29
+
30
+ # Opção A — clonar o CDP Edge como subpasta
31
+ git clone https://github.com/ricardosoli777/CDP-Edge-Premium cdp-edge
32
+
33
+ # Opção B — copiar manualmente
34
+ # Copiar a pasta CDP-Edge inteira e renomear para cdp-edge/
35
+ ```
36
+
37
+ ---
38
+
39
+ ## Passo 2 — Criar o CLAUDE.md na raiz do projeto
40
+
41
+ Copiar o template de ativação:
42
+
43
+ ```bash
44
+ cp cdp-edge/templates/install/CLAUDE.md ./CLAUDE.md
45
+ ```
46
+
47
+ Editar o `CLAUDE.md` e substituir `[NOME DO PROJETO]` pelo nome real do projeto.
48
+
49
+ **Por que isso funciona:**
50
+ O Claude Code lê o `CLAUDE.md` da raiz do diretório aberto automaticamente. Quando encontra a instrução de leitura do `master-orchestrator.md`, ativa o sistema imediatamente na abertura da sessão.
51
+
52
+ ---
53
+
54
+ ## Passo 3 — Abrir o projeto no Claude Code
55
+
56
+ ```bash
57
+ # Na pasta do projeto (não dentro do cdp-edge):
58
+ claude .
59
+ ```
60
+
61
+ O Claude Code vai:
62
+ 1. Ler o `CLAUDE.md` da raiz
63
+ 2. Encontrar a instrução de ativação do CDP Edge
64
+ 3. Carregar o `master-orchestrator.md`
65
+ 4. Exibir a mensagem de boas-vindas automaticamente
66
+
67
+ ---
68
+
69
+ ## Para VS Code com extensão Claude
70
+
71
+ O mesmo mecanismo funciona. O `CLAUDE.md` é lido pela extensão Claude Code no VS Code quando você abre a pasta do projeto.
72
+
73
+ ```bash
74
+ code meu-projeto-cliente/
75
+ ```
76
+
77
+ ---
78
+
79
+ ## Para Cursor IDE
80
+
81
+ Criar adicionalmente um `.cursorrules` na raiz:
82
+
83
+ ```bash
84
+ cp cdp-edge/templates/install/CLAUDE.md .cursorrules
85
+ ```
86
+
87
+ O Cursor lê `.cursorrules` automaticamente e aplica as instruções ao agente AI.
88
+
89
+ ---
90
+
91
+ ## Para qualquer outra IDE com AI
92
+
93
+ Qualquer IDE que suporte arquivos de instrução (`.aidioms`, `system-prompt.md`, etc.) pode usar o mesmo conteúdo do `CLAUDE.md` adaptado para o formato da IDE.
94
+
95
+ ---
96
+
97
+ ## Verificar se funcionou
98
+
99
+ Ao abrir o projeto no Claude Code, você deve ver imediatamente:
100
+
101
+ ```
102
+ 👋 Olá! Bem-vindo ao CDP Edge — Quantum Tracking.
103
+
104
+ Sou o seu Orquestrador de Rastreamento. Vou configurar toda a
105
+ infraestrutura de tracking server-side para o seu projeto...
106
+ ```
107
+
108
+ Se não aparecer automaticamente, digitar:
109
+
110
+ ```
111
+ /cdp
112
+ ```
113
+
114
+ ou simplesmente:
115
+
116
+ ```
117
+ ative o master orchestrator do cdp edge
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Se o CDP Edge estiver em um caminho diferente
123
+
124
+ Editar o `CLAUDE.md` na raiz e ajustar o path:
125
+
126
+ ```markdown
127
+ <!-- Padrão: -->
128
+ Leia o arquivo: `cdp-edge/extracted-skill/tracking-events-generator/agents/master-orchestrator.md`
129
+
130
+ <!-- Se instalado em outro lugar: -->
131
+ Leia o arquivo: `ferramentas/cdp/extracted-skill/tracking-events-generator/agents/master-orchestrator.md`
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Estrutura de múltiplos projetos (workspace compartilhado)
137
+
138
+ Se você trabalha com vários clientes e quer uma instalação única do CDP Edge:
139
+
140
+ ```
141
+ workspace/
142
+ ├── cdp-edge/ ← instalação única compartilhada
143
+ ├── cliente-1/
144
+ │ ├── CLAUDE.md ← aponta para ../cdp-edge/...
145
+ │ └── src/
146
+ ├── cliente-2/
147
+ │ ├── CLAUDE.md ← aponta para ../cdp-edge/...
148
+ │ └── src/
149
+ ```
150
+
151
+ No `CLAUDE.md` de cada cliente, usar path relativo:
152
+
153
+ ```markdown
154
+ Leia o arquivo: `../cdp-edge/extracted-skill/tracking-events-generator/agents/master-orchestrator.md`
155
+ ```
@@ -0,0 +1,185 @@
1
+ # CDP Edge — Quick Start
2
+ > Do zero ao primeiro evento em produção.
3
+
4
+ ---
5
+
6
+ ## Pré-requisitos
7
+
8
+ | Ferramenta | Instalar |
9
+ |---|---|
10
+ | Node.js 18+ | nodejs.org |
11
+ | Wrangler CLI | `npm install -g wrangler` |
12
+ | Conta Cloudflare | cloudflare.com (plano gratuito suficiente) |
13
+ | Conta Meta (Pixel + token CAPI) | business.facebook.com |
14
+
15
+ ---
16
+
17
+ ## 1. Autenticar no Cloudflare
18
+
19
+ ```bash
20
+ wrangler login
21
+ ```
22
+
23
+ ---
24
+
25
+ ## 2. Criar o banco D1
26
+
27
+ ```bash
28
+ wrangler d1 create cdp-edge-db
29
+ ```
30
+
31
+ Copie o `database_id` retornado e cole no `wrangler.toml`:
32
+
33
+ ```toml
34
+ [[d1_databases]]
35
+ binding = "DB"
36
+ database_name = "cdp-edge-db"
37
+ database_id = "COLE_O_ID_AQUI"
38
+ ```
39
+
40
+ ---
41
+
42
+ ## 3. Aplicar o schema
43
+
44
+ ```bash
45
+ cd server-edge-tracker
46
+
47
+ wrangler d1 execute cdp-edge-db --file=schema.sql --remote
48
+ wrangler d1 execute cdp-edge-db --file=migrate-v2.sql --remote
49
+ wrangler d1 execute cdp-edge-db --file=migrate-v3.sql --remote
50
+ wrangler d1 execute cdp-edge-db --file=migrate-v4.sql --remote
51
+ wrangler d1 execute cdp-edge-db --file=migrate-v5.sql --remote
52
+ wrangler d1 execute cdp-edge-db --file=migrate-v6.sql --remote
53
+ ```
54
+
55
+ ---
56
+
57
+ ## 4. Configurar secrets
58
+
59
+ ```bash
60
+ wrangler secret put META_ACCESS_TOKEN
61
+ wrangler secret put GA4_API_SECRET
62
+ wrangler secret put TIKTOK_ACCESS_TOKEN
63
+ ```
64
+
65
+ Para WhatsApp CTWA (opcional):
66
+ ```bash
67
+ wrangler secret put WA_WEBHOOK_VERIFY_TOKEN
68
+ wrangler secret put WHATSAPP_TOKEN
69
+ wrangler secret put WHATSAPP_PHONE_NUMBER_ID
70
+ ```
71
+
72
+ ---
73
+
74
+ ## 5. Atualizar variáveis públicas no wrangler.toml
75
+
76
+ ```toml
77
+ [vars]
78
+ META_PIXEL_ID = "SEU_PIXEL_ID"
79
+ GA4_MEASUREMENT_ID = "G-XXXXXXXXXX"
80
+ TIKTOK_PIXEL_ID = "CXXXXXXXXXXXXXXX"
81
+ SITE_DOMAIN = "seudominio.com.br"
82
+ ```
83
+
84
+ ---
85
+
86
+ ## 6. Deploy
87
+
88
+ ```bash
89
+ wrangler deploy
90
+ ```
91
+
92
+ O Worker ficará disponível em:
93
+ ```
94
+ https://server-edge-tracker.SEU-USUARIO.workers.dev
95
+ ```
96
+
97
+ ---
98
+
99
+ ## 7. Testar o Worker
100
+
101
+ ```bash
102
+ # Health check
103
+ curl https://server-edge-tracker.SEU-USUARIO.workers.dev/health
104
+
105
+ # Evento de teste
106
+ curl -X POST https://server-edge-tracker.SEU-USUARIO.workers.dev/track \
107
+ -H "Content-Type: application/json" \
108
+ -d '{
109
+ "event": "PageView",
110
+ "url": "https://seudominio.com.br/",
111
+ "email": "teste@exemplo.com"
112
+ }'
113
+ ```
114
+
115
+ Resposta esperada: `{"success":true}`
116
+
117
+ ---
118
+
119
+ ## 8. Instalar o SDK no site
120
+
121
+ ```html
122
+ <!-- No <head> de todas as páginas -->
123
+ <script>
124
+ window.CDP_CONFIG = {
125
+ endpoint: 'https://server-edge-tracker.SEU-USUARIO.workers.dev/track',
126
+ pixelId: 'SEU_PIXEL_ID'
127
+ };
128
+ </script>
129
+ <script src="/js/cdpTrack.js" type="module" async></script>
130
+ ```
131
+
132
+ O SDK inicializa automaticamente e dispara `PageView` ao carregar.
133
+
134
+ ---
135
+
136
+ ## 9. Verificar no Meta Events Manager
137
+
138
+ ```
139
+ Meta Business Suite
140
+ → Gerenciador de Eventos
141
+ → Seu Pixel
142
+ → Atividade de Teste
143
+ → Filtrar por "Servidor"
144
+ ```
145
+
146
+ Você deve ver o `PageView` chegando com `action_source: website`.
147
+
148
+ ---
149
+
150
+ ## 10. (Opcional) Conectar domínio próprio
151
+
152
+ Para máxima eficácia (cookie first-party no domínio do cliente):
153
+
154
+ ```
155
+ Cloudflare Dashboard → DNS → Add record
156
+ Type: CNAME
157
+ Name: track
158
+ Target: server-edge-tracker.SEU-USUARIO.workers.dev
159
+ Proxy: ✅ (nuvem laranja)
160
+ ```
161
+
162
+ Adicionar ao `wrangler.toml`:
163
+ ```toml
164
+ [[routes]]
165
+ pattern = "track.seudominio.com.br/*"
166
+ zone_name = "seudominio.com.br"
167
+ ```
168
+
169
+ ```bash
170
+ wrangler deploy
171
+ ```
172
+
173
+ Ver detalhes: `agents/domain-setup-agent.md`
174
+
175
+ ---
176
+
177
+ ## Próximos passos
178
+
179
+ | O que fazer | Onde está |
180
+ |---|---|
181
+ | Configurar WhatsApp CTWA | `agents/whatsapp-ctwa-setup-agent.md` |
182
+ | Ativar R2 audit log | `agents/r2-setup-agent.md` |
183
+ | Configurar gateways de pagamento | `agents/webhook-agent.md` |
184
+ | Ver todos os eventos disponíveis | `docs/events-reference.md` |
185
+ | Ver API do SDK browser | `docs/sdk-reference.md` |
@@ -0,0 +1,371 @@
1
+ # CDP Edge — SDK Reference
2
+ > API pública do `cdpTrack.js` — todas as funções, parâmetros e exemplos.
3
+
4
+ ---
5
+
6
+ ## Instalação
7
+
8
+ ```html
9
+ <!-- No <head> -->
10
+ <script type="module">
11
+ import { init } from '/js/cdpTrack.js';
12
+ await init();
13
+ </script>
14
+ ```
15
+
16
+ Após `init()`, todas as funções ficam disponíveis em `window.cdpTrack`.
17
+
18
+ ---
19
+
20
+ ## init()
21
+
22
+ Inicializa o SDK completo. Deve ser chamado uma vez por página.
23
+
24
+ ```javascript
25
+ import { init } from '/js/cdpTrack.js';
26
+ await init();
27
+ ```
28
+
29
+ **O que faz internamente:**
30
+ 1. Google Consent Mode v2 (defaults negados — LGPD compliant)
31
+ 2. Anti-blocking (retry automático com beacon fallback)
32
+ 3. Micro-events (scroll, tempo, vídeo, clique, hover)
33
+ 4. Auto-captura de formulários de lead
34
+ 5. Salva contexto de afiliado no localStorage (UTM resurrection)
35
+ 6. passCheckoutParams (injeta `_cdp_uid` nos links de checkout)
36
+ 7. Behavior Engine (scoring avançado)
37
+
38
+ ---
39
+
40
+ ## track(eventName, data?)
41
+
42
+ Função principal. Envia qualquer evento para o Worker.
43
+
44
+ ```javascript
45
+ await window.cdpTrack.track('EventName', {
46
+ // dados do evento
47
+ });
48
+ ```
49
+
50
+ **Parâmetros:**
51
+
52
+ | Parâmetro | Tipo | Descrição |
53
+ |---|---|---|
54
+ | `eventName` | `string` | Nome do evento (ver Events Reference) |
55
+ | `data` | `object` | Dados do evento (opcional) |
56
+
57
+ **O que é enviado automaticamente** (sem precisar passar):
58
+ - `event_id` — UUID único gerado no browser
59
+ - `user_id` — `_cdp_uid` (cookie first-party)
60
+ - `session_id` — sessionStorage ID
61
+ - `utms` — utm_source, utm_medium, utm_campaign, utm_content, utm_term
62
+ - `click_ids` — fbp, fbc, gclid, wbraid, gbraid, ttclid, rclid
63
+ - `page_url` — `window.location.href`
64
+ - `referrer` — `document.referrer`
65
+ - `user_agent` — `navigator.userAgent`
66
+ - `behavioral_data` — engagement score completo
67
+
68
+ **Retorno:**
69
+ ```javascript
70
+ {
71
+ success: true,
72
+ event_id: "1711234567890_abc123def",
73
+ result: { ... }
74
+ }
75
+ // ou em caso de erro:
76
+ {
77
+ success: false,
78
+ error: "mensagem de erro",
79
+ event_id: "...",
80
+ attempts: 3
81
+ }
82
+ ```
83
+
84
+ ---
85
+
86
+ ## trackLead(userData, form?)
87
+
88
+ Atalho para captura de lead. Aceita dados crus — o Worker faz SHA256.
89
+
90
+ ```javascript
91
+ await window.cdpTrack.trackLead({
92
+ email: 'fulano@exemplo.com',
93
+ phone: '11999998888',
94
+ firstName: 'João',
95
+ lastName: 'Silva'
96
+ });
97
+
98
+ // Com formulário HTML (extrai campos automaticamente)
99
+ const form = document.querySelector('#form-lead');
100
+ await window.cdpTrack.trackLead({}, form);
101
+ ```
102
+
103
+ **Parâmetros aceitos:**
104
+
105
+ | Campo | Tipo | Normalização automática |
106
+ |---|---|---|
107
+ | `email` | string | lowercase + trim |
108
+ | `phone` | string | DDI 55 + somente dígitos |
109
+ | `firstName` | string | Title Case |
110
+ | `lastName` | string | Title Case |
111
+ | `city` | string | lowercase + sem acentos |
112
+ | `state` | string | uppercase |
113
+ | `zip` | string | somente dígitos |
114
+ | `country` | string | lowercase |
115
+
116
+ ---
117
+
118
+ ## trackPurchase(orderData)
119
+
120
+ Atalho para compra confirmada.
121
+
122
+ ```javascript
123
+ await window.cdpTrack.trackPurchase({
124
+ value: 297.00,
125
+ currency: 'BRL',
126
+ order_id: 'ORD-12345',
127
+ email: 'fulano@exemplo.com',
128
+ content_name: 'Curso XYZ',
129
+ content_ids: ['SKU-001']
130
+ });
131
+ ```
132
+
133
+ ---
134
+
135
+ ## trackViewContent(contentData)
136
+
137
+ Visualização de produto ou oferta.
138
+
139
+ ```javascript
140
+ await window.cdpTrack.trackViewContent({
141
+ content_name: 'Página de Vendas — Curso XYZ',
142
+ content_type: 'product',
143
+ value: 297.00,
144
+ currency: 'BRL'
145
+ });
146
+ ```
147
+
148
+ ---
149
+
150
+ ## trackAddToCart(cartData)
151
+
152
+ Adição ao carrinho.
153
+
154
+ ```javascript
155
+ await window.cdpTrack.trackAddToCart({
156
+ content_id: 'SKU-001',
157
+ content_name: 'Produto XYZ',
158
+ value: 97.00,
159
+ currency: 'BRL',
160
+ num_items: 1
161
+ });
162
+ ```
163
+
164
+ ---
165
+
166
+ ## updateConsent(params)
167
+
168
+ Atualiza o Google Consent Mode v2 após o usuário aceitar o banner de cookies.
169
+
170
+ ```javascript
171
+ // Usuário aceitou tudo
172
+ window.cdpTrack.updateConsent({ analytics: true, ads: true });
173
+
174
+ // Só analytics, rejeitou anúncios
175
+ window.cdpTrack.updateConsent({ analytics: true, ads: false });
176
+
177
+ // Rejeitou tudo
178
+ window.cdpTrack.updateConsent({ analytics: false, ads: false });
179
+ ```
180
+
181
+ O consentimento é persistido no `localStorage` e restaurado automaticamente em visitas futuras.
182
+
183
+ ---
184
+
185
+ ## getUserId()
186
+
187
+ Retorna o `_cdp_uid` (cookie first-party, 365 dias).
188
+
189
+ ```javascript
190
+ const uid = window.cdpTrack.getUserId();
191
+ // "1711234567890_abc123def"
192
+ ```
193
+
194
+ ---
195
+
196
+ ## getUserIdWithFallback()
197
+
198
+ Retorna o `_cdp_uid` com fallback para o `localStorage` (útil para afiliados e links em nova aba).
199
+
200
+ ```javascript
201
+ const uid = window.cdpTrack.getUserIdWithFallback();
202
+ ```
203
+
204
+ **Prioridade:** cookie → localStorage (`_cdp_aff`) → string vazia.
205
+
206
+ ---
207
+
208
+ ## getUTMs()
209
+
210
+ Retorna os UTMs capturados da URL atual.
211
+
212
+ ```javascript
213
+ const utms = window.cdpTrack.getUTMs();
214
+ // {
215
+ // utm_source: "meta",
216
+ // utm_medium: "paid",
217
+ // utm_campaign: "curso-xyz",
218
+ // utm_content: "video-1",
219
+ // utm_term: ""
220
+ // }
221
+ ```
222
+
223
+ ---
224
+
225
+ ## getUTMsWithFallback()
226
+
227
+ Retorna UTMs da URL ou do localStorage (fallback de 30 dias — attribution resurrection para afiliados).
228
+
229
+ ```javascript
230
+ const utms = window.cdpTrack.getUTMsWithFallback();
231
+ ```
232
+
233
+ **Prioridade:** URL params → localStorage (`_cdp_aff`) → objeto vazio.
234
+
235
+ ---
236
+
237
+ ## getSessionId()
238
+
239
+ Retorna o session ID (cross-tab, expira ao fechar o browser).
240
+
241
+ ```javascript
242
+ const sid = window.cdpTrack.getSessionId();
243
+ // "1711234567890_xyz456abc"
244
+ ```
245
+
246
+ ---
247
+
248
+ ## passCheckoutParams(options?)
249
+
250
+ Injeta UTMs e `_cdp_uid` nos links de checkout externos. Chamado automaticamente em `init()`.
251
+
252
+ ```javascript
253
+ // Chamada manual com configuração customizada
254
+ passCheckoutParams({
255
+ platforms: ['hotmart', 'kiwify', 'ticto'],
256
+ domains: ['meusite.com/checkout'] // domínios customizados
257
+ });
258
+ ```
259
+
260
+ **Plataformas suportadas e parâmetros injetados:**
261
+
262
+ | Plataforma | Parâmetros |
263
+ |---|---|
264
+ | Hotmart | `xcod` (user_id) + `sck` (utm_source\|medium\|campaign\|content\|term) |
265
+ | Kiwify | `src` (utm_source) + `utm_medium` + `utm_campaign` |
266
+ | Eduzz | `src` (utm_source) |
267
+ | Monetizze | `src` (utm_source) |
268
+ | CartPanda | utm_* passthrough direto |
269
+ | Ticto | utm_* + `user_id` |
270
+ | Custom | utm_* + `cdp_uid` |
271
+
272
+ **Nota:** links adicionados dinamicamente (lazy load, pop-ups) são rastreados automaticamente via `MutationObserver`.
273
+
274
+ ---
275
+
276
+ ## setupAutoFormCapture()
277
+
278
+ Intercepta submits de formulários com campos de email ou telefone e dispara `trackLead()` automaticamente. Chamado em `init()` por padrão.
279
+
280
+ ```javascript
281
+ // Já é chamado em init(). Para uso manual:
282
+ setupAutoFormCapture();
283
+ ```
284
+
285
+ Para desabilitar:
286
+ ```javascript
287
+ // Em tracking.config.js
288
+ export default {
289
+ autoCaptureForms: false,
290
+ // ...
291
+ }
292
+ ```
293
+
294
+ ---
295
+
296
+ ## Micro-events — getVideoSummary()
297
+
298
+ Retorna o estado agregado de todos os vídeos na página (útil para VSL multi-vídeo).
299
+
300
+ ```javascript
301
+ import { getVideoSummary } from '/js/micro-events.js';
302
+
303
+ const summary = getVideoSummary();
304
+ // {
305
+ // totalVideos: 2,
306
+ // startedCount: 1,
307
+ // completedCount: 0,
308
+ // maxProgress: 75 // maior % atingida entre todos os vídeos
309
+ // }
310
+ ```
311
+
312
+ ---
313
+
314
+ ## Eventos DOM customizados
315
+
316
+ O `micro-events.js` emite eventos DOM que a página pode ouvir para reagir ao comportamento do usuário:
317
+
318
+ ```javascript
319
+ // Destravar CTA quando vídeo atingir 75%
320
+ window.addEventListener('cdp:VideoProgress', (e) => {
321
+ if (e.detail.progress_percent >= 75) {
322
+ document.getElementById('cta').style.display = 'block';
323
+ }
324
+ });
325
+
326
+ // Mostrar formulário de lead ao 50% do scroll
327
+ window.addEventListener('cdp:Scroll', (e) => {
328
+ if (e.detail.scroll_depth >= 50) {
329
+ document.getElementById('lead-form').classList.remove('hidden');
330
+ }
331
+ });
332
+
333
+ // Eventos disponíveis:
334
+ // cdp:Scroll, cdp:TimeOnPage, cdp:VideoPlay, cdp:VideoProgress,
335
+ // cdp:VideoComplete, cdp:VideoDropout, cdp:VideoPause, cdp:VideoSeek,
336
+ // cdp:Click, cdp:CTAHover, cdp:RapidClicks
337
+ ```
338
+
339
+ ---
340
+
341
+ ## tracking.config.js — Configuração do SDK
342
+
343
+ ```javascript
344
+ // extracted-skill/tracking-events-generator/tracking.config.js
345
+ export default {
346
+ // IDs de plataformas
347
+ metaPixelId: 'SEU_PIXEL_ID',
348
+ ga4Id: 'G-XXXXXXXXXX',
349
+ tiktokPixelId: 'CXXXXXXXXXXXXXXX',
350
+
351
+ // Endpoint do Worker
352
+ endpoint: 'https://track.seudominio.com.br/track',
353
+
354
+ // Comportamento
355
+ autoCaptureForms: true, // captura formulários automaticamente
356
+ passCheckoutParams: true, // injeta params em links de checkout
357
+ initBehaviorEngine: true, // scoring avançado
358
+
359
+ // Plataformas para passCheckoutParams
360
+ platforms: ['hotmart', 'kiwify', 'ticto'],
361
+
362
+ // Google Consent Mode v2
363
+ consent: {
364
+ defaultDenied: true, // começa negado (LGPD compliant)
365
+ waitForUpdate: 500, // ms aguardar CMP
366
+ urlPassthrough: true, // preserva gclid/fbclid sem consent
367
+ },
368
+
369
+ debug: false // true para logs no console
370
+ };
371
+ ```