- Un referral WhatsApp in entrata acquisisce
ctwa_cliddamessages[].referral.ctwa_clid. - Switchbord memorizza il click id sul payload del messaggio in entrata e su
conversation_attributions. - I binding del dataset a livello di canale determinano se un evento CTWA
Lead,QuoteRequested, oPurchaseè idoneo. - Viene creata una riga nel ledger
meta_capi_eventscon unevent_iddeterministico. - Il worker elabora
meta.capi.dispatche invia a/{dataset_id}/eventssolo quando il binding è attivato e non in modalità dry-run.
Binding del dataset
I binding sono ambito canale, non globali. Usa la route API dell’app riportata sotto da un contesto autenticato owner/admin:dryRun=true finché Events Manager non mostra eventi di test con la forma del payload attesa. L’invio in produzione (dryRun=false) viene rifiutato a meno che non sia presente un testEventCode e il binding esistente sia stato contrassegnato come verificato (health_status='ok' con last_verified_at).
ID evento
Switchbord usa ID deterministici per la deduplicazione:Lead:meta-capi:lead:{workspaceId}:{conversationId}:{attributionId}QuoteRequested:meta-capi:quote:{workspaceId}:{reservationTravioId}:{attributionId}Purchase:meta-capi:purchase:{workspaceId}:{reservationTravioId}:{confirmationTimestamp}
unique (workspace_id, event_id).
Regole del payload
Ogni payload di dispatch usa:action_source: business_messagingmessaging_channel: whatsapppartner_agent: switchborduser_data.ctwa_clidquando disponibileuser_data.page_idquando configurato- solo id di telefono/esterno con hash; non memorizzare né inviare numeri di telefono in chiaro
custom_data.valueecustom_data.currencyper il valore di quote/purchase quando presente
Authorization: Bearer ***, mai come parametri di query nell’URL.
Rollout
- Configura il binding con
enabled=true,dryRun=true, e un codice di evento di test. - Riproduci o attendi un inbound CTWA con
ctwa_clid. - Conferma che
meta_capi_events.status = 'dry_run'e che l’anteprima del payload non contenga il token. - Invia eventi di test a Events Manager.
- Passa un canale a
dryRun=falsesolo perLead. - Attiva
QuoteRequestedePurchasesolo dopo che l’integrazione con la fonte di verità Travio/status-3 è stata verificata.
enabled=false oppure dryRun=true sul binding del canale.