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
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
+ ```
@@ -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`) |