cdp-edge 1.0.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 (176) hide show
  1. package/README.md +324 -0
  2. package/bin/cdp-edge.js +71 -0
  3. package/contracts/agent-versions.json +679 -0
  4. package/contracts/api-versions.json +372 -0
  5. package/contracts/types.ts +81 -0
  6. package/dist/commands/analyze.js +52 -0
  7. package/dist/commands/infra.js +54 -0
  8. package/dist/commands/install.js +191 -0
  9. package/dist/commands/server.js +174 -0
  10. package/dist/commands/setup.js +355 -0
  11. package/dist/commands/validate.js +248 -0
  12. package/dist/index.js +12 -0
  13. package/dist/sdk/cdpTrack.js +2095 -0
  14. package/dist/sdk/cdpTrack.min.js +64 -0
  15. package/dist/sdk/install-snippet.html +10 -0
  16. package/docs/CI-CD-SETUP.md +217 -0
  17. package/docs/events-reference.md +359 -0
  18. package/docs/installation.md +155 -0
  19. package/docs/quick-start.md +185 -0
  20. package/docs/sdk-reference.md +371 -0
  21. package/docs/whatsapp-ctwa.md +210 -0
  22. package/extracted-skill/tracking-events-generator/INDEX.md +94 -0
  23. package/extracted-skill/tracking-events-generator/INSTALACAO-CDPEDGE.md +58 -0
  24. package/extracted-skill/tracking-events-generator/INTEGRACAO-COMPLETA.md +683 -0
  25. package/extracted-skill/tracking-events-generator/MELHORIAS-IMPLEMENTADAS.md +513 -0
  26. package/extracted-skill/tracking-events-generator/Premium-Tracking-Intelligence-Resumo.md +333 -0
  27. package/extracted-skill/tracking-events-generator/SKILL.md +257 -0
  28. package/extracted-skill/tracking-events-generator/advanced-matching.js +364 -0
  29. package/extracted-skill/tracking-events-generator/agents/ab-ltv-agent.md +196 -0
  30. package/extracted-skill/tracking-events-generator/agents/ab-testing-agent.md +54 -0
  31. package/extracted-skill/tracking-events-generator/agents/attribution-agent.md +1304 -0
  32. package/extracted-skill/tracking-events-generator/agents/bidding-agent.md +347 -0
  33. package/extracted-skill/tracking-events-generator/agents/bing-agent.md +66 -0
  34. package/extracted-skill/tracking-events-generator/agents/browser-tracking.md +364 -0
  35. package/extracted-skill/tracking-events-generator/agents/code-guardian-agent.md +149 -0
  36. package/extracted-skill/tracking-events-generator/agents/compliance-agent.md +2097 -0
  37. package/extracted-skill/tracking-events-generator/agents/crm-integration-agent.md +1459 -0
  38. package/extracted-skill/tracking-events-generator/agents/dashboard-agent.md +456 -0
  39. package/extracted-skill/tracking-events-generator/agents/database-agent.md +668 -0
  40. package/extracted-skill/tracking-events-generator/agents/debug-agent.md +1455 -0
  41. package/extracted-skill/tracking-events-generator/agents/devops-agent.md +232 -0
  42. package/extracted-skill/tracking-events-generator/agents/domain-setup-agent.md +238 -0
  43. package/extracted-skill/tracking-events-generator/agents/email-agent.md +88 -0
  44. package/extracted-skill/tracking-events-generator/agents/fingerprint-agent.md +257 -0
  45. package/extracted-skill/tracking-events-generator/agents/fraud-detection-agent.md +143 -0
  46. package/extracted-skill/tracking-events-generator/agents/google-agent.md +235 -0
  47. package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +525 -0
  48. package/extracted-skill/tracking-events-generator/agents/lead-scoring-agent.md +282 -0
  49. package/extracted-skill/tracking-events-generator/agents/linkedin-agent.md +173 -0
  50. package/extracted-skill/tracking-events-generator/agents/localization-agent.md +55 -0
  51. package/extracted-skill/tracking-events-generator/agents/ltv-predictor-agent.md +59 -0
  52. package/extracted-skill/tracking-events-generator/agents/master-feedback-loop.md +960 -0
  53. package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +2154 -0
  54. package/extracted-skill/tracking-events-generator/agents/match-quality-agent.md +304 -0
  55. package/extracted-skill/tracking-events-generator/agents/memory-agent.json +25 -0
  56. package/extracted-skill/tracking-events-generator/agents/memory-agent.md +878 -0
  57. package/extracted-skill/tracking-events-generator/agents/meta-agent.md +118 -0
  58. package/extracted-skill/tracking-events-generator/agents/ml-clustering-agent.md +749 -0
  59. package/extracted-skill/tracking-events-generator/agents/page-analyzer.md +272 -0
  60. package/extracted-skill/tracking-events-generator/agents/performance-agent.md +1167 -0
  61. package/extracted-skill/tracking-events-generator/agents/performance-optimization-agent.md +1442 -0
  62. package/extracted-skill/tracking-events-generator/agents/pinterest-agent.md +318 -0
  63. package/extracted-skill/tracking-events-generator/agents/premium-tracking-intelligence-agent.md +849 -0
  64. package/extracted-skill/tracking-events-generator/agents/r2-setup-agent.md +258 -0
  65. package/extracted-skill/tracking-events-generator/agents/reddit-agent.md +321 -0
  66. package/extracted-skill/tracking-events-generator/agents/security-enterprise-agent.md +1861 -0
  67. package/extracted-skill/tracking-events-generator/agents/server-tracking.md +1188 -0
  68. package/extracted-skill/tracking-events-generator/agents/spotify-agent.md +391 -0
  69. package/extracted-skill/tracking-events-generator/agents/tiktok-agent.md +182 -0
  70. package/extracted-skill/tracking-events-generator/agents/tracking-plan-agent.md +459 -0
  71. package/extracted-skill/tracking-events-generator/agents/utm-agent.md +322 -0
  72. package/extracted-skill/tracking-events-generator/agents/validator-agent.md +271 -0
  73. package/extracted-skill/tracking-events-generator/agents/webhook-agent.md +177 -0
  74. package/extracted-skill/tracking-events-generator/agents/whatsapp-agent.md +129 -0
  75. package/extracted-skill/tracking-events-generator/agents/whatsapp-ctwa-setup-agent.md +707 -0
  76. package/extracted-skill/tracking-events-generator/agents/youtube-agent.md +537 -0
  77. package/extracted-skill/tracking-events-generator/anti-blocking.js +285 -0
  78. package/extracted-skill/tracking-events-generator/cdpTrack.js +640 -0
  79. package/extracted-skill/tracking-events-generator/contracts/api-versions.json +372 -0
  80. package/extracted-skill/tracking-events-generator/docs/guia-cloudflare-iniciante.md +107 -0
  81. package/extracted-skill/tracking-events-generator/engagement-scoring.js +226 -0
  82. package/extracted-skill/tracking-events-generator/evals/evals.json +235 -0
  83. package/extracted-skill/tracking-events-generator/integration-test.js +497 -0
  84. package/extracted-skill/tracking-events-generator/knowledge-base.md +3066 -0
  85. package/extracted-skill/tracking-events-generator/micro-events.js +992 -0
  86. package/extracted-skill/tracking-events-generator/models/captura-de-lead.md +78 -0
  87. package/extracted-skill/tracking-events-generator/models/captura-lead-evento-externo.md +99 -0
  88. package/extracted-skill/tracking-events-generator/models/checkout-proprio.md +111 -0
  89. package/extracted-skill/tracking-events-generator/models/lancamento-imobiliario.md +344 -0
  90. package/extracted-skill/tracking-events-generator/models/multi-step-checkout.md +672 -0
  91. package/extracted-skill/tracking-events-generator/models/pagina-obrigado.md +55 -0
  92. package/extracted-skill/tracking-events-generator/models/pinterest/conversions-api-template.js +144 -0
  93. package/extracted-skill/tracking-events-generator/models/pinterest/event-mappings.json +48 -0
  94. package/extracted-skill/tracking-events-generator/models/pinterest/tag-template.js +28 -0
  95. package/extracted-skill/tracking-events-generator/models/quiz-funnel.md +132 -0
  96. package/extracted-skill/tracking-events-generator/models/reddit/conversions-api-template.js +205 -0
  97. package/extracted-skill/tracking-events-generator/models/reddit/event-mappings.json +56 -0
  98. package/extracted-skill/tracking-events-generator/models/reddit/pixel-template.js +19 -0
  99. package/extracted-skill/tracking-events-generator/models/scenarios/behavior-engine.js +425 -0
  100. package/extracted-skill/tracking-events-generator/models/scenarios/real-estate-logic.md +50 -0
  101. package/extracted-skill/tracking-events-generator/models/scenarios/sales-page-logic.md +50 -0
  102. package/extracted-skill/tracking-events-generator/models/trafego-direto.md +582 -0
  103. package/extracted-skill/tracking-events-generator/models/webinar-registration.md +63 -0
  104. package/extracted-skill/tracking-events-generator/route-intent-capture.js +222 -0
  105. package/extracted-skill/tracking-events-generator/tracking.config.js +46 -0
  106. package/extracted-skill/tracking-events-generator/walkthrough.md +26 -0
  107. package/package.json +89 -0
  108. package/scripts/build-sdk.js +106 -0
  109. package/server-edge-tracker/.client.env.example +14 -0
  110. package/server-edge-tracker/INSTALAR.md +527 -0
  111. package/server-edge-tracker/SEGMENTATION-DOCS.md +513 -0
  112. package/server-edge-tracker/config/utm-mapping.json +64 -0
  113. package/server-edge-tracker/deploy-client.cjs +76 -0
  114. package/server-edge-tracker/index.ts +1164 -0
  115. package/server-edge-tracker/migrate-new-db.sql +137 -0
  116. package/server-edge-tracker/migrate-v2.sql +16 -0
  117. package/server-edge-tracker/migrate-v3.sql +6 -0
  118. package/server-edge-tracker/migrate-v4.sql +18 -0
  119. package/server-edge-tracker/migrate-v5.sql +17 -0
  120. package/server-edge-tracker/migrate-v6.sql +24 -0
  121. package/server-edge-tracker/migrate-v7.sql +64 -0
  122. package/server-edge-tracker/migrate.sql +111 -0
  123. package/server-edge-tracker/modules/db.ts +702 -0
  124. package/server-edge-tracker/modules/dispatch/ga4.ts +72 -0
  125. package/server-edge-tracker/modules/dispatch/meta.ts +143 -0
  126. package/server-edge-tracker/modules/dispatch/platforms.ts +255 -0
  127. package/server-edge-tracker/modules/dispatch/tiktok.ts +107 -0
  128. package/server-edge-tracker/modules/dispatch/whatsapp.ts +279 -0
  129. package/server-edge-tracker/modules/intelligence.ts +589 -0
  130. package/server-edge-tracker/modules/ml/bidding.ts +247 -0
  131. package/server-edge-tracker/modules/ml/fraud.ts +302 -0
  132. package/server-edge-tracker/modules/ml/logistic.ts +226 -0
  133. package/server-edge-tracker/modules/ml/ltv.ts +531 -0
  134. package/server-edge-tracker/modules/ml/matchquality.ts +232 -0
  135. package/server-edge-tracker/modules/ml/quiz.ts +343 -0
  136. package/server-edge-tracker/modules/ml/roas.ts +255 -0
  137. package/server-edge-tracker/modules/ml/segmentation.ts +407 -0
  138. package/server-edge-tracker/modules/nurture.ts +257 -0
  139. package/server-edge-tracker/modules/utils.ts +311 -0
  140. package/server-edge-tracker/modules/utm/utm-enricher.ts +231 -0
  141. package/server-edge-tracker/schema-ab-ltv.sql +97 -0
  142. package/server-edge-tracker/schema-bidding.sql +86 -0
  143. package/server-edge-tracker/schema-fraud.sql +90 -0
  144. package/server-edge-tracker/schema-indexes.sql +67 -0
  145. package/server-edge-tracker/schema-ltv-feedback.sql +11 -0
  146. package/server-edge-tracker/schema-quiz.sql +52 -0
  147. package/server-edge-tracker/schema-sales-engine.sql +113 -0
  148. package/server-edge-tracker/schema-segmentation.sql +219 -0
  149. package/server-edge-tracker/schema-utm.sql +82 -0
  150. package/server-edge-tracker/schema.sql +265 -0
  151. package/server-edge-tracker/types.ts +258 -0
  152. package/server-edge-tracker/wrangler.toml +136 -0
  153. package/templates/afiliado-sem-landing.md +312 -0
  154. package/templates/captura-de-lead.md +78 -0
  155. package/templates/captura-lead-evento-externo.md +99 -0
  156. package/templates/checkout-proprio.md +111 -0
  157. package/templates/install/.claude/commands/cdp.md +1 -0
  158. package/templates/install/CLAUDE.md +65 -0
  159. package/templates/lancamento-imobiliario.md +344 -0
  160. package/templates/linkedin/tag-template.js +46 -0
  161. package/templates/multi-step-checkout.md +672 -0
  162. package/templates/pagina-obrigado.md +55 -0
  163. package/templates/pinterest/conversions-api-template.js +144 -0
  164. package/templates/pinterest/event-mappings.json +48 -0
  165. package/templates/pinterest/tag-template.js +28 -0
  166. package/templates/quiz-funnel.md +132 -0
  167. package/templates/reddit/conversions-api-template.js +205 -0
  168. package/templates/reddit/event-mappings.json +56 -0
  169. package/templates/reddit/pixel-template.js +19 -0
  170. package/templates/scenarios/behavior-engine.js +425 -0
  171. package/templates/scenarios/real-estate-logic.md +50 -0
  172. package/templates/scenarios/sales-page-logic.md +50 -0
  173. package/templates/spotify/pixel-template.js +46 -0
  174. package/templates/trafego-direto.md +582 -0
  175. package/templates/vsl-page.md +292 -0
  176. package/templates/webinar-registration.md +63 -0
