cdp-edge 2.5.5 → 2.5.7

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 (63) hide show
  1. package/README.md +5 -8
  2. package/contracts/agent-versions.json +3 -3
  3. package/contracts/api-versions.json +8 -8
  4. package/extracted-skill/tracking-events-generator/INSTALACAO-CDPEDGE.md +2 -2
  5. package/extracted-skill/tracking-events-generator/INTEGRACAO-COMPLETA.md +3 -3
  6. package/extracted-skill/tracking-events-generator/Premium-Tracking-Intelligence-Resumo.md +1 -1
  7. package/extracted-skill/tracking-events-generator/SKILL.md +4 -4
  8. package/extracted-skill/tracking-events-generator/advanced-matching.js +1 -1
  9. package/extracted-skill/tracking-events-generator/agents/attribution-agent.md +3 -3
  10. package/extracted-skill/tracking-events-generator/agents/browser-tracking.md +2 -2
  11. package/extracted-skill/tracking-events-generator/agents/code-guardian-agent.md +2 -2
  12. package/extracted-skill/tracking-events-generator/agents/debug-agent.md +1 -1
  13. package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +6 -6
  14. package/extracted-skill/tracking-events-generator/agents/ltv-predictor-agent.md +19 -0
  15. package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +312 -21
  16. package/extracted-skill/tracking-events-generator/agents/match-quality-agent.md +1 -1
  17. package/extracted-skill/tracking-events-generator/agents/memory-agent.md +8 -8
  18. package/extracted-skill/tracking-events-generator/agents/meta-agent.md +8 -8
  19. package/extracted-skill/tracking-events-generator/agents/ml-clustering-agent.md +20 -0
  20. package/extracted-skill/tracking-events-generator/agents/page-analyzer.md +1 -1
  21. package/extracted-skill/tracking-events-generator/agents/premium-tracking-intelligence-agent.md +1 -1
  22. package/extracted-skill/tracking-events-generator/agents/security-enterprise-agent.md +1 -1
  23. package/extracted-skill/tracking-events-generator/agents/server-tracking.md +9 -9
  24. package/extracted-skill/tracking-events-generator/agents/spotify-agent.md +1 -1
  25. package/extracted-skill/tracking-events-generator/agents/tracking-plan-agent.md +5 -5
  26. package/extracted-skill/tracking-events-generator/agents/validator-agent.md +8 -8
  27. package/extracted-skill/tracking-events-generator/agents/webhook-agent.md +4 -4
  28. package/extracted-skill/tracking-events-generator/agents/whatsapp-agent.md +7 -7
  29. package/extracted-skill/tracking-events-generator/agents/whatsapp-ctwa-setup-agent.md +16 -16
  30. package/extracted-skill/tracking-events-generator/agents/zapman-agent.md +189 -0
  31. package/extracted-skill/tracking-events-generator/cdpTrack.js +1 -1
  32. package/extracted-skill/tracking-events-generator/contracts/api-versions.json +8 -8
  33. package/extracted-skill/tracking-events-generator/docs/guia-cloudflare-iniciante.md +2 -2
  34. package/extracted-skill/tracking-events-generator/evals/evals.json +5 -5
  35. package/extracted-skill/tracking-events-generator/knowledge-base.md +5 -5
  36. package/extracted-skill/tracking-events-generator/models/captura-de-lead.md +1 -1
  37. package/extracted-skill/tracking-events-generator/models/checkout-proprio.md +1 -1
  38. package/extracted-skill/tracking-events-generator/models/lancamento-imobiliario.md +1 -1
  39. package/extracted-skill/tracking-events-generator/models/multi-step-checkout.md +5 -5
  40. package/extracted-skill/tracking-events-generator/models/pagina-obrigado.md +1 -1
  41. package/extracted-skill/tracking-events-generator/models/trafego-direto.md +4 -4
  42. package/extracted-skill/tracking-events-generator/models/webinar-registration.md +1 -1
  43. package/package.json +1 -1
  44. package/server-edge-tracker/INSTALAR.md +3 -3
  45. package/server-edge-tracker/index.ts +37 -36
  46. package/server-edge-tracker/modules/db.ts +1 -1
  47. package/server-edge-tracker/modules/dispatch/crm.ts +26 -363
  48. package/server-edge-tracker/modules/dispatch/meta.ts +2 -2
  49. package/server-edge-tracker/modules/dispatch/whatsapp.ts +7 -18
  50. package/server-edge-tracker/modules/intelligence.ts +4 -4
  51. package/server-edge-tracker/modules/ml/fraud.ts +15 -3
  52. package/server-edge-tracker/modules/nurture.ts +1 -1
  53. package/server-edge-tracker/schema.sql +1 -1
  54. package/server-edge-tracker/types.ts +12 -8
  55. package/server-edge-tracker/wrangler.toml +143 -140
  56. package/templates/captura-de-lead.md +1 -1
  57. package/templates/checkout-proprio.md +1 -1
  58. package/templates/lancamento-imobiliario.md +1 -1
  59. package/templates/multi-step-checkout.md +5 -5
  60. package/templates/pagina-obrigado.md +1 -1
  61. package/templates/trafego-direto.md +4 -4
  62. package/templates/webinar-registration.md +1 -1
  63. package/extracted-skill/tracking-events-generator/agents/evo-crm-agent.md +0 -244
