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.
- package/bin/cdp-edge.js +8 -0
- package/docs/CI-CD-SETUP.md +217 -0
- package/docs/PixelBuilder-Documentacao-Completa (2).docx +0 -0
- package/docs/events-reference.md +359 -0
- package/docs/installation.md +155 -0
- package/docs/quick-start.md +185 -0
- package/docs/sdk-reference.md +371 -0
- package/docs/whatsapp-ctwa.md +209 -0
- package/extracted-skill/tracking-events-generator/INDEX.md +94 -0
- package/extracted-skill/tracking-events-generator/INSTALACAO-CDPEDGE.md +58 -0
- package/extracted-skill/tracking-events-generator/INTEGRACAO-COMPLETA.md +594 -0
- package/extracted-skill/tracking-events-generator/MELHORIAS-IMPLEMENTADAS.md +412 -0
- package/extracted-skill/tracking-events-generator/Premium-Tracking-Intelligence-Resumo.md +333 -0
- package/extracted-skill/tracking-events-generator/SKILL.md +257 -0
- package/extracted-skill/tracking-events-generator/advanced-matching.js +364 -0
- package/extracted-skill/tracking-events-generator/agents/ab-testing-agent.md +54 -0
- package/extracted-skill/tracking-events-generator/agents/attribution-agent.md +1304 -0
- package/extracted-skill/tracking-events-generator/agents/bing-agent.md +76 -0
- package/extracted-skill/tracking-events-generator/agents/browser-tracking.md +264 -0
- package/extracted-skill/tracking-events-generator/agents/code-guardian-agent.md +149 -0
- package/extracted-skill/tracking-events-generator/agents/compliance-agent.md +2077 -0
- package/extracted-skill/tracking-events-generator/agents/crm-integration-agent.md +1419 -0
- package/extracted-skill/tracking-events-generator/agents/dashboard-agent.md +456 -0
- package/extracted-skill/tracking-events-generator/agents/database-agent.md +667 -0
- package/extracted-skill/tracking-events-generator/agents/debug-agent.md +1455 -0
- package/extracted-skill/tracking-events-generator/agents/domain-setup-agent.md +224 -0
- package/extracted-skill/tracking-events-generator/agents/email-agent.md +61 -0
- package/extracted-skill/tracking-events-generator/agents/fingerprint-agent.md +52 -0
- package/extracted-skill/tracking-events-generator/agents/google-agent.md +109 -0
- package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +365 -0
- package/extracted-skill/tracking-events-generator/agents/intelligence-scheduling.md +643 -0
- package/extracted-skill/tracking-events-generator/agents/linkedin-agent.md +62 -0
- package/extracted-skill/tracking-events-generator/agents/localization-agent.md +55 -0
- package/extracted-skill/tracking-events-generator/agents/ltv-predictor-agent.md +59 -0
- package/extracted-skill/tracking-events-generator/agents/master-feedback-loop.md +900 -0
- package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +1922 -0
- package/extracted-skill/tracking-events-generator/agents/memory-agent.json +109 -0
- package/extracted-skill/tracking-events-generator/agents/memory-agent.md +703 -0
- package/extracted-skill/tracking-events-generator/agents/meta-agent.md +110 -0
- package/extracted-skill/tracking-events-generator/agents/page-analyzer.md +255 -0
- package/extracted-skill/tracking-events-generator/agents/performance-agent.md +1157 -0
- package/extracted-skill/tracking-events-generator/agents/performance-optimization-agent.md +1432 -0
- package/extracted-skill/tracking-events-generator/agents/pinterest-agent.md +310 -0
- package/extracted-skill/tracking-events-generator/agents/premium-tracking-intelligence-agent.md +849 -0
- package/extracted-skill/tracking-events-generator/agents/r2-setup-agent.md +250 -0
- package/extracted-skill/tracking-events-generator/agents/reddit-agent.md +313 -0
- package/extracted-skill/tracking-events-generator/agents/security-enterprise-agent.md +1752 -0
- package/extracted-skill/tracking-events-generator/agents/server-tracking.md +1188 -0
- package/extracted-skill/tracking-events-generator/agents/spotify-agent.md +383 -0
- package/extracted-skill/tracking-events-generator/agents/tiktok-agent.md +111 -0
- package/extracted-skill/tracking-events-generator/agents/tracking-plan-agent.md +364 -0
- package/extracted-skill/tracking-events-generator/agents/validator-agent.md +267 -0
- package/extracted-skill/tracking-events-generator/agents/webhook-agent.md +69 -0
- package/extracted-skill/tracking-events-generator/agents/whatsapp-agent.md +76 -0
- package/extracted-skill/tracking-events-generator/agents/whatsapp-ctwa-setup-agent.md +699 -0
- package/extracted-skill/tracking-events-generator/agents/youtube-agent.md +422 -0
- package/extracted-skill/tracking-events-generator/anti-blocking.js +285 -0
- package/extracted-skill/tracking-events-generator/cdpTrack.js +641 -0
- package/extracted-skill/tracking-events-generator/contracts/api-versions.json +368 -0
- package/extracted-skill/tracking-events-generator/docs/guia-cloudflare-iniciante.md +107 -0
- package/extracted-skill/tracking-events-generator/engagement-scoring.js +226 -0
- package/extracted-skill/tracking-events-generator/evals/evals.json +235 -0
- package/extracted-skill/tracking-events-generator/integration-test.js +497 -0
- package/extracted-skill/tracking-events-generator/knowledge-base.md +2894 -0
- package/extracted-skill/tracking-events-generator/micro-events.js +992 -0
- package/extracted-skill/tracking-events-generator/models/captura-de-lead.md +78 -0
- package/extracted-skill/tracking-events-generator/models/captura-lead-evento-externo.md +99 -0
- package/extracted-skill/tracking-events-generator/models/checkout-proprio.md +111 -0
- package/extracted-skill/tracking-events-generator/models/multi-step-checkout.md +672 -0
- package/extracted-skill/tracking-events-generator/models/pagina-obrigado.md +55 -0
- package/extracted-skill/tracking-events-generator/models/pinterest/conversions-api-template.js +144 -0
- package/extracted-skill/tracking-events-generator/models/pinterest/event-mappings.json +48 -0
- package/extracted-skill/tracking-events-generator/models/pinterest/tag-template.js +28 -0
- package/extracted-skill/tracking-events-generator/models/quiz-funnel.md +68 -0
- package/extracted-skill/tracking-events-generator/models/reddit/conversions-api-template.js +205 -0
- package/extracted-skill/tracking-events-generator/models/reddit/event-mappings.json +56 -0
- package/extracted-skill/tracking-events-generator/models/reddit/pixel-template.js +19 -0
- package/extracted-skill/tracking-events-generator/models/scenarios/behavior-engine.js +425 -0
- package/extracted-skill/tracking-events-generator/models/scenarios/real-estate-logic.md +50 -0
- package/extracted-skill/tracking-events-generator/models/scenarios/sales-page-logic.md +50 -0
- package/extracted-skill/tracking-events-generator/models/trafego-direto.md +582 -0
- package/extracted-skill/tracking-events-generator/models/webinar-registration.md +63 -0
- package/extracted-skill/tracking-events-generator/tracking.config.js +46 -0
- package/extracted-skill/tracking-events-generator/walkthrough.md +26 -0
- package/package.json +4 -1
- package/server-edge-tracker/INSTALAR.md +328 -0
- package/server-edge-tracker/migrate-new-db.sql +137 -0
- package/server-edge-tracker/migrate-v2.sql +16 -0
- package/server-edge-tracker/migrate-v3.sql +6 -0
- package/server-edge-tracker/migrate-v4.sql +18 -0
- package/server-edge-tracker/migrate-v5.sql +17 -0
- package/server-edge-tracker/migrate-v6.sql +24 -0
- package/server-edge-tracker/migrate.sql +111 -0
- package/server-edge-tracker/schema.sql +265 -0
- package/server-edge-tracker/worker.js +2574 -0
- package/server-edge-tracker/wrangler.toml +85 -0
- package/templates/afiliado-sem-landing.md +312 -0
- package/templates/install/.claude/commands/cdp.md +1 -0
- package/templates/install/CLAUDE.md +65 -0
- 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
|
+
```
|