@@ -0,0 +1,527 @@
1
+ # Setup Completo — server-edge-tracker
2
+ ## SEU_DOMINIO | Meta CAPI v22.0 + GA4 Measurement Protocol + D1 Database
3
+
4
+ > Execute cada bloco no terminal, um de cada vez.
5
+ > Tempo total estimado: 15–20 minutos.
6
+
7
+ ---
8
+
9
+ ## PRÉ-REQUISITOS
10
+ - Node.js instalado → `node -v` deve retornar v18 ou superior
11
+ - Conta Cloudflare ativa em cloudflare.com
12
+ - Pixel ID e Access Token Meta já em mãos ✅
13
+ - GA4 Measurement ID já em mãos ✅
14
+
15
+ ---
16
+
17
+ ## PASSO 1 — Instalar Wrangler (ferramenta da Cloudflare)
18
+
19
+ ```bash
20
+ npm install -g wrangler
21
+ ```
22
+
23
+ Verificar se instalou:
24
+ ```bash
25
+ wrangler --version
26
+ ```
27
+
28
+ ---
29
+
30
+ ## PASSO 2 — Login na Cloudflare
31
+
32
+ ```bash
33
+ wrangler login
34
+ ```
35
+
36
+ > Vai abrir o navegador. Faça login com sua conta Cloudflare e clique em "Autorizar".
37
+ > Resultado esperado: "Successfully logged in."
38
+
39
+ ---
40
+
41
+ ## PASSO 3 — Entrar na pasta do projeto
42
+
43
+ **Windows (PowerShell):**
44
+ ```powershell
45
+ cd "C:\Users\comer\COWORK CLAUDE\CDP Edge\server-edge-tracker"
46
+ ```
47
+
48
+ **Mac / Linux:**
49
+ ```bash
50
+ cd ~/Desktop/server-edge-tracker
51
+ # ou o caminho onde você salvou a pasta
52
+ ```
53
+
54
+ > **Claude Code (Linux):** Ao rodar via Claude Code, use o caminho absoluto Linux do projeto clonado, ex: `/home/user/projeto/server-edge-tracker`
55
+
56
+ ---
57
+
58
+ ## PASSO 4 — Criar o banco de dados D1
59
+
60
+ ```bash
61
+ wrangler d1 create cdp-edge-db
62
+ ```
63
+
64
+ > Resultado esperado — copie o `database_id` retornado:
65
+ > ```
66
+ > ✅ Successfully created DB 'cdp-edge-db'
67
+ > database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
68
+ > ```
69
+
70
+ Abra o arquivo `wrangler.toml` e substitua a linha:
71
+ ```
72
+ database_id = "SUBSTITUIR_PELO_ID_DO_D1"
73
+ ```
74
+ pelo ID que você copiou. Salve o arquivo.
75
+
76
+ ---
77
+
78
+ ## PASSO 5 — Criar as tabelas no banco
79
+
80
+ Execute os arquivos de schema na ordem abaixo. Cada arquivo usa `IF NOT EXISTS` e é idempotente — pode ser executado mais de uma vez sem risco.
81
+
82
+ ```bash
83
+ # Core: tabelas principais (leads, user_profiles, events_log, identity_graph)
84
+ wrangler d1 execute cdp-edge-db --file=schema.sql --remote
85
+
86
+ # Migrations históricas (retry_queue, escalation_log, intelligence_logs)
87
+ wrangler d1 execute cdp-edge-db --file=migrate-v6.sql --remote
88
+
89
+ # Fase 1 — ML Clustering (ml_segments, ml_segment_members, views de segmentação)
90
+ wrangler d1 execute cdp-edge-db --file=schema-segmentation.sql --remote
91
+
92
+ # Fase 2 — Bidding ML (bid_recommendations, view v_active_bid_recs)
93
+ wrangler d1 execute cdp-edge-db --file=schema-bidding.sql --remote
94
+
95
+ # Fase 3 — A/B LTV Testing (ltv_ab_tests, ltv_ab_variations, ltv_ab_assignments)
96
+ wrangler d1 execute cdp-edge-db --file=schema-ab-ltv.sql --remote
97
+
98
+ # Fase 4 — Fraud Detection (fraud_signals, fraud_alerts, view v_fraud_dashboard)
99
+ wrangler d1 execute cdp-edge-db --file=schema-fraud.sql --remote
100
+
101
+ # Índices compostos de performance para queries D1 (todas as fases)
102
+ wrangler d1 execute cdp-edge-db --file=schema-indexes.sql --remote
103
+
104
+ # Fase 5 — LTV Real + Match Quality (ltv_model_weights, match_quality_log, view v_match_quality_24h)
105
+ wrangler d1 execute cdp-edge-db --file=migrate-v7.sql --remote
106
+ ```
107
+
108
+ > Resultado esperado para cada arquivo: "✅ Successfully executed SQL"
109
+
110
+ Verificar se as tabelas foram criadas:
111
+ ```bash
112
+ wrangler d1 execute cdp-edge-db --remote --command="SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;"
113
+ ```
114
+
115
+ ---
116
+
117
+ ## PASSO 6 — Configurar os Secrets (tokens privados)
118
+
119
+ Os tokens NUNCA ficam no código. São configurados aqui e ficam criptografados na Cloudflare.
120
+
121
+ ### Meta Access Token:
122
+ ```bash
123
+ wrangler secret put META_ACCESS_TOKEN
124
+ ```
125
+ > Cole o token quando pedir: `EAAO3ZAGKmRi8B...` (o token completo)
126
+ > Pressione Enter
127
+
128
+ ### GA4 API Secret:
129
+ ```bash
130
+ wrangler secret put GA4_API_SECRET
131
+ ```
132
+ > Para obter esse secret:
133
+ > 1. Abra o GA4 → Administrar → Fluxos de dados → clique no seu site
134
+ > 2. Role até "Secrets da API do Measurement Protocol"
135
+ > 3. Clique em "Criar" → dê um nome qualquer → copie o valor gerado
136
+ > Cole aqui e pressione Enter.
137
+
138
+ ### Test Event Code Meta (só para testes — apagar depois):
139
+ ```bash
140
+ wrangler secret put META_TEST_CODE
141
+ ```
142
+ > Encontrar no Gerenciador de Eventos Meta → Testar Eventos → copie o código "TEST12345"
143
+ > **Lembrar de remover esse secret em produção** (veja PASSO 10)
144
+
145
+ ### WhatsApp — Webhook Verification (CTWA Tracking):
146
+ ```bash
147
+ wrangler secret put WA_WEBHOOK_VERIFY_TOKEN
148
+ ```
149
+ > Token de verificação do webhook WhatsApp (obrigatório para CTWA). Meta exige este token para registrar o webhook.
150
+ > Defina qualquer string segura, ex: `cdp-edge-webhook-2026-secret-xyz`.
151
+
152
+ ### WhatsApp — Meta Cloud API v22.0 (mensagens automáticas - OPCIONAL):
153
+ > ⚠️ Estes secrets são **OPCIONAIS**. Se você precisa apenas de tracking de dados (ctwaclid), não configure-os.
154
+
155
+ ```bash
156
+ wrangler secret put WHATSAPP_PHONE_NUMBER_ID
157
+ ```
158
+ > Meta: "Phone Number ID" — ID do número WhatsApp Business. Necessário apenas para enviar mensagens automáticas.
159
+
160
+ ```bash
161
+ wrangler secret put WHATSAPP_ACCESS_TOKEN
162
+ ```
163
+ > Meta: "Access Token" — Token de acesso do WhatsApp Business. Necessário apenas para enviar mensagens automáticas.
164
+
165
+ ```bash
166
+ wrangler secret put WA_NOTIFY_NUMBER
167
+ ```
168
+ > Número que vai receber as notificações de venda/lead. Necessário apenas para enviar mensagens automáticas.
169
+
170
+ ### WhatsApp — CallMeBot (alertas internos do sistema):
171
+ ```bash
172
+ wrangler secret put CALLMEBOT_PHONE
173
+ ```
174
+ > Seu número de WhatsApp pessoal. Ex: `5511999998888`. Ativar em: `wa.me/34638398527` com a mensagem `I allow callmebot to send me messages`.
175
+
176
+ ```bash
177
+ wrangler secret put CALLMEBOT_APIKEY
178
+ ```
179
+ > API Key gerada pelo CallMeBot após ativação (você recebe via WhatsApp após enviar a mensagem de ativação).
180
+
181
+ > **Nota:** CallMeBot é usado exclusivamente para alertas críticos do sistema (Worker com erro, API falhando, token expirado). Notificações de venda/lead usam a Meta Cloud API v22.0.
182
+
183
+ ---
184
+
185
+ ## PASSO 7 — Fazer o deploy (publicar o Worker)
186
+
187
+ ```bash
188
+ wrangler deploy
189
+ ```
190
+
191
+ > Resultado esperado:
192
+ > ```
193
+ > ✅ Deployed server-edge-tracker
194
+ > https://server-edge-tracker.seu-usuario.workers.dev
195
+ > ```
196
+ > **Copie essa URL** — é o endereço do seu servidor.
197
+
198
+ ---
199
+
200
+ ## PASSO 8 — Testar se está funcionando
201
+
202
+ Substitua a URL abaixo pela sua e abra no navegador:
203
+
204
+ ```
205
+ https://server-edge-tracker.seu-usuario.workers.dev/health
206
+ ```
207
+
208
+ Resultado esperado:
209
+ ```json
210
+ {
211
+ "status": "ok",
212
+ "pixel": "1234567890123456",
213
+ "ga4": "G-XXXXXXXXXX",
214
+ "db": "connected",
215
+ "meta_token": "set",
216
+ "ga4_secret": "set"
217
+ }
218
+ ```
219
+
220
+ Se `db: "not bound"` → o `database_id` no wrangler.toml está errado. Corrija e rode `wrangler deploy` de novo.
221
+ Se `meta_token: "MISSING"` → o secret não foi configurado. Rode o PASSO 6 de novo.
222
+
223
+ ---
224
+
225
+ ## PASSO 9 — Testar evento real no Meta
226
+
227
+ Ainda com `META_TEST_CODE` configurado, rode este comando no terminal
228
+ (substitua pela sua URL):
229
+
230
+ ```bash
231
+ curl -X POST https://server-edge-tracker.seu-usuario.workers.dev/track \
232
+ -H "Content-Type: application/json" \
233
+ -H "Origin: https://SEU_DOMINIO" \
234
+ -d "{\"eventName\":\"Lead\",\"email\":\"teste@email.com\",\"pageUrl\":\"https://SEU_DOMINIO/teste\"}"
235
+ ```
236
+
237
+ Resultado esperado:
238
+ ```json
239
+ {"ok": true, "meta": {"events_received": 1}, "ga4": {"ok": true}}
240
+ ```
241
+
242
+ Verificar no Meta: Gerenciador de Eventos → Testar Eventos → deve aparecer "Lead" recebido.
243
+
244
+ ---
245
+
246
+ ## PASSO 10 — Verificar Plano Workers ($5) e Dados Geográficos
247
+
248
+ ### IMPORTANTE: Plano Workers Paid ($5/mês)
249
+
250
+ O CDP Edge foi desenvolvido para aproveitar todos os recursos do **Cloudflare Workers Paid ($5/mês)**, especialmente os dados geográficos avançados.
251
+
252
+ **O que você ganha com o plano $5:**
253
+ - **Cidade exata:** Ex: "São Paulo" (plano free: NULL)
254
+ - **Estado completo:** Ex: "São Paulo" (plano free: NULL)
255
+ - **Estado (sigla):** Ex: "SP" (plano free: NULL)
256
+ - **CEP:** Ex: "01310-100" (plano free: NULL)
257
+ - **Latitude/Longitude:** Ex: "-23.5505", "-46.6333" (plano free: NULL)
258
+ - **Timezone:** Ex: "America/Sao_Paulo" (plano free: NULL)
259
+
260
+ **Como verificar se está funcionando:**
261
+
262
+ 1. **Enviar evento de teste:**
263
+ ```bash
264
+ curl -X POST "https://SEU_DOMINIO/track" \
265
+ -H "Content-Type: application/json" \
266
+ -H "Origin: https://SEU_DOMINIO" \
267
+ -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
268
+ -d '{"eventName":"TestGeo","pageUrl":"https://SEU_DOMINIO/teste","email":"teste@exemplo.com","firstName":"Teste","lastName":"Geo"}'
269
+ ```
270
+
271
+ 2. **Verificar no banco D1 se os dados geográficos foram capturados:**
272
+ ```bash
273
+ wrangler d1 execute cdp-edge-db --remote --command="SELECT event_name, email, city, state, country FROM leads WHERE email = 'teste@exemplo.com' ORDER BY created_at DESC LIMIT 1"
274
+ ```
275
+
276
+ **Resultado esperado (com plano $5):**
277
+ ```json
278
+ {
279
+ "event_name": "TestGeo",
280
+ "email": "teste@exemplo.com",
281
+ "city": "São Bernardo do Campo", // ← Plano $5: nome da cidade
282
+ "state": "SP", // ← Plano $5: sigla do estado
283
+ "country": "BR" // ← Plano free: país
284
+ }
285
+ ```
286
+
287
+ **Se `city` e `state` aparecem como `NULL`:**
288
+ - O plano $5 não está ativo
289
+ - Verifique no painel Cloudflare se Workers está contratado
290
+ - Contrate o plano em: https://dash.cloudflare.com/[ID_DA_CONTA]/workers/plans
291
+
292
+ ---
293
+
294
+ ## PASSO 11.1 — Solução de Conflitos de Rotas
295
+
296
+ ### ⚠️ Se aparecer erro no deploy:
297
+
298
+ ```
299
+ ERROR: Can't deploy routes that are assigned to another worker.
300
+ "server-edge-tracker" is already assigned to routes:
301
+ - SEU_DOMINIO/track*
302
+ ```
303
+
304
+ ### SOLUÇÃO 1 — Via Painel Cloudflare (RECOMENDADO):
305
+
306
+ 1. Acesse: https://dash.cloudflare.com/[ID_DA_CONTA]/workers/overview
307
+ 2. Clique no worker que está usando as rotas do seu domínio
308
+ 3. Vá em Settings → Triggers → Routes
309
+ 4. Clique "Delete" nas rotas do domínio `SEU_DOMINIO`
310
+ 5. Repita o `wrangler deploy`
311
+
312
+ ### SOLUÇÃO 2 — Via Wrangler CLI:
313
+
314
+ ```bash
315
+ # Listar workers para encontrar o deployment conflitante
316
+ wrangler deployments list
317
+
318
+ # Remover deployment conflitante (substituir pelo ID correto)
319
+ wrangler deployment delete --id <ID_DO_DEPLOYMENT_CONFLITANTE>
320
+ ```
321
+
322
+ ### SOLUÇÃO 3 — Usar Sufixo nas Rotas:
323
+
324
+ Se não quiser remover rotas existentes, use sufixo:
325
+
326
+ ```toml
327
+ [[routes]]
328
+ pattern = "SEU_DOMINIO/track-worker-novo*"
329
+ zone_name = "SEU_DOMINIO"
330
+ ```
331
+
332
+ **URL do tracking:** `https://SEU_DOMINIO/track-worker-novo`
333
+
334
+ ---
335
+
336
+ ## PASSO 11.2 — Remover o Test Code antes de ir ao ar
337
+
338
+ ```bash
339
+ wrangler secret delete META_TEST_CODE
340
+ wrangler deploy
341
+ ```
342
+
343
+ ---
344
+
345
+ ## PASSO 12 — Configurar domínio personalizado (OBRIGATÓRIO para produção)
346
+
347
+ ### ⚠️ ATENÇÃO: Domínio OBRIGATÓRIO
348
+
349
+ Para o tracking funcionar corretamente em produção, você **PRECISA** configurar um domínio personalizado. **NÃO** use o domínio `.workers.dev` em produção.
350
+
351
+ ### INSTRUÇÕES EXATAS:
352
+
353
+ #### 1. Verificar se o domínio está na Cloudflare
354
+ ```bash
355
+ # No painel Cloudflare: https://dash.cloudflare.com
356
+ # Verifique se o domínio está listado em "Websites"
357
+ # Se não estiver, adicione o domínio antes de continuar
358
+ ```
359
+
360
+ #### 2. Configurar rotas no wrangler.toml
361
+
362
+ Edite o arquivo `wrangler.toml` e substitua:
363
+ ```toml
364
+ # SUBSTITUIR estes valores:
365
+ pattern = "SEU_DOMINIO/track*" # ← Substituir pelo domínio real
366
+ zone_name = "SEU_DOMINIO" # ← Substituir pelo domínio real
367
+
368
+ # Exemplo real:
369
+ # pattern = "lancamentosabc.com.br/track*"
370
+ # zone_name = "lancamentosabc.com.br"
371
+ ```
372
+
373
+ #### 3. Fazer o deploy com as rotas
374
+ ```bash
375
+ wrangler deploy
376
+ ```
377
+
378
+ #### 4. Resolver conflitos de rotas (se ocorrer erro)
379
+
380
+ Se aparecer erro: `Can't deploy routes that are assigned to another worker`:
381
+
382
+ **SOLUÇÃO A - Via painel Cloudflare:**
383
+ 1. Acesse: https://dash.cloudflare.com/[ID_DA_CONTA]/workers/overview
384
+ 2. Clique no worker que está usando as rotas do seu domínio
385
+ 3. Vá em Settings → Triggers → Routes
386
+ 4. Clique "Delete" nas rotas do domínio
387
+ 5. Repita o `wrangler deploy`
388
+
389
+ **SOLUÇÃO B - Via API (rápido):**
390
+ ```bash
391
+ # Listar workers para encontrar o ID
392
+ wrangler deployments list
393
+
394
+ # Remover rotas do worker conflitante (substituir pelo ID correto)
395
+ wrangler deployment delete --id <ID_DO_DEPLOYMENT>
396
+ ```
397
+
398
+ #### 5. Verificar se funcionou
399
+ ```bash
400
+ # Testar endpoint de health
401
+ curl "https://SEU_DOMINIO/track/health"
402
+
403
+ # Deve retornar:
404
+ # {"status": "ok", "bindings": {...}}
405
+ ```
406
+
407
+ #### 6. Testar endpoint de tracking
408
+ ```bash
409
+ curl -X POST "https://SEU_DOMINIO/track" \
410
+ -H "Content-Type: application/json" \
411
+ -H "Origin: https://SEU_DOMINIO" \
412
+ -d '{"eventName":"Test","pageUrl":"https://SEU_DOMINIO/teste"}'
413
+ ```
414
+
415
+ **URL FINAL DO TRACKING:**
416
+ - ✅ `https://SEU_DOMINIO/track` (CORRETO - produção)
417
+ - ❌ `https://seu-worker.workers.dev/track` (ERRADO - teste apenas)
418
+
419
+ ---
420
+
421
+ ### DOMÍNIOS SUPOSTOS (.workers.dev) — Apenas para testes locais:
422
+
423
+ ```bash
424
+ # Para testar localmente sem domínio real:
425
+ wrangler dev
426
+
427
+ # Acesso temporário: http://localhost:8787/track
428
+ ```
429
+
430
+ ---
431
+
432
+ ## PASSO 13 — Configurar webhooks nas plataformas
433
+
434
+ ### Ticto (plataforma principal):
435
+
436
+ **Caminho no painel:**
437
+ `Meus Produtos → [selecione o produto] → aba Webhooks → + Adicionar Webhook`
438
+
439
+ Preencher:
440
+ - **URL:** `https://server-edge-tracker.seu-usuario.workers.dev/webhook/ticto`
441
+ - **Versão:** `2.0` ← obrigatório (v1.0 tem estrutura diferente)
442
+ - **Formato:** `JSON`
443
+ - **Evento:** marcar **Venda Realizada** (status `paid`)
444
+
445
+ > Se usar domínio personalizado (ex: `track.SEU_DOMINIO`):
446
+ > URL fica: `https://track.SEU_DOMINIO/webhook/ticto`
447
+
448
+ **Testar:** na tela de webhook da Ticto há um botão **"Enviar teste"**. Ao clicar, a Ticto envia um POST simulado. Confirme que o evento aparece no Gerenciador de Eventos do Meta como `Purchase` e que o dado foi registrado no banco D1 (ver comando no final deste guia).
449
+
450
+ **O que o worker faz ao receber o webhook Ticto:**
451
+ 1. Verifica se o status é `paid`, `approved` ou `complete` — ignora outros (reembolso, chargeback)
452
+ 2. Recupera `fbp`, `fbc`, `gclid` do comprador no banco D1 pelo e-mail
453
+ 3. Converte `paid_amount` de centavos para reais (ex: `29700 → 297.00`)
454
+ 4. Dispara simultaneamente: Meta CAPI Purchase + GA4 Purchase + TikTok CompletePayment + D1 Insert
455
+
456
+ ---
457
+
458
+ ### Hotmart:
459
+ - Hotmart Club → Configurações → Webhooks
460
+ - URL: `https://server-edge-tracker.seu-usuario.workers.dev/webhook/hotmart`
461
+ - Eventos: PURCHASE_APPROVED, PURCHASE_COMPLETE
462
+
463
+ ### Kiwify:
464
+ - Kiwify → Configurações → Webhooks
465
+ - URL: `https://server-edge-tracker.seu-usuario.workers.dev/webhook/kiwify`
466
+
467
+ ---
468
+
469
+ ## ENDPOINTS DISPONÍVEIS
470
+
471
+ | Método | Rota | Uso |
472
+ |---|---|---|
473
+ | `POST` | `/track` | Evento do browser (Lead, Purchase, PageView…) |
474
+ | `POST` | `/webhook/ticto` | Webhook de compra Ticto (v2 JSON) |
475
+ | `POST` | `/webhook/hotmart` | Webhook de compra Hotmart |
476
+ | `POST` | `/webhook/kiwify` | Webhook de compra Kiwify |
477
+ | `GET` | `/health` | Status do servidor |
478
+
479
+ ---
480
+
481
+ ## ESTRUTURA DO PAYLOAD — POST /track
482
+
483
+ ```json
484
+ {
485
+ "eventName": "Lead",
486
+ "email": "joao@email.com",
487
+ "phone": "11999998888",
488
+ "firstName": "João",
489
+ "lastName": "Silva",
490
+ "city": "São Paulo",
491
+ "state": "SP",
492
+ "country": "BR",
493
+ "fbp": "_fbp cookie value",
494
+ "fbc": "_fbc cookie value",
495
+ "userId": "usr_abc123",
496
+ "gaClientId": "GA1.1.123456789.1234567890",
497
+ "eventId": "CDP_1234567890_abc123",
498
+ "pageUrl": "https://SEU_DOMINIO/obrigado",
499
+ "value": 297,
500
+ "currency": "BRL",
501
+ "utmSource": "facebook",
502
+ "utmMedium": "cpc",
503
+ "utmCampaign": "campanha-01"
504
+ }
505
+ ```
506
+
507
+ Todos os campos são opcionais exceto `eventName`.
508
+
509
+ ---
510
+
511
+ ## ATUALIZAR O WORKER (após editar worker.js)
512
+
513
+ ```bash
514
+ wrangler deploy
515
+ ```
516
+
517
+ Simples assim — sem restart, sem downtime.
518
+
519
+ ---
520
+
521
+ ## MONITORAR LOGS EM TEMPO REAL
522
+
523
+ ```bash
524
+ wrangler tail
525
+ ```
526
+
527
+ Mostra cada requisição e possíveis erros em tempo real.