@@ -1,140 +1,143 @@
1
- name = "server-edge-tracker"
2
- # Entry point: worker.js (monólito original, 100% compatível)
3
- # Para usar a versão modular ES Modules: altere para main = "index.ts"
4
- main = "index.ts"
5
- compatibility_date = "2025-01-01"
6
- compatibility_flags = ["nodejs_compat"]
7
- workers_dev = true
8
-
9
- # ── Worker Routes — same-domain tracking (imune a bloqueios) ─────────────────
10
- # Substituir SEU_DOMINIO pelo domínio do cliente antes do deploy
11
- # [[routes]]
12
- # pattern = "SEU_DOMINIO/track*"
13
- # zone_name = "SEU_DOMINIO"
14
- #
15
- # [[routes]]
16
- # pattern = "*.SEU_DOMINIO/track*"
17
- # zone_name = "SEU_DOMINIO"
18
-
19
- # [[routes]]
20
- # pattern = "SEU_DOMINIO/track*"
21
- # zone_name = "SEU_DOMINIO"
22
- #
23
- # [[routes]]
24
- # pattern = "*.SEU_DOMINIO/track*"
25
- # zone_name = "SEU_DOMINIO"
26
-
27
- # ── Variáveis públicas (não são segredos) ─────────────────────────────────────
28
- [vars]
29
- META_PIXEL_ID = ""
30
- GA4_MEASUREMENT_ID = ""
31
- TIKTOK_PIXEL_ID = ""
32
- SITE_DOMAIN = "SEU_DOMINIO"
33
-
34
- # ── Banco D1 ──────────────────────────────────────────────────────────────────
35
- # Após criar o banco com "wrangler d1 create cdp-edge-db",
36
- # substitua o database_id pelo ID retornado no terminal.
37
- [[d1_databases]]
38
- binding = "DB"
39
- database_name = "cdp-edge-db"
40
- database_id = "7867d38f-5fa8-4c17-b465-386211422c09"
41
-
42
- # ── Queues Retry + Dead Letter Queue ───────────────────────────────────────
43
- # Produtor: worker envia eventos com falha para cdp-edge-retry
44
- # Consumidor: worker processa a fila e reaplica; falhas vão para cdp-edge-dlq
45
- # Criar com: wrangler queues create cdp-edge-retry
46
- # wrangler queues create cdp-edge-dlq
47
- [[queues.producers]]
48
- binding = "RETRY_QUEUE"
49
- queue = "cdp-edge-retry"
50
-
51
- [[queues.consumers]]
52
- queue = "cdp-edge-retry"
53
- max_batch_size = 10
54
- max_batch_timeout = 30
55
- max_retries = 3
56
- dead_letter_queue = "cdp-edge-dlq"
57
-
58
- # ── KV Namespace — Geo/Session Cache ─────────────────────────────────────────
59
- # Cache de geolocalização e sessões recentes (TTL: 1h por padrão)
60
- # Criar com: wrangler kv namespace create GEO_CACHE
61
- # wrangler kv namespace create GEO_CACHE --preview
62
- [[kv_namespaces]]
63
- binding = "GEO_CACHE"
64
- id = "821b6c1ccb4b475985439b801c1fdbe0"
65
- preview_id = "d2d9198f47e340ee905a8dc566b09e95"
66
-
67
- # ── R2 Bucket Audit Logs ────────────────────────────────────────────────────
68
- # Logs imutáveis por evento: logs/YYYY/MM/DD/{timestamp}_{eventName}.json
69
- # Sem PII apenas userId, eventId, ltvClass, UTMs, geo
70
- [[r2_buckets]]
71
- binding = "AUDIT_LOGS"
72
- bucket_name = "cdp-edge-logs"
73
-
74
- # ── Cron Triggers — Intelligence Agent ───────────────────────────────────────
75
- # Semanal: domingo 02:00 UTC check de versões de API + relatório diário
76
- # Mensal: 1º do mês 03:00 UTC — auditoria de taxa de erro + alertas críticos
77
- [triggers]
78
- crons = ["0 2 * * 7", "0 3 1 * *"]
79
-
80
- # ── Cloudflare Workers AI ─────────────────────────────────────────────────────
81
- # Habilita env.AI para LTV Prediction (Fase 4)
82
- # Plano gratuito inclui 10.000 neurônios/dia suficiente para enrichment
83
- [ai]
84
- binding = "AI"
85
-
86
- # ── Rate Limiting proteção do /track contra abuso de cota ──────────────────
87
- # Bloqueia na borda ANTES de qualquer processamento do Worker
88
- # Limite: 60 requisições por minuto por IP (generoso para usuário real)
89
- # Requer Workers Paid plan ($5/mês) — remover bloco se usar plano free
90
- [[unsafe.bindings]]
91
- name = "RATE_LIMITER"
92
- type = "ratelimit"
93
- namespace_id = "1001"
94
-
95
- [unsafe.bindings.simple]
96
- limit = 60
97
- period = 60
98
-
99
- # ── Observabilidade — Logs + Traces persistidos no painel Cloudflare ─────────
100
- [observability]
101
- enabled = false
102
- head_sampling_rate = 1
103
-
104
- [observability.logs]
105
- enabled = true
106
- head_sampling_rate = 1
107
- persist = true
108
- invocation_logs = true
109
-
110
- [observability.traces]
111
- enabled = false
112
- persist = true
113
- head_sampling_rate = 1
114
-
115
- # ── Secrets (NÃO ficam aqui — configurar via CLI) ─────────────────────────────
116
- # wrangler secret put META_ACCESS_TOKEN ← token Meta CAPI (obrigatório)
117
- # wrangler secret put GA4_API_SECRET ← secret GA4 Measurement Protocol (obrigatório)
118
- # wrangler secret put TIKTOK_ACCESS_TOKEN ← token TikTok Events API (opcional)
119
- # wrangler secret put META_TEST_CODE ← só para testes (remover em produção)
120
- # wrangler secret put META_AD_ACCOUNT_ID ← ID da conta de anúncios Meta (act_XXXXXXXXX) — Customer Match
121
- # wrangler secret put META_AUDIENCE_ID ← ID da Custom Audience Meta — Customer Match automático
122
- # wrangler secret put WHATSAPP_TOKEN ← Token WhatsApp Cloud API (Meta Business Suite)
123
- # wrangler secret put WHATSAPP_PHONE_NUMBER_ID ← ID do número WhatsApp (Meta Business Suite Phone Numbers)
124
- # wrangler secret put RESEND_API_KEY ← API Key do Resend (resend.com)
125
- # wrangler secret put RESEND_FROM_EMAIL ← Remetente verificado ex: "CDP Edge <noreply@seudominio.com.br>"
126
- # wrangler secret put WA_WEBHOOK_VERIFY_TOKEN ← Token de verificação do webhook WhatsApp (você define — qualquer string segura)
127
- # wrangler secret put WEBHOOK_SECRET_TICTO HMAC-SHA256 Ticto
128
- # wrangler secret put PINTEREST_ACCESS_TOKEN Bearer token Pinterest Conversions API
129
- # wrangler secret put PINTEREST_AD_ACCOUNT_ID ID da conta de anúncios Pinterest (ex: 549755813XXX)
130
- # wrangler secret put REDDIT_ACCESS_TOKENBearer token Reddit Conversions API
131
- # wrangler secret put REDDIT_AD_ACCOUNT_ID ID da conta de anúncios Reddit (ex: t2_XXXXXXX)
132
- # wrangler secret put LINKEDIN_ACCESS_TOKEN OAuth2 Bearer token LinkedIn Marketing API
133
- # wrangler secret put LINKEDIN_CONVERSION_ID ID da conversão LinkedIn (ex: 12345678)
134
- # wrangler secret put LINKEDIN_AD_ACCOUNT_ID ← ID da conta de anúncios LinkedIn
135
- # wrangler secret put SPOTIFY_ACCESS_TOKEN Bearer token Spotify Advertising API
136
- # wrangler secret put SPOTIFY_AD_ACCOUNT_ID ID da conta de anúncios Spotify Ads
137
- # wrangler secret put EVO_CRM_BASE_URL URL base do EVO CRM (ex: https://api-evocrm.suaempresa.com)
138
- # wrangler secret put EVO_CRM_CLIENT_ID OAuth client_id (Doorkeeper app no CRM)
139
- # wrangler secret put EVO_CRM_CLIENT_SECRET OAuth client_secret
140
- # wrangler secret put EVO_CRM_INBOX_ID ID do inbox onde as conversas serão criadas
1
+ name = "server-edge-tracker"
2
+ # Entry point: worker.js (monólito original, 100% compatível)
3
+ # Para usar a versão modular ES Modules: altere para main = "index.ts"
4
+ main = "index.ts"
5
+ compatibility_date = "2025-01-01"
6
+ compatibility_flags = ["nodejs_compat"]
7
+ workers_dev = true
8
+
9
+ # ── Worker Routes — same-domain tracking (imune a bloqueios) ─────────────────
10
+ # Configurar por projeto antes do deploy:
11
+ # [[routes]]
12
+ # pattern = "SEU_DOMINIO/track*"
13
+ # zone_name = "SEU_DOMINIO"
14
+ #
15
+ # [[routes]]
16
+ # pattern = "*.SEU_DOMINIO/track*"
17
+ # zone_name = "SEU_DOMINIO"
18
+ #
19
+ # [[routes]]
20
+ # pattern = "SEU_DOMINIO/webhook/*"
21
+ # zone_name = "SEU_DOMINIO"
22
+ #
23
+ # [[routes]]
24
+ # pattern = "SEU_DOMINIO/health"
25
+ # zone_name = "SEU_DOMINIO"
26
+ #
27
+ # [[routes]]
28
+ # pattern = "SEU_DOMINIO/api/*"
29
+ # zone_name = "SEU_DOMINIO"
30
+
31
+ # ── Variáveis públicas (não são segredos) ─────────────────────────────────────
32
+ # Preencher por projeto antes do deploy:
33
+ [vars]
34
+ META_PIXEL_ID = ""
35
+ GA4_MEASUREMENT_ID = ""
36
+ TIKTOK_PIXEL_ID = ""
37
+ SITE_DOMAIN = "SEU_DOMINIO"
38
+ ZAPMAN_API_URL = ""
39
+ ZAPMAN_CRM_INSTANCE = ""
40
+ ZAPMAN_WEBHOOK_URL = ""
41
+
42
+ # ── Banco D1 ──────────────────────────────────────────────────────────────────
43
+ # Após criar o banco com "wrangler d1 create cdp-edge-db",
44
+ # substitua o database_id pelo ID retornado no terminal.
45
+ [[d1_databases]]
46
+ binding = "DB"
47
+ database_name = "cdp-edge-db"
48
+ database_id = "7867d38f-5fa8-4c17-b465-386211422c09"
49
+
50
+ # ── Queues — Retry + Dead Letter Queue ───────────────────────────────────────
51
+ # Produtor: worker envia eventos com falha para cdp-edge-retry
52
+ # Consumidor: worker processa a fila e reaplica; falhas vão para cdp-edge-dlq
53
+ # Criar com: wrangler queues create cdp-edge-retry
54
+ # wrangler queues create cdp-edge-dlq
55
+ [[queues.producers]]
56
+ binding = "RETRY_QUEUE"
57
+ queue = "cdp-edge-retry"
58
+
59
+ [[queues.consumers]]
60
+ queue = "cdp-edge-retry"
61
+ max_batch_size = 10
62
+ max_batch_timeout = 30
63
+ max_retries = 3
64
+ dead_letter_queue = "cdp-edge-dlq"
65
+
66
+ # ── KV Namespace — Geo/Session Cache ─────────────────────────────────────────
67
+ # Cache de geolocalização e sessões recentes (TTL: 1h por padrão)
68
+ # Criar com: wrangler kv namespace create GEO_CACHE
69
+ # wrangler kv namespace create GEO_CACHE --preview
70
+ [[kv_namespaces]]
71
+ binding = "GEO_CACHE"
72
+ id = "821b6c1ccb4b475985439b801c1fdbe0"
73
+ preview_id = "d2d9198f47e340ee905a8dc566b09e95"
74
+
75
+ # ── R2 BucketAudit Logs ────────────────────────────────────────────────────
76
+ # Logs imutáveis por evento: logs/YYYY/MM/DD/{timestamp}_{eventName}.json
77
+ # Sem PII — apenas userId, eventId, ltvClass, UTMs, geo
78
+ [[r2_buckets]]
79
+ binding = "AUDIT_LOGS"
80
+ bucket_name = "cdp-edge-logs"
81
+
82
+ # ── Cron TriggersIntelligence Agent ───────────────────────────────────────
83
+ # Semanal: domingo 02:00 UTC — check de versões de API + relatório diário
84
+ # Mensal: 1º do mês 03:00 UTC — auditoria de taxa de erro + alertas críticos
85
+ [triggers]
86
+ crons = ["0 2 * * 7", "0 3 1 * *"]
87
+
88
+ # ── Cloudflare Workers AI ─────────────────────────────────────────────────────
89
+ # Habilita env.AI para LTV Prediction (Fase 4)
90
+ # Plano gratuito inclui 10.000 neurônios/dia — suficiente para enrichment
91
+ [ai]
92
+ binding = "AI"
93
+
94
+ # ── Rate Limiting — proteção do /track contra abuso de cota ──────────────────
95
+ # Bloqueia na borda ANTES de qualquer processamento do Worker
96
+ # Limite: 60 requisições por minuto por IP (generoso para usuário real)
97
+ # Requer Workers Paid plan ($5/mês) — remover bloco se usar plano free
98
+ [[unsafe.bindings]]
99
+ name = "RATE_LIMITER"
100
+ type = "ratelimit"
101
+ namespace_id = "1001"
102
+
103
+ [unsafe.bindings.simple]
104
+ limit = 60
105
+ period = 60
106
+
107
+ # ── Observabilidade — Logs + Traces persistidos no painel Cloudflare ─────────
108
+ [observability]
109
+ enabled = false
110
+ head_sampling_rate = 1
111
+
112
+ [observability.logs]
113
+ enabled = true
114
+ head_sampling_rate = 1
115
+ persist = true
116
+ invocation_logs = true
117
+
118
+ [observability.traces]
119
+ enabled = false
120
+ persist = true
121
+ head_sampling_rate = 1
122
+
123
+ # ── Secrets (NÃO ficam aqui configurar via CLI uma única vez) ───────────────
124
+ # Secrets são PERMANENTES na Cloudflare deploy nunca apaga.
125
+ # execute o comando abaixo se o secret ainda não existir:
126
+ #
127
+ # wrangler secret put META_ACCESS_TOKEN token Meta CAPI
128
+ # wrangler secret put GA4_API_SECRET secret GA4 Measurement Protocol
129
+ # wrangler secret put TIKTOK_ACCESS_TOKEN token TikTok Events API (opcional)
130
+ # wrangler secret put META_AD_ACCOUNT_IDID da conta de anúncios Meta
131
+ # wrangler secret put WHATSAPP_TOKEN Token WhatsApp Cloud API
132
+ # wrangler secret put WHATSAPP_PHONE_NUMBER_ID ID do número WhatsApp
133
+ # wrangler secret put WA_ACCESS_TOKEN Token legado WhatsApp (compatibilidade)
134
+ # wrangler secret put WA_PHONE_ID ← ID legado do número (compatibilidade)
135
+ # wrangler secret put WA_NOTIFY_NUMBER Número que recebe alertas de venda/lead
136
+ # wrangler secret put WA_WEBHOOK_VERIFY_TOKEN Token de verificação do webhook WhatsApp
137
+ # wrangler secret put WEBHOOK_SECRET_TICTO HMAC-SHA256 Ticto
138
+ # wrangler secret put CALLMEBOT_PHONE Número CallMeBot para alertas
139
+ # wrangler secret put CALLMEBOT_APIKEY API Key CallMeBot
140
+ # wrangler secret put ZAPMAN_API_KEY DASHBOARD_SECRET do ZapMan (X-API-Key)
141
+ # wrangler secret put ALLOWED_COUNTRIES ← CSV ISO-2 geo-fence ex: "BR"
142
+ # wrangler secret put FRAUD_DROP_THRESHOLD ← Score mínimo para drop (default 50)
143
+ # wrangler secret put FRAUD_BLOCK_DATACENTERS ← "1" = bloquear datacenters
@@ -67,7 +67,7 @@ O PlayerBuilder Quantum Tier processa o evento via Cloudflare Worker:
67
67
  1. **Deduplicação**: Utiliza o `event_id` do browser para 100% de precisão na Meta CAPI.
