Contact sync from external systems
Use these endpoints to upsert a contact record from any external system.Staged path
POST /compat/contact
This is the recommended path for new integrations. It accepts the Charles-style contact update shape, including external_reference_id, source_type, and person_properties as first-class fields.
Legacy path
PUT /api/v1beta/contact/
Use this path if you have an upstream system that was already sending to the Charles contact mutation endpoint. The response includes status and message fields to match the expected shape from that system.
Both paths accept the same contact payload shape. Use
/compat/contact for new integrations and the legacy path only when an upstream system cannot be reconfigured.Journey triggers from external systems
Trigger a Switchbord journey from any external system using one of these paths:| Path | When to use |
|---|---|
POST /compat/journey-trigger/{legacyPath} | Compatibility path for systems that already know a Charles-style trigger path |
POST /webhooks/v0/rest-trigger/organization/{org}/flow/{flow}/trigger/ | Versioned path for new integrations |
POST /webhooks/v0/rest-trigger/organization/{org}/flow/{flow}/trigger/{triggerId}/ | Versioned path when you need to specify a trigger ID |
status, message, triggerEventId, and outboxJobId.
Emarsys integration
Switchbord accepts Emarsys custom events at:POST /api/v0/webhooks/incoming/emarsys/custom_external_event
Authentication
When a shared secret is configured, Switchbord enforces it through thesecret query parameter on every request. Include it as follows:
Payload rules
event_nameis required and must not contain whitespace- Both flattened and nested contact payload styles are normalized automatically
- A successful response returns
status,message,webhookEventId, andoutboxJobId
What Emarsys events can do
Once Switchbord receives an Emarsys event, it can:- Trigger a journey flow configured to listen for that event name
- Mutate a contact record (for example, update tags or properties)
Twenty CRM sync
Switchbord supports bidirectional sync with Twenty CRM for contact data.- Contact property writes — journey steps that write properties or tags to a contact can reflect those changes back to Twenty CRM
- Field mapping — you can configure which Switchbord contact fields map to Twenty CRM fields
- Sync health — the product surfaces sync status so you can identify records that failed to propagate
Field mapping configuration is available in Settings once the Twenty integration is connected.
Outbound webhook events
Configure outbound webhooks in Settings to push Switchbord events to any external system — Zapier, n8n, a custom endpoint, or any HTTP listener.Configuring an outbound webhook
Add an endpoint
Enter the URL of your external system and select which event types you want to receive.
Available event types
| Event | Triggered when |
|---|---|
message.received | An inbound WhatsApp message arrives |
message.delivered | A sent message is confirmed delivered |
message.failed | A send attempt fails |
contact.opted_out | A contact opts out of messaging |
