cdp-edge 1.2.2 → 1.4.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 +153 -306
- package/bin/cdp-edge.js +71 -61
- package/contracts/agent-versions.json +682 -0
- package/contracts/api-versions.json +372 -368
- package/contracts/types.ts +81 -0
- package/dist/commands/analyze.js +52 -52
- package/dist/commands/infra.js +54 -54
- package/dist/commands/install.js +26 -3
- package/dist/commands/server.js +174 -174
- package/dist/commands/setup.js +332 -100
- package/dist/commands/validate.js +248 -84
- package/dist/index.js +12 -12
- 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/whatsapp-ctwa.md +5 -4
- package/extracted-skill/tracking-events-generator/INTEGRACAO-COMPLETA.md +89 -0
- package/extracted-skill/tracking-events-generator/MELHORIAS-IMPLEMENTADAS.md +101 -0
- package/extracted-skill/tracking-events-generator/advanced-matching.js +364 -364
- package/extracted-skill/tracking-events-generator/agents/ab-ltv-agent.md +196 -0
- package/extracted-skill/tracking-events-generator/agents/ab-testing-agent.md +1 -1
- package/extracted-skill/tracking-events-generator/agents/attribution-agent.md +41 -41
- package/extracted-skill/tracking-events-generator/agents/bidding-agent.md +347 -0
- package/extracted-skill/tracking-events-generator/agents/bing-agent.md +40 -50
- package/extracted-skill/tracking-events-generator/agents/browser-tracking.md +174 -74
- package/extracted-skill/tracking-events-generator/agents/code-guardian-agent.md +1 -1
- package/extracted-skill/tracking-events-generator/agents/compliance-agent.md +25 -5
- package/extracted-skill/tracking-events-generator/agents/dashboard-agent.md +10 -10
- package/extracted-skill/tracking-events-generator/agents/database-agent.md +43 -42
- package/extracted-skill/tracking-events-generator/agents/debug-agent.md +22 -22
- package/extracted-skill/tracking-events-generator/agents/devops-agent.md +232 -0
- package/extracted-skill/tracking-events-generator/agents/domain-setup-agent.md +23 -9
- package/extracted-skill/tracking-events-generator/agents/email-agent.md +28 -1
- package/extracted-skill/tracking-events-generator/agents/evo-crm-agent.md +253 -0
- package/extracted-skill/tracking-events-generator/agents/fingerprint-agent.md +206 -1
- package/extracted-skill/tracking-events-generator/agents/fraud-detection-agent.md +143 -0
- package/extracted-skill/tracking-events-generator/agents/google-agent.md +128 -2
- package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +191 -31
- package/extracted-skill/tracking-events-generator/agents/lead-scoring-agent.md +282 -0
- package/extracted-skill/tracking-events-generator/agents/linkedin-agent.md +145 -34
- package/extracted-skill/tracking-events-generator/agents/localization-agent.md +1 -1
- package/extracted-skill/tracking-events-generator/agents/ltv-predictor-agent.md +24 -5
- package/extracted-skill/tracking-events-generator/agents/master-feedback-loop.md +81 -21
- package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +588 -93
- package/extracted-skill/tracking-events-generator/agents/match-quality-agent.md +304 -0
- package/extracted-skill/tracking-events-generator/agents/memory-agent.md +190 -15
- package/extracted-skill/tracking-events-generator/agents/meta-agent.md +10 -2
- package/extracted-skill/tracking-events-generator/agents/ml-clustering-agent.md +769 -0
- package/extracted-skill/tracking-events-generator/agents/page-analyzer.md +21 -4
- package/extracted-skill/tracking-events-generator/agents/performance-agent.md +41 -31
- package/extracted-skill/tracking-events-generator/agents/performance-optimization-agent.md +18 -8
- package/extracted-skill/tracking-events-generator/agents/pinterest-agent.md +14 -6
- package/extracted-skill/tracking-events-generator/agents/premium-tracking-intelligence-agent.md +7 -7
- package/extracted-skill/tracking-events-generator/agents/r2-setup-agent.md +16 -8
- package/extracted-skill/tracking-events-generator/agents/reddit-agent.md +15 -7
- package/extracted-skill/tracking-events-generator/agents/security-enterprise-agent.md +157 -48
- package/extracted-skill/tracking-events-generator/agents/server-tracking.md +35 -35
- package/extracted-skill/tracking-events-generator/agents/spotify-agent.md +15 -7
- package/extracted-skill/tracking-events-generator/agents/tiktok-agent.md +73 -2
- package/extracted-skill/tracking-events-generator/agents/tracking-plan-agent.md +104 -9
- package/extracted-skill/tracking-events-generator/agents/utm-agent.md +322 -0
- package/extracted-skill/tracking-events-generator/agents/validator-agent.md +13 -9
- package/extracted-skill/tracking-events-generator/agents/webhook-agent.md +112 -4
- package/extracted-skill/tracking-events-generator/agents/whatsapp-agent.md +58 -5
- package/extracted-skill/tracking-events-generator/agents/whatsapp-ctwa-setup-agent.md +26 -18
- package/extracted-skill/tracking-events-generator/agents/youtube-agent.md +152 -37
- package/extracted-skill/tracking-events-generator/anti-blocking.js +285 -285
- package/extracted-skill/tracking-events-generator/cdpTrack.js +642 -641
- package/extracted-skill/tracking-events-generator/contracts/api-versions.json +14 -10
- package/extracted-skill/tracking-events-generator/engagement-scoring.js +226 -226
- package/extracted-skill/tracking-events-generator/evals/evals.json +235 -235
- package/extracted-skill/tracking-events-generator/integration-test.js +497 -497
- package/extracted-skill/tracking-events-generator/knowledge-base.md +172 -0
- package/extracted-skill/tracking-events-generator/micro-events.js +992 -992
- package/extracted-skill/tracking-events-generator/models/lancamento-imobiliario.md +344 -0
- package/extracted-skill/tracking-events-generator/models/pinterest/conversions-api-template.js +144 -144
- package/extracted-skill/tracking-events-generator/models/pinterest/event-mappings.json +48 -48
- package/extracted-skill/tracking-events-generator/models/pinterest/tag-template.js +28 -28
- package/extracted-skill/tracking-events-generator/models/quiz-funnel.md +83 -19
- package/extracted-skill/tracking-events-generator/models/reddit/conversions-api-template.js +205 -205
- package/extracted-skill/tracking-events-generator/models/reddit/event-mappings.json +56 -56
- package/extracted-skill/tracking-events-generator/models/reddit/pixel-template.js +19 -19
- package/extracted-skill/tracking-events-generator/models/scenarios/behavior-engine.js +425 -425
- package/extracted-skill/tracking-events-generator/route-intent-capture.js +222 -0
- package/extracted-skill/tracking-events-generator/tracking.config.js +3 -3
- package/package.json +89 -75
- package/scripts/build-sdk.js +106 -0
- package/server-edge-tracker/.client.env.example +14 -0
- package/server-edge-tracker/INSTALAR.md +222 -23
- 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 +1230 -0
- package/server-edge-tracker/migrate-v7.sql +64 -0
- package/server-edge-tracker/modules/db.ts +710 -0
- package/server-edge-tracker/modules/dispatch/crm.ts +382 -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 +296 -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 +281 -265
- package/server-edge-tracker/types.ts +275 -0
- package/server-edge-tracker/wrangler.toml +140 -85
- package/templates/lancamento-imobiliario.md +344 -0
- package/templates/multi-step-checkout.md +3 -4
- package/templates/pinterest/conversions-api-template.js +144 -144
- package/templates/pinterest/event-mappings.json +48 -48
- package/templates/pinterest/tag-template.js +28 -28
- package/templates/quiz-funnel.md +83 -19
- package/templates/reddit/conversions-api-template.js +205 -205
- package/templates/reddit/event-mappings.json +56 -56
- package/templates/reddit/pixel-template.js +12 -39
- package/templates/scenarios/behavior-engine.js +45 -22
- package/docs/PixelBuilder-Documentacao-Completa (2).docx +0 -0
- package/docs/installation.md +0 -155
- package/docs/quick-start.md +0 -185
- package/extracted-skill/tracking-events-generator/agents/crm-integration-agent.md +0 -1419
- package/extracted-skill/tracking-events-generator/agents/intelligence-scheduling.md +0 -643
- package/server-edge-tracker/worker.js +0 -2574
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDP Edge — Server Types
|
|
3
|
+
* Tipos para o Cloudflare Worker e bindings
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { D1Database, KVNamespace, Queue, R2Bucket } from '@cloudflare/workers-types';
|
|
7
|
+
|
|
8
|
+
// ── Environment Bindings ─────────────────────────────────────────────────────
|
|
9
|
+
export interface Env {
|
|
10
|
+
// D1 Database
|
|
11
|
+
DB?: D1Database;
|
|
12
|
+
|
|
13
|
+
// KV Namespace
|
|
14
|
+
GEO_CACHE?: KVNamespace;
|
|
15
|
+
|
|
16
|
+
// R2 Bucket
|
|
17
|
+
AUDIT_LOGS?: R2Bucket;
|
|
18
|
+
|
|
19
|
+
// Workers AI
|
|
20
|
+
AI?: any;
|
|
21
|
+
|
|
22
|
+
// Rate Limiter
|
|
23
|
+
RATE_LIMITER?: any;
|
|
24
|
+
|
|
25
|
+
// Queue — Retry de eventos com falha de rede
|
|
26
|
+
RETRY_QUEUE?: Queue<QueueMessage>;
|
|
27
|
+
|
|
28
|
+
// Public Variables
|
|
29
|
+
META_PIXEL_ID?: string;
|
|
30
|
+
GA4_MEASUREMENT_ID?: string;
|
|
31
|
+
TIKTOK_PIXEL_ID?: string;
|
|
32
|
+
SITE_DOMAIN?: string;
|
|
33
|
+
|
|
34
|
+
// Secrets
|
|
35
|
+
META_ACCESS_TOKEN?: string;
|
|
36
|
+
GA4_API_SECRET?: string;
|
|
37
|
+
TIKTOK_ACCESS_TOKEN?: string;
|
|
38
|
+
WA_WEBHOOK_VERIFY_TOKEN?: string;
|
|
39
|
+
// WhatsApp Cloud API — nomes canônicos (Meta Cloud API v22.0)
|
|
40
|
+
WHATSAPP_ACCESS_TOKEN?: string; // canonical: Bearer token do System User
|
|
41
|
+
WHATSAPP_PHONE_NUMBER_ID?: string; // canonical: ID numérico do número no Meta Business
|
|
42
|
+
// WhatsApp Cloud API — nomes legados (backwards compat)
|
|
43
|
+
WA_ACCESS_TOKEN?: string;
|
|
44
|
+
WA_PHONE_ID?: string;
|
|
45
|
+
WA_NOTIFY_NUMBER?: string;
|
|
46
|
+
CALLMEBOT_PHONE?: string;
|
|
47
|
+
WEBHOOK_SECRET_TICTO?: string;
|
|
48
|
+
WEBHOOK_SECRET_HOTMART?: string;
|
|
49
|
+
WEBHOOK_SECRET_KIWIFY?: string;
|
|
50
|
+
META_TEST_CODE?: string;
|
|
51
|
+
META_AD_ACCOUNT_ID?: string;
|
|
52
|
+
META_AUDIENCE_ID?: string;
|
|
53
|
+
PINTEREST_ACCESS_TOKEN?: string;
|
|
54
|
+
PINTEREST_AD_ACCOUNT_ID?: string;
|
|
55
|
+
REDDIT_ACCESS_TOKEN?: string;
|
|
56
|
+
REDDIT_AD_ACCOUNT_ID?: string;
|
|
57
|
+
LINKEDIN_ACCESS_TOKEN?: string;
|
|
58
|
+
LINKEDIN_CONVERSION_ID?: string;
|
|
59
|
+
LINKEDIN_AD_ACCOUNT_ID?: string;
|
|
60
|
+
SPOTIFY_ACCESS_TOKEN?: string;
|
|
61
|
+
SPOTIFY_AD_ACCOUNT_ID?: string;
|
|
62
|
+
|
|
63
|
+
// Email and Notification
|
|
64
|
+
RESEND_API_KEY?: string;
|
|
65
|
+
RESEND_FROM_EMAIL?: string;
|
|
66
|
+
CALLMEBOT_APIKEY?: string;
|
|
67
|
+
|
|
68
|
+
// EVO CRM — OAuth2 client_credentials
|
|
69
|
+
EVO_CRM_BASE_URL?: string; // URL base do EVO CRM (ex: https://api-evocrm.suaempresa.com)
|
|
70
|
+
EVO_CRM_CLIENT_ID?: string; // OAuth client_id (Doorkeeper app)
|
|
71
|
+
EVO_CRM_CLIENT_SECRET?: string; // OAuth client_secret
|
|
72
|
+
EVO_CRM_INBOX_ID?: string; // ID do inbox onde as conversas serão criadas
|
|
73
|
+
EVO_CRM_DEFAULT_COUNTRY?: string; // Country dial code para phones locais (default "55" = Brasil)
|
|
74
|
+
EVO_CRM_LOCALE?: string; // Locale da nota interna: "pt-BR" | "en-US" | "es-ES" (default "pt-BR")
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// ── Event Payload Types ───────────────────────────────────────────────────────
|
|
78
|
+
export interface TrackPayload {
|
|
79
|
+
eventName?: string;
|
|
80
|
+
eventId?: string;
|
|
81
|
+
event_id?: string;
|
|
82
|
+
userId?: string;
|
|
83
|
+
email?: string | null;
|
|
84
|
+
phone?: string | null;
|
|
85
|
+
firstName?: string | null;
|
|
86
|
+
lastName?: string | null;
|
|
87
|
+
city?: string | null;
|
|
88
|
+
state?: string | null;
|
|
89
|
+
zip?: string | null;
|
|
90
|
+
country?: string | null;
|
|
91
|
+
dob?: string | null;
|
|
92
|
+
|
|
93
|
+
// Identifiers
|
|
94
|
+
fbp?: string | null;
|
|
95
|
+
fbc?: string | null;
|
|
96
|
+
fbclid?: string | null;
|
|
97
|
+
ttp?: string | null;
|
|
98
|
+
gclid?: string | null;
|
|
99
|
+
wbraid?: string | null;
|
|
100
|
+
gbraid?: string | null;
|
|
101
|
+
ttclid?: string | null;
|
|
102
|
+
rclid?: string | null;
|
|
103
|
+
msclkid?: string | null;
|
|
104
|
+
li_fat_id?: string | null;
|
|
105
|
+
gaClientId?: string | null;
|
|
106
|
+
sessionId?: string | null;
|
|
107
|
+
|
|
108
|
+
// Parameters
|
|
109
|
+
value?: number | null;
|
|
110
|
+
currency?: string | null;
|
|
111
|
+
contentIds?: string[] | null;
|
|
112
|
+
contentName?: string | null;
|
|
113
|
+
contentType?: string | null;
|
|
114
|
+
pageUrl?: string | null;
|
|
115
|
+
orderId?: string | null;
|
|
116
|
+
productName?: string | null;
|
|
117
|
+
|
|
118
|
+
// Quantum Tracking Details
|
|
119
|
+
intent_score?: string | number | null;
|
|
120
|
+
intentScoreNum?: number | null;
|
|
121
|
+
intent_bucket?: string | null;
|
|
122
|
+
intent_penalized?: boolean;
|
|
123
|
+
metaSignal?: number | null;
|
|
124
|
+
metaSignalBucket?: string | null;
|
|
125
|
+
distanceBucket?: string | null;
|
|
126
|
+
distanceKm?: number | null;
|
|
127
|
+
funnel_stage?: string | null;
|
|
128
|
+
funnelDepth?: string | null;
|
|
129
|
+
funnelLevel?: string | null;
|
|
130
|
+
internalEvent?: string | null;
|
|
131
|
+
botScore?: number | null;
|
|
132
|
+
|
|
133
|
+
// Real Estate
|
|
134
|
+
property_lat?: string | number | null;
|
|
135
|
+
propertyLat?: string | number | null;
|
|
136
|
+
property_lng?: string | number | null;
|
|
137
|
+
propertyLng?: string | number | null;
|
|
138
|
+
|
|
139
|
+
// Engagement
|
|
140
|
+
engagementScore?: number | null;
|
|
141
|
+
intentionLevel?: string | null;
|
|
142
|
+
userScore?: number | null;
|
|
143
|
+
scrollScore?: number | null;
|
|
144
|
+
timeLevel?: string | null;
|
|
145
|
+
|
|
146
|
+
// UTM
|
|
147
|
+
utmSource?: string | null;
|
|
148
|
+
utmMedium?: string | null;
|
|
149
|
+
utmCampaign?: string | null;
|
|
150
|
+
utmContent?: string | null;
|
|
151
|
+
utmTerm?: string | null;
|
|
152
|
+
utmRestored?: boolean;
|
|
153
|
+
|
|
154
|
+
// LTV
|
|
155
|
+
ltvClass?: string | null;
|
|
156
|
+
ltvScore?: number | null;
|
|
157
|
+
|
|
158
|
+
// Additional fields
|
|
159
|
+
[key: string]: any;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export interface BehavioralData {
|
|
163
|
+
engagement_score?: number;
|
|
164
|
+
totalScore?: number;
|
|
165
|
+
intention_level?: string;
|
|
166
|
+
user_score?: number;
|
|
167
|
+
scroll_score?: number;
|
|
168
|
+
time_level?: string;
|
|
169
|
+
email?: string | null;
|
|
170
|
+
phone?: string | null;
|
|
171
|
+
first_name?: string | null;
|
|
172
|
+
firstName?: string | null;
|
|
173
|
+
last_name?: string | null;
|
|
174
|
+
lastName?: string | null;
|
|
175
|
+
city?: string | null;
|
|
176
|
+
state?: string | null;
|
|
177
|
+
zip?: string | null;
|
|
178
|
+
dob?: string | null;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// ── Webhook Types ─────────────────────────────────────────────────────────────
|
|
182
|
+
export interface HotmartWebhook {
|
|
183
|
+
data?: {
|
|
184
|
+
buyer?: {
|
|
185
|
+
email?: string;
|
|
186
|
+
phone?: string;
|
|
187
|
+
name?: string;
|
|
188
|
+
};
|
|
189
|
+
purchase?: {
|
|
190
|
+
status?: string;
|
|
191
|
+
transaction?: string;
|
|
192
|
+
price?: {
|
|
193
|
+
value?: number;
|
|
194
|
+
currency_value?: string;
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
product?: {
|
|
198
|
+
id?: string;
|
|
199
|
+
ucode?: string;
|
|
200
|
+
name?: string;
|
|
201
|
+
};
|
|
202
|
+
};
|
|
203
|
+
[key: string]: any;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export interface KiwifyWebhook {
|
|
207
|
+
order_status?: string;
|
|
208
|
+
order_id?: string;
|
|
209
|
+
order_value?: string;
|
|
210
|
+
Customer?: {
|
|
211
|
+
email?: string;
|
|
212
|
+
mobile?: string;
|
|
213
|
+
full_name?: string;
|
|
214
|
+
};
|
|
215
|
+
Product?: {
|
|
216
|
+
product_id?: string;
|
|
217
|
+
product_name?: string;
|
|
218
|
+
};
|
|
219
|
+
[key: string]: any;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export interface TictoWebhook {
|
|
223
|
+
status?: string;
|
|
224
|
+
customer?: {
|
|
225
|
+
email?: string;
|
|
226
|
+
phone?: string;
|
|
227
|
+
name?: string;
|
|
228
|
+
};
|
|
229
|
+
order?: {
|
|
230
|
+
hash?: string;
|
|
231
|
+
transaction_hash?: string;
|
|
232
|
+
id?: string;
|
|
233
|
+
paid_amount?: number;
|
|
234
|
+
total?: number;
|
|
235
|
+
amount?: number;
|
|
236
|
+
};
|
|
237
|
+
item?: {
|
|
238
|
+
product_id?: string;
|
|
239
|
+
product_name?: string;
|
|
240
|
+
};
|
|
241
|
+
tracking?: {
|
|
242
|
+
user_id?: string;
|
|
243
|
+
fbclid?: string;
|
|
244
|
+
utm_source?: string;
|
|
245
|
+
src?: string;
|
|
246
|
+
utm_medium?: string;
|
|
247
|
+
utm_campaign?: string;
|
|
248
|
+
utm_content?: string;
|
|
249
|
+
};
|
|
250
|
+
url_params?: {
|
|
251
|
+
user_id?: string;
|
|
252
|
+
fbclid?: string;
|
|
253
|
+
utm_source?: string;
|
|
254
|
+
src?: string;
|
|
255
|
+
utm_medium?: string;
|
|
256
|
+
utm_campaign?: string;
|
|
257
|
+
utm_content?: string;
|
|
258
|
+
};
|
|
259
|
+
[key: string]: any;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// ── Queue Message Types ───────────────────────────────────────────────────────
|
|
263
|
+
export interface QueueMessage {
|
|
264
|
+
eventType: string;
|
|
265
|
+
payload: TrackPayload;
|
|
266
|
+
platform: string;
|
|
267
|
+
attempt?: number;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// ── Promise Settled Result Helpers ─────────────────────────────────────────────
|
|
271
|
+
export interface PromiseResult<T> {
|
|
272
|
+
status: 'fulfilled' | 'rejected';
|
|
273
|
+
value?: T;
|
|
274
|
+
reason?: Error | string;
|
|
275
|
+
}
|
|
@@ -1,85 +1,140 @@
|
|
|
1
|
-
name = "server-edge-tracker"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
#
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
#
|
|
60
|
-
#
|
|
61
|
-
#
|
|
62
|
-
[
|
|
63
|
-
binding
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
#
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
#
|
|
81
|
-
#
|
|
82
|
-
#
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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_TOKEN ← Bearer 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
|