68
68
  2. **Advanced Matching**: Aplica SHA256 em `email`, `phone`, `first_name` e `last_name` (WebCrypto native).
69
69
  3. **D1 Store**: Salva o lead e o Identity Graph na tabela `leads`.
70
- 4. **API Dispatch**: Envia assincronamente para Meta CAPI (v22.0) e TikTok Events API (v1.3).
70
+ 4. **API Dispatch**: Envia assincronamente para Meta CAPI (v25.0) e TikTok Events API (v1.3).
71
71
 
72
72
  ---
73
73
 
@@ -73,7 +73,7 @@ O Worker gerencia o estado da transação e a persistência.
73
73
  Ao receber o evento `Purchase`, o Worker salva na tabela `leads` com o status correspondente.
74
74
 
75
75
  ### 2.2 Despacho para APIs
76
- - O Worker envia `Purchase` para as APIs (Meta CAPI v22.0, TikTok v1.3).
76
+ - O Worker envia `Purchase` para as APIs (Meta CAPI v25.0, TikTok v1.3).
77
77
  - O `InitiateCheckout` prévio no D1 permite automação de recuperação de carrinho.
78
78
 
79
79
  ---
@@ -23,7 +23,7 @@ Browser (cdpTrack.js)
23
23
  ├─ Fraud Gate
