cdp-edge 1.10.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/install/.claude/commands/cdp.md +1 -0
- package/templates/install/CLAUDE.md +65 -0
package/bin/cdp-edge.js
CHANGED
|
@@ -11,6 +11,7 @@ import { runAnalyze } from '../dist/commands/analyze.js';
|
|
|
11
11
|
import { runServer } from '../dist/commands/server.js';
|
|
12
12
|
import { runValidate } from '../dist/commands/validate.js';
|
|
13
13
|
import { runInfra } from '../dist/commands/infra.js';
|
|
14
|
+
import { runInstall } from '../dist/commands/install.js';
|
|
14
15
|
|
|
15
16
|
const program = new Command();
|
|
16
17
|
|
|
@@ -50,4 +51,11 @@ program
|
|
|
50
51
|
.description('Mostra guia de setup de infraestrutura Cloudflare')
|
|
51
52
|
.action(runInfra);
|
|
52
53
|
|
|
54
|
+
program
|
|
55
|
+
.command('install [dir]')
|
|
56
|
+
.description('Instala o CDP Edge em um projeto cliente e habilita /cdp no Claude Code')
|
|
57
|
+
.option('-n, --name <name>', 'Nome do projeto')
|
|
58
|
+
.option('--cursor', 'Criar .cursorrules para Cursor IDE')
|
|
59
|
+
.action(runInstall);
|
|
60
|
+
|
|
53
61
|
program.parse(process.argv);
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# CDP Edge - Setup CI/CD e Versionamento Automático
|
|
2
|
+
|
|
3
|
+
## Fluxo Escolhido
|
|
4
|
+
|
|
5
|
+
Escolha **UMA** das opções:
|
|
6
|
+
|
|
7
|
+
| Opção | Versão | Quando usar |
|
|
8
|
+
|-------|--------|------------|
|
|
9
|
+
| **semantic-release** | Automática | Commits convencionais, time pequeno |
|
|
10
|
+
| **Manual workflow** | Controlada | Quer aprovar cada release |
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## PASSO 1: Criar Conta e Token no npm
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# 1. Criar conta em https://www.npmjs.com/signup
|
|
18
|
+
|
|
19
|
+
# 2. Login
|
|
20
|
+
npm login
|
|
21
|
+
|
|
22
|
+
# 3. Criar token de automação
|
|
23
|
+
# Vá em: https://www.npmjs.com/settings/tokens
|
|
24
|
+
# - Clique "Create New Token"
|
|
25
|
+
# - Nome: "GitHub Actions"
|
|
26
|
+
# - Tipo: "Automation"
|
|
27
|
+
# - Copie o token gerado
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## PASSO 2: Configurar Secrets no GitHub
|
|
33
|
+
|
|
34
|
+
Vá no repositório: `Settings` → `Secrets and variables` → `Actions` → `New repository secret`
|
|
35
|
+
|
|
36
|
+
**Adicione:**
|
|
37
|
+
|
|
38
|
+
| Nome | Valor |
|
|
39
|
+
|------|-------|
|
|
40
|
+
| `NPM_TOKEN` | Token do passo 1 |
|
|
41
|
+
| `GITHUB_TOKEN` | Já existe automaticamente (não precisa criar) |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## PASSO 3: Configurar o Workflow
|
|
46
|
+
|
|
47
|
+
### Opção A: semantic-release (Automática)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# 1. Adicionar dependências
|
|
51
|
+
npm install -D semantic-release @semantic-release/changelog @semantic-release/commit-analyzer @semantic-release/github @semantic-release/npm @semantic-release/release-notes-generator
|
|
52
|
+
|
|
53
|
+
# 2. O arquivo .releaserc.json já está criado
|
|
54
|
+
# 3. O workflow .github/workflows/release.yml já está criado
|
|
55
|
+
# 4. Commit e push
|
|
56
|
+
git add .
|
|
57
|
+
git commit -m "ci: add semantic-release automation"
|
|
58
|
+
git push
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Como usar:**
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Nova feature
|
|
65
|
+
git commit -m "feat: add Reddit support"
|
|
66
|
+
|
|
67
|
+
# Bugfix
|
|
68
|
+
git commit -m "fix: correct TikTok endpoint"
|
|
69
|
+
|
|
70
|
+
# Breaking change
|
|
71
|
+
git commit -m "feat!: remove GTM support"
|
|
72
|
+
# ou
|
|
73
|
+
git commit -m "feat: add new API
|
|
74
|
+
|
|
75
|
+
BREAKING CHANGE: requires Node 20+"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Ao fazer push no `main`, o release é automático!
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### Opção B: Manual Workflow
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# 1. O arquivo .github/workflows/publish.yml já está criado
|
|
86
|
+
# 2. Commit e push
|
|
87
|
+
git add .
|
|
88
|
+
git commit -m "ci: add manual publish workflow"
|
|
89
|
+
git push
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Como usar:**
|
|
93
|
+
|
|
94
|
+
1. Vá em: `Actions` → `Publish to npm`
|
|
95
|
+
2. Clique `Run workflow`
|
|
96
|
+
3. Escolha o tipo: `patch`, `minor` ou `major`
|
|
97
|
+
4. Clique `Run workflow`
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## PASSO 4: Configurar Conventional Commits (Opcional mas recomendado)
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Instalar commitlint
|
|
105
|
+
npm install -D @commitlint/cli @commitlint/config-conventional
|
|
106
|
+
|
|
107
|
+
# Criar commitlint.config.js
|
|
108
|
+
echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
|
|
109
|
+
|
|
110
|
+
# Adicionar ao package.json scripts
|
|
111
|
+
# "prepare": "husky install"
|
|
112
|
+
# "commitlint": "commitlint --edit"
|
|
113
|
+
|
|
114
|
+
# Instalar husky
|
|
115
|
+
npm install -D husky
|
|
116
|
+
npx husky install
|
|
117
|
+
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Agora commits inválidos são bloqueados!
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Fluxo Completo de Desenvolvimento
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
Desenvolvimento
|
|
128
|
+
↓
|
|
129
|
+
git commit -m "feat: nova funcionalidade"
|
|
130
|
+
↓
|
|
131
|
+
git push origin main
|
|
132
|
+
↓
|
|
133
|
+
GitHub Actions detecta push
|
|
134
|
+
↓
|
|
135
|
+
┌─────────┐
|
|
136
|
+
│ semantic-│ (se Opção A)
|
|
137
|
+
│ release │──→ Calcula versão
|
|
138
|
+
└─────────┘
|
|
139
|
+
↓
|
|
140
|
+
┌─────────┐
|
|
141
|
+
│ CI/CD │──→ Build + Test
|
|
142
|
+
└─────────┘
|
|
143
|
+
↓
|
|
144
|
+
┌─────────┐
|
|
145
|
+
│ Publish │──→ npm publish
|
|
146
|
+
│ npm │
|
|
147
|
+
└─────────┘
|
|
148
|
+
↓
|
|
149
|
+
┌─────────┐
|
|
150
|
+
│GitHub │──→ Criar Release
|
|
151
|
+
│ Release │ + Changelog
|
|
152
|
+
└─────────┘
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Verificação
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Ver releases criados
|
|
161
|
+
npm view cdp-edge versions
|
|
162
|
+
|
|
163
|
+
# Ver changelog
|
|
164
|
+
# Vá em: https://github.com/seu-usuario/cdp-edge/releases
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Solução de Problemas
|
|
170
|
+
|
|
171
|
+
### Erro: "401 Unauthorized"
|
|
172
|
+
→ Verifique se `NPM_TOKEN` está correto no GitHub Secrets
|
|
173
|
+
|
|
174
|
+
### Erro: "403 Forbidden"
|
|
175
|
+
→ Verifique se o nome do pacote está disponível no npm
|
|
176
|
+
|
|
177
|
+
### Release não aparece
|
|
178
|
+
→ Verifique se o workflow falhou em `Actions`
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Dicas Avançadas
|
|
183
|
+
|
|
184
|
+
### Pre-release (beta, alpha)
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
git commit -m "feat: add beta feature
|
|
188
|
+
|
|
189
|
+
Release: 1.1.0-beta.1"
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Ignorar commits no release
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
# .releaserc.json
|
|
196
|
+
{
|
|
197
|
+
"branches": ["main"],
|
|
198
|
+
"tagFormat": "v${version}",
|
|
199
|
+
"plugins": [
|
|
200
|
+
"@semantic-release/commit-analyzer",
|
|
201
|
+
{
|
|
202
|
+
"preset": "conventionalcommits",
|
|
203
|
+
"releaseRules": [
|
|
204
|
+
{ "type": "chore", "scope": "deps", "release": "patch" }
|
|
205
|
+
]
|
|
206
|
+
}
|
|
207
|
+
]
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Multiple publish channels
|
|
212
|
+
|
|
213
|
+
Use scopes para diferentes canais:
|
|
214
|
+
```bash
|
|
215
|
+
npm publish --tag beta # @beta
|
|
216
|
+
npm publish --tag next # @next
|
|
217
|
+
```
|
|
Binary file
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
# CDP Edge — Events Reference
|
|
2
|
+
> Catálogo completo de todos os eventos, payloads e mapeamento por plataforma.
|
|
3
|
+
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Como enviar um evento
|
|
7
|
+
|
|
8
|
+
### Via SDK browser (cdpTrack.js)
|
|
9
|
+
```javascript
|
|
10
|
+
// Genérico
|
|
11
|
+
window.cdpTrack.track('EventName', { param1: 'valor', param2: 'valor' });
|
|
12
|
+
|
|
13
|
+
// Atalhos
|
|
14
|
+
window.cdpTrack.trackLead({ email: '...', phone: '...' });
|
|
15
|
+
window.cdpTrack.trackPurchase({ value: 97, currency: 'BRL', order_id: '...' });
|
|
16
|
+
window.cdpTrack.trackViewContent({ content_name: '...', value: 97 });
|
|
17
|
+
window.cdpTrack.trackAddToCart({ content_id: '...', value: 97 });
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Via Worker direto (server-to-server)
|
|
21
|
+
```bash
|
|
22
|
+
curl -X POST https://track.seudominio.com.br/track \
|
|
23
|
+
-H "Content-Type: application/json" \
|
|
24
|
+
-d '{ "event": "Lead", "email": "fulano@exemplo.com", "phone": "11999998888" }'
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Eventos Principais
|
|
30
|
+
|
|
31
|
+
### PageView
|
|
32
|
+
Disparado automaticamente pelo SDK ao carregar qualquer página.
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"event": "PageView",
|
|
37
|
+
"url": "https://seudominio.com.br/pagina",
|
|
38
|
+
"title": "Título da Página"
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
| Plataforma | Nome do evento |
|
|
43
|
+
|---|---|
|
|
44
|
+
| Meta CAPI | `PageView` |
|
|
45
|
+
| GA4 | `page_view` |
|
|
46
|
+
| TikTok | `PageView` |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
### Lead
|
|
51
|
+
Captura de lead com dados pessoais. O Worker faz SHA256 automaticamente — enviar dados crus.
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"event": "Lead",
|
|
56
|
+
"email": "fulano@exemplo.com",
|
|
57
|
+
"phone": "11999998888",
|
|
58
|
+
"firstName": "João",
|
|
59
|
+
"lastName": "Silva",
|
|
60
|
+
"city": "São Paulo",
|
|
61
|
+
"state": "SP",
|
|
62
|
+
"zip": "01310100",
|
|
63
|
+
"country": "BR"
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
| Plataforma | Nome do evento |
|
|
68
|
+
|---|---|
|
|
69
|
+
| Meta CAPI | `Lead` |
|
|
70
|
+
| GA4 | `generate_lead` |
|
|
71
|
+
| TikTok | `SubmitForm` |
|
|
72
|
+
| Pinterest | `lead` |
|
|
73
|
+
| Reddit | `Lead` |
|
|
74
|
+
| LinkedIn | `LEAD` |
|
|
75
|
+
|
|
76
|
+
**Campos obrigatórios:** pelo menos um entre `email` ou `phone`.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### Purchase
|
|
81
|
+
Compra confirmada. Pode vir do browser ou do webhook de gateway.
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"event": "Purchase",
|
|
86
|
+
"value": 297.00,
|
|
87
|
+
"currency": "BRL",
|
|
88
|
+
"order_id": "ORD-12345",
|
|
89
|
+
"email": "fulano@exemplo.com",
|
|
90
|
+
"phone": "11999998888",
|
|
91
|
+
"content_name": "Curso XYZ",
|
|
92
|
+
"content_ids": ["SKU-001"]
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
| Plataforma | Nome do evento |
|
|
97
|
+
|---|---|
|
|
98
|
+
| Meta CAPI | `Purchase` |
|
|
99
|
+
| GA4 | `purchase` |
|
|
100
|
+
| TikTok | `CompletePayment` |
|
|
101
|
+
| Pinterest | `checkout` |
|
|
102
|
+
| Reddit | `Purchase` |
|
|
103
|
+
| LinkedIn | `PURCHASE` |
|
|
104
|
+
|
|
105
|
+
**Campos obrigatórios:** `value`, `currency`.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### InitiateCheckout
|
|
110
|
+
Clique no botão de compra ou entrada na página de checkout.
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"event": "InitiateCheckout",
|
|
115
|
+
"value": 297.00,
|
|
116
|
+
"currency": "BRL",
|
|
117
|
+
"content_name": "Curso XYZ",
|
|
118
|
+
"content_ids": ["SKU-001"]
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
| Plataforma | Nome do evento |
|
|
123
|
+
|---|---|
|
|
124
|
+
| Meta CAPI | `InitiateCheckout` |
|
|
125
|
+
| GA4 | `begin_checkout` |
|
|
126
|
+
| TikTok | `InitiateCheckout` |
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
### ViewContent
|
|
131
|
+
Visualização de produto, oferta ou conteúdo de valor.
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"event": "ViewContent",
|
|
136
|
+
"content_name": "Página de Vendas — Curso XYZ",
|
|
137
|
+
"content_type": "product",
|
|
138
|
+
"value": 297.00,
|
|
139
|
+
"currency": "BRL",
|
|
140
|
+
"content_ids": ["SKU-001"]
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
| Plataforma | Nome do evento |
|
|
145
|
+
|---|---|
|
|
146
|
+
| Meta CAPI | `ViewContent` |
|
|
147
|
+
| GA4 | `view_item` |
|
|
148
|
+
| TikTok | `ViewContent` |
|
|
149
|
+
| Pinterest | `pagevisit` |
|
|
150
|
+
| Reddit | `ViewContent` |
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
### AddToCart
|
|
155
|
+
Adição ao carrinho (e-commerce ou checkout multi-produto).
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"event": "AddToCart",
|
|
160
|
+
"value": 97.00,
|
|
161
|
+
"currency": "BRL",
|
|
162
|
+
"content_name": "Produto XYZ",
|
|
163
|
+
"content_ids": ["SKU-002"],
|
|
164
|
+
"num_items": 1
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
| Plataforma | Nome do evento |
|
|
169
|
+
|---|---|
|
|
170
|
+
| Meta CAPI | `AddToCart` |
|
|
171
|
+
| GA4 | `add_to_cart` |
|
|
172
|
+
| TikTok | `AddToCart` |
|
|
173
|
+
| Pinterest | `addtocart` |
|
|
174
|
+
| Reddit | `AddToCart` |
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
### CompleteRegistration
|
|
179
|
+
Cadastro completo (criação de conta, inscrição em lista, acesso liberado).
|
|
180
|
+
|
|
181
|
+
```json
|
|
182
|
+
{
|
|
183
|
+
"event": "CompleteRegistration",
|
|
184
|
+
"email": "fulano@exemplo.com",
|
|
185
|
+
"content_name": "Webinar Gratuito XYZ"
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
| Plataforma | Nome do evento |
|
|
190
|
+
|---|---|
|
|
191
|
+
| Meta CAPI | `CompleteRegistration` |
|
|
192
|
+
| GA4 | `sign_up` |
|
|
193
|
+
| TikTok | `CompleteRegistration` |
|
|
194
|
+
| LinkedIn | `REGISTRATION` |
|
|
195
|
+
| Spotify | `SIGN_UP` |
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
### Contact
|
|
200
|
+
Contato via WhatsApp (CTWA — Click to WhatsApp). Disparado automaticamente pelo webhook.
|
|
201
|
+
|
|
202
|
+
```json
|
|
203
|
+
{
|
|
204
|
+
"event": "Contact",
|
|
205
|
+
"phone": "5511999998888",
|
|
206
|
+
"ctwa_clid": "ARAkLgFgg...",
|
|
207
|
+
"action_source": "chat"
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
| Plataforma | Nome do evento |
|
|
212
|
+
|---|---|
|
|
213
|
+
| Meta CAPI | `Contact` (action_source: "chat") |
|
|
214
|
+
|
|
215
|
+
**Nota:** Este evento é gerado automaticamente pelo `processWhatsAppWebhook()` — não precisa ser disparado manualmente.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Eventos de Micro-Engajamento
|
|
220
|
+
|
|
221
|
+
Gerados automaticamente pelo `micro-events.js`. Salvos no D1 (`behavioral_events`). Contribuem para o engagement score mas **não são enviados às plataformas de anúncio** individualmente.
|
|
222
|
+
|
|
223
|
+
### Scroll
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"event": "Scroll",
|
|
227
|
+
"scroll_depth": 75,
|
|
228
|
+
"scroll_percent": 78,
|
|
229
|
+
"signal_strength": 3.0,
|
|
230
|
+
"time_on_page": 45
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### TimeOnPage
|
|
235
|
+
```json
|
|
236
|
+
{
|
|
237
|
+
"event": "TimeOnPage",
|
|
238
|
+
"time_on_page": 180,
|
|
239
|
+
"intention_level": "comprador",
|
|
240
|
+
"signal_strength": 4.0
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
**Níveis:** `curioso` (10s) → `interessado` (60s) → `comprador` (180s)
|
|
244
|
+
|
|
245
|
+
### VideoPlay / VideoProgress / VideoComplete
|
|
246
|
+
```json
|
|
247
|
+
{
|
|
248
|
+
"event": "VideoProgress",
|
|
249
|
+
"video_id": "vsl-principal",
|
|
250
|
+
"video_platform": "youtube",
|
|
251
|
+
"progress_percent": 75,
|
|
252
|
+
"progress_second": 423,
|
|
253
|
+
"engagement_score": 5.0,
|
|
254
|
+
"video_summary": {
|
|
255
|
+
"totalVideos": 1,
|
|
256
|
+
"startedCount": 1,
|
|
257
|
+
"completedCount": 0,
|
|
258
|
+
"maxProgress": 75
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
**Plataformas suportadas:** `html5`, `youtube`, `vimeo`
|
|
263
|
+
|
|
264
|
+
### VideoDropout
|
|
265
|
+
Registra o segundo exato em que o usuário parou de assistir.
|
|
266
|
+
```json
|
|
267
|
+
{
|
|
268
|
+
"event": "VideoDropout",
|
|
269
|
+
"video_id": "vsl-principal",
|
|
270
|
+
"dropout_percent": 62,
|
|
271
|
+
"dropout_second": 743,
|
|
272
|
+
"engagement_score": 2.5
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
**Disparado em:** pause sem retomada + `beforeunload` da página.
|
|
276
|
+
|
|
277
|
+
### Click
|
|
278
|
+
```json
|
|
279
|
+
{
|
|
280
|
+
"event": "Click",
|
|
281
|
+
"click_category": "cta",
|
|
282
|
+
"position": { "x": 640, "y": 980, "relativeX": 50, "relativeY": 72 },
|
|
283
|
+
"time_on_page": 120
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
**Categorias:** `button`, `link`, `input`, `cta`, `price`, `whatsapp`, `email`, `phone`, `generic`
|
|
287
|
+
|
|
288
|
+
### CTAHover
|
|
289
|
+
```json
|
|
290
|
+
{
|
|
291
|
+
"event": "CTAHover",
|
|
292
|
+
"cta_selector": "a[href*='checkout']",
|
|
293
|
+
"hover_time_seconds": 4,
|
|
294
|
+
"engagement_score": 3.0
|
|
295
|
+
}
|
|
296
|
+
```
|
|
297
|
+
Dispara apenas após 3 segundos de hover no botão de compra.
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Engagement Score
|
|
302
|
+
|
|
303
|
+
Calculado pelo Worker para cada evento recebido. Salvo em `leads.engagement_score`.
|
|
304
|
+
|
|
305
|
+
| Dimensão | Range | Descrição |
|
|
306
|
+
|---|---|---|
|
|
307
|
+
| `time_level` | 0–4.0 | Tempo na página |
|
|
308
|
+
| `scroll_score` | 0–4.0 | Profundidade de scroll |
|
|
309
|
+
| `click_score` | 0–2.5 | Cliques em CTAs |
|
|
310
|
+
| `video_score` | 0–5.0 | Progresso de vídeo |
|
|
311
|
+
| `hover_score` | 0–3.0 | Hover no botão de compra |
|
|
312
|
+
| **totalScore** | **0–5.0** | Média ponderada |
|
|
313
|
+
|
|
314
|
+
**Intention levels baseados no score:**
|
|
315
|
+
|
|
316
|
+
| Score | Label | Ação recomendada |
|
|
317
|
+
|---|---|---|
|
|
318
|
+
| 0.0–1.5 | `curioso` | Retargeting leve |
|
|
319
|
+
| 1.5–3.0 | `interessado` | Retargeting com oferta |
|
|
320
|
+
| 3.0–5.0 | `comprador` | Lookalike de alta qualidade |
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Webhooks de Gateway de Pagamento
|
|
325
|
+
|
|
326
|
+
Recebidos pelo Worker. Disparam `Purchase` automaticamente.
|
|
327
|
+
|
|
328
|
+
| Endpoint | Gateway | Autenticação |
|
|
329
|
+
|---|---|---|
|
|
330
|
+
| `POST /webhook/hotmart` | Hotmart | `HOTMART_HOTTOK` header |
|
|
331
|
+
| `POST /webhook/kiwify` | Kiwify | `KIWIFY_SECRET` HMAC |
|
|
332
|
+
| `POST /webhook/ticto` | Ticto | `TICTO_SECRET` HMAC-SHA256 |
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## WhatsApp Webhook
|
|
337
|
+
|
|
338
|
+
| Endpoint | Método | Descrição |
|
|
339
|
+
|---|---|---|
|
|
340
|
+
| `/webhook/whatsapp` | `GET` | Verificação do Meta (challenge) |
|
|
341
|
+
| `/webhook/whatsapp` | `POST` | Recebe mensagens CTWA |
|
|
342
|
+
|
|
343
|
+
Configurar no Meta Business Suite → WhatsApp → Configuração → Webhook.
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## Campos Normalizados Automaticamente
|
|
348
|
+
|
|
349
|
+
O Worker normaliza antes de fazer SHA256:
|
|
350
|
+
|
|
351
|
+
| Campo | Normalização |
|
|
352
|
+
|---|---|
|
|
353
|
+
| `email` | `lowercase` + `trim` |
|
|
354
|
+
| `phone` | Somente dígitos + DDI `55` (Brasil) |
|
|
355
|
+
| `firstName` / `lastName` | `Title Case` |
|
|
356
|
+
| `city` | `lowercase` + remove acentos |
|
|
357
|
+
| `state` | `uppercase` (ex: `SP`, `RJ`) |
|
|
358
|
+
| `zip` | Somente dígitos |
|
|
359
|
+
| `country` | `lowercase` (ex: `br`) |
|