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.
- package/README.md +324 -0
- package/bin/cdp-edge.js +71 -0
- package/contracts/agent-versions.json +679 -0
- package/contracts/api-versions.json +372 -0
- package/contracts/types.ts +81 -0
- package/dist/commands/analyze.js +52 -0
- package/dist/commands/infra.js +54 -0
- package/dist/commands/install.js +191 -0
- package/dist/commands/server.js +174 -0
- package/dist/commands/setup.js +355 -0
- package/dist/commands/validate.js +248 -0
- package/dist/index.js +12 -0
- package/dist/sdk/cdpTrack.js +2095 -0
- package/dist/sdk/cdpTrack.min.js +64 -0
- package/dist/sdk/install-snippet.html +10 -0
- package/docs/CI-CD-SETUP.md +217 -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 +210 -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 +683 -0
- package/extracted-skill/tracking-events-generator/MELHORIAS-IMPLEMENTADAS.md +513 -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-ltv-agent.md +196 -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/bidding-agent.md +347 -0
- package/extracted-skill/tracking-events-generator/agents/bing-agent.md +66 -0
- package/extracted-skill/tracking-events-generator/agents/browser-tracking.md +364 -0
- package/extracted-skill/tracking-events-generator/agents/code-guardian-agent.md +149 -0
- package/extracted-skill/tracking-events-generator/agents/compliance-agent.md +2097 -0
- package/extracted-skill/tracking-events-generator/agents/crm-integration-agent.md +1459 -0
- package/extracted-skill/tracking-events-generator/agents/dashboard-agent.md +456 -0
- package/extracted-skill/tracking-events-generator/agents/database-agent.md +668 -0
- package/extracted-skill/tracking-events-generator/agents/debug-agent.md +1455 -0
- package/extracted-skill/tracking-events-generator/agents/devops-agent.md +232 -0
- package/extracted-skill/tracking-events-generator/agents/domain-setup-agent.md +238 -0
- package/extracted-skill/tracking-events-generator/agents/email-agent.md +88 -0
- package/extracted-skill/tracking-events-generator/agents/fingerprint-agent.md +257 -0
- package/extracted-skill/tracking-events-generator/agents/fraud-detection-agent.md +143 -0
- package/extracted-skill/tracking-events-generator/agents/google-agent.md +235 -0
- package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +525 -0
- package/extracted-skill/tracking-events-generator/agents/lead-scoring-agent.md +282 -0
- package/extracted-skill/tracking-events-generator/agents/linkedin-agent.md +173 -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 +960 -0
- package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +2154 -0
- package/extracted-skill/tracking-events-generator/agents/match-quality-agent.md +304 -0
- package/extracted-skill/tracking-events-generator/agents/memory-agent.json +25 -0
- package/extracted-skill/tracking-events-generator/agents/memory-agent.md +878 -0
- package/extracted-skill/tracking-events-generator/agents/meta-agent.md +118 -0
- package/extracted-skill/tracking-events-generator/agents/ml-clustering-agent.md +749 -0
- package/extracted-skill/tracking-events-generator/agents/page-analyzer.md +272 -0
- package/extracted-skill/tracking-events-generator/agents/performance-agent.md +1167 -0
- package/extracted-skill/tracking-events-generator/agents/performance-optimization-agent.md +1442 -0
- package/extracted-skill/tracking-events-generator/agents/pinterest-agent.md +318 -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 +258 -0
- package/extracted-skill/tracking-events-generator/agents/reddit-agent.md +321 -0
- package/extracted-skill/tracking-events-generator/agents/security-enterprise-agent.md +1861 -0
- package/extracted-skill/tracking-events-generator/agents/server-tracking.md +1188 -0
- package/extracted-skill/tracking-events-generator/agents/spotify-agent.md +391 -0
- package/extracted-skill/tracking-events-generator/agents/tiktok-agent.md +182 -0
- package/extracted-skill/tracking-events-generator/agents/tracking-plan-agent.md +459 -0
- package/extracted-skill/tracking-events-generator/agents/utm-agent.md +322 -0
- package/extracted-skill/tracking-events-generator/agents/validator-agent.md +271 -0
- package/extracted-skill/tracking-events-generator/agents/webhook-agent.md +177 -0
- package/extracted-skill/tracking-events-generator/agents/whatsapp-agent.md +129 -0
- package/extracted-skill/tracking-events-generator/agents/whatsapp-ctwa-setup-agent.md +707 -0
- package/extracted-skill/tracking-events-generator/agents/youtube-agent.md +537 -0
- package/extracted-skill/tracking-events-generator/anti-blocking.js +285 -0
- package/extracted-skill/tracking-events-generator/cdpTrack.js +640 -0
- package/extracted-skill/tracking-events-generator/contracts/api-versions.json +372 -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 +3066 -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/lancamento-imobiliario.md +344 -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 +132 -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/route-intent-capture.js +222 -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 +89 -0
- package/scripts/build-sdk.js +106 -0
- package/server-edge-tracker/.client.env.example +14 -0
- package/server-edge-tracker/INSTALAR.md +527 -0
- package/server-edge-tracker/SEGMENTATION-DOCS.md +513 -0
- package/server-edge-tracker/config/utm-mapping.json +64 -0
- package/server-edge-tracker/deploy-client.cjs +76 -0
- package/server-edge-tracker/index.ts +1164 -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-v7.sql +64 -0
- package/server-edge-tracker/migrate.sql +111 -0
- package/server-edge-tracker/modules/db.ts +702 -0
- package/server-edge-tracker/modules/dispatch/ga4.ts +72 -0
- package/server-edge-tracker/modules/dispatch/meta.ts +143 -0
- package/server-edge-tracker/modules/dispatch/platforms.ts +255 -0
- package/server-edge-tracker/modules/dispatch/tiktok.ts +107 -0
- package/server-edge-tracker/modules/dispatch/whatsapp.ts +279 -0
- package/server-edge-tracker/modules/intelligence.ts +589 -0
- package/server-edge-tracker/modules/ml/bidding.ts +247 -0
- package/server-edge-tracker/modules/ml/fraud.ts +302 -0
- package/server-edge-tracker/modules/ml/logistic.ts +226 -0
- package/server-edge-tracker/modules/ml/ltv.ts +531 -0
- package/server-edge-tracker/modules/ml/matchquality.ts +232 -0
- package/server-edge-tracker/modules/ml/quiz.ts +343 -0
- package/server-edge-tracker/modules/ml/roas.ts +255 -0
- package/server-edge-tracker/modules/ml/segmentation.ts +407 -0
- package/server-edge-tracker/modules/nurture.ts +257 -0
- package/server-edge-tracker/modules/utils.ts +311 -0
- package/server-edge-tracker/modules/utm/utm-enricher.ts +231 -0
- package/server-edge-tracker/schema-ab-ltv.sql +97 -0
- package/server-edge-tracker/schema-bidding.sql +86 -0
- package/server-edge-tracker/schema-fraud.sql +90 -0
- package/server-edge-tracker/schema-indexes.sql +67 -0
- package/server-edge-tracker/schema-ltv-feedback.sql +11 -0
- package/server-edge-tracker/schema-quiz.sql +52 -0
- package/server-edge-tracker/schema-sales-engine.sql +113 -0
- package/server-edge-tracker/schema-segmentation.sql +219 -0
- package/server-edge-tracker/schema-utm.sql +82 -0
- package/server-edge-tracker/schema.sql +265 -0
- package/server-edge-tracker/types.ts +258 -0
- package/server-edge-tracker/wrangler.toml +136 -0
- package/templates/afiliado-sem-landing.md +312 -0
- package/templates/captura-de-lead.md +78 -0
- package/templates/captura-lead-evento-externo.md +99 -0
- package/templates/checkout-proprio.md +111 -0
- package/templates/install/.claude/commands/cdp.md +1 -0
- package/templates/install/CLAUDE.md +65 -0
- package/templates/lancamento-imobiliario.md +344 -0
- package/templates/linkedin/tag-template.js +46 -0
- package/templates/multi-step-checkout.md +672 -0
- package/templates/pagina-obrigado.md +55 -0
- package/templates/pinterest/conversions-api-template.js +144 -0
- package/templates/pinterest/event-mappings.json +48 -0
- package/templates/pinterest/tag-template.js +28 -0
- package/templates/quiz-funnel.md +132 -0
- package/templates/reddit/conversions-api-template.js +205 -0
- package/templates/reddit/event-mappings.json +56 -0
- package/templates/reddit/pixel-template.js +19 -0
- package/templates/scenarios/behavior-engine.js +425 -0
- package/templates/scenarios/real-estate-logic.md +50 -0
- package/templates/scenarios/sales-page-logic.md +50 -0
- package/templates/spotify/pixel-template.js +46 -0
- package/templates/trafego-direto.md +582 -0
- package/templates/vsl-page.md +292 -0
- 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.
|