24
24
  ├─ LTV Prediction (Granite 4.0 Micro) + score por eventType
25
25
  ├─ D1: upsertProfile, identity graph, distanceKm
26
- └─ CAPI dispatch: Meta v22.0 + GA4 + TikTok v1.3
26
+ └─ CAPI dispatch: Meta v25.0 + GA4 + TikTok v1.3
27
27
  ```
28
28
 
29
29
  ---
@@ -3,7 +3,7 @@
3
3
  > ✅ **STATUS: Quantum Tier (Server-Side Completo)**
4
4
  >
5
5
  > Checkout multi-etapa com rastreamento 100% Cloudflare Native (Workers + D1).
6
- > Inclui enriquecimento progressivo de identidade, deduplicação e dispatch server-side para Meta CAPI v22.0, GA4 MP e TikTok API v1.3.
6
+ > Inclui enriquecimento progressivo de identidade, deduplicação e dispatch server-side para Meta CAPI v25.0, GA4 MP e TikTok API v1.3.
7
7
 
8
8
  Checkout próprio dividido em múltiplas etapas: dados pessoais → endereço → pagamento → confirmação.
9
9
 
@@ -373,7 +373,7 @@ async function dispatchEvents(eventBody, sessionData, env) {
373
373
  }
374
374
  ```
375
375
 
376
- ### 2.4 Meta CAPI v22.0
376
+ ### 2.4 Meta CAPI v25.0
377
377
  ```javascript
378
378
  async function dispatchMeta(eventName, sessionData, env, customData = {}) {
379
379
  if (!env.META_ACCESS_TOKEN || !env.META_PIXEL_ID) return;
@@ -407,7 +407,7 @@ async function dispatchMeta(eventName, sessionData, env, customData = {}) {
407
407
  };
408
408
 
409
409
  const res = await fetch(
410
- `https://graph.facebook.com/v22.0/${env.META_PIXEL_ID}/events?access_token=${env.META_ACCESS_TOKEN}`,
410
+ `https://graph.facebook.com/v25.0/${env.META_PIXEL_ID}/events?access_token=${env.META_ACCESS_TOKEN}`,
411
411
  {
412
412
  method: 'POST',
413
413
  headers: { 'Content-Type': 'application/json' },
@@ -591,7 +591,7 @@ CREATE INDEX IF NOT EXISTS idx_events_created ON events_log(created_at);
591
591
  ### Cloudflare Worker
592
592
  - [ ] Endpoint `/api/tracking` configurado como Route no Cloudflare
593
593
  - [ ] Identity Graph atualizado progressivamente conforme usuário preenche campos
594
- - [ ] Meta CAPI v22.0 endpoint correto
594
+ - [ ] Meta CAPI v25.0 endpoint correto
595
595
  - [ ] TikTok Events API v1.3 endpoint correto
596
596
  - [ ] GA4 Measurement Protocol configurado
597
597
  - [ ] CheckoutAbandonment logado apenas no D1 (não dispara para APIs)
@@ -628,7 +628,7 @@ CREATE INDEX IF NOT EXISTS idx_events_created ON events_log(created_at);
628
628
  └── Gateway: callback de sucesso → trackPurchaseConfirmed()
629
629
  └── JS: dispara Purchase → Worker
630
630
  └── Worker: recupera Identity Graph completa (todos os hashes)
631
- └── Worker: dispatch → Meta Purchase CAPI (v22.0)
631
+ └── Worker: dispatch → Meta Purchase CAPI (v25.0)
632
632
  └── Worker: dispatch → GA4 Purchase (MP)
633
633
  └── Worker: dispatch → TikTok CompletePayment (v1.3)
634
634
 
@@ -43,7 +43,7 @@ cdpTrack.track('ViewContent', {
43
43
  ## 🖥️ PASSO 2: SERVIDOR (CLOUDFLARE WORKER)
44
44
 
45
45
  O Worker realiza a verificação de duplicidade:
46
- - **D1 Cross-Check**: Verifica se o `transaction_id` já existe no banco antes de enviar para Meta CAPI (v22.0) e TikTok (v1.3).
46
+ - **D1 Cross-Check**: Verifica se o `transaction_id` já existe no banco antes de enviar para Meta CAPI (v25.0) e TikTok (v1.3).
47
47
  - **Match Quality**: Recupera os identificadores originais do banco de dados para enriquecer o evento.
48
48
 
49
49
  ---
@@ -323,7 +323,7 @@ async function handleWebhook(request, env, url) {
323
323
  }
324
324
  ```
325
325
 
326
- ### 2.3 Meta CAPI v22.0
326
+ ### 2.3 Meta CAPI v25.0
327
327
  ```javascript
328
328
  async function dispatchMeta(eventName, data, env, customData = {}) {
329
329
  if (!env.META_ACCESS_TOKEN || !env.META_PIXEL_ID) return;
@@ -356,7 +356,7 @@ async function dispatchMeta(eventName, data, env, customData = {}) {
356
356
  };
357
357
 
358
358
  const res = await fetch(
359
- `https://graph.facebook.com/v22.0/${env.META_PIXEL_ID}/events?access_token=${env.META_ACCESS_TOKEN}`,
359
+ `https://graph.facebook.com/v25.0/${env.META_PIXEL_ID}/events?access_token=${env.META_ACCESS_TOKEN}`,
360
360
  {
361
361
  method: 'POST',
362
362
  headers: { 'Content-Type': 'application/json' },
@@ -510,7 +510,7 @@ CREATE INDEX IF NOT EXISTS idx_fbc ON identity_graph(fbc);
510
510
  - [ ] Endpoint `/api/wh/{plataforma}` para webhooks
511
511
  - [ ] Salvar sessão no D1 com todos os cookies
512
512
  - [ ] D1 lookup pelo cdp_uid ao receber webhook
513
- - [ ] Meta CAPI v22.0 endpoint correto
513
+ - [ ] Meta CAPI v25.0 endpoint correto
514
514
  - [ ] TikTok Events API v1.3 endpoint correto
515
515
  - [ ] GA4 Measurement Protocol configurado
516
516
 
@@ -543,7 +543,7 @@ CREATE INDEX IF NOT EXISTS idx_fbc ON identity_graph(fbc);
543
543
  └── Plataforma envia webhook → /api/wh/{plataforma}
544
544
  └── Worker: extrai cdp_uid do webhook (xcod/sck/src)
545
545
  └── Worker: D1 lookup → recupera fbp, fbc, ttp, UTMs, IP
546
- └── Worker: dispatch → Meta Purchase CAPI (v22.0)
546
+ └── Worker: dispatch → Meta Purchase CAPI (v25.0)
547
547
  └── Worker: dispatch → GA4 Purchase (MP)
548
548
  └── Worker: dispatch → TikTok CompletePayment (v1.3)
549
549
  ```
@@ -52,7 +52,7 @@ document.querySelector('#form-webinar').addEventListener('submit', async (e) =>
52
52
  O Worker executa:
53
53
  - **Hashing**: Proteção de dados via SHA-256.
54
54
  - **D1 Store**: Gravação do lead e vinculação de UTMs para análise de ROI.
55
- - **API Dispatch**: Envio para Meta CAPI (v22.0) e TikTok Events API (v1.3).
55
+ - **API Dispatch**: Envio para Meta CAPI (v25.0) e TikTok Events API (v1.3).
56
56
 
57
57
  ---
58
58