- CRUD events — contacts, statuses, sources are created/updated/deleted
- Message delivery status events —
message.sent,message.delivered,message.read,message.failed(live as of 2026-05-28)
webhook_url you configure. Message delivery events use a different, simpler payload than CRUD events — see Webhook Events.
Configuring webhooks
Pick the events (CRUD)
Toggle the events you want:
- Contacts — Create / Update / Delete
- Statuses (contact status labels) — Create / Update / Delete
- Sources (contact source labels) — Create / Update / Delete
Message delivery status events
These fire automatically for every send when Enable Webhook Access is on. No per-event toggle in the UI — you receive all four (
message.sent, message.delivered, message.read, message.failed) at the same webhook_url. If you only want a subset, filter in your handler by event.Payload
Every webhook POST has this shape:| Field | Meaning |
|---|---|
event | One of "created", "updated", "deleted". |
model | Fully qualified model class — use this to tell contact/status/source apart. |
data.id | Primary key of the record. |
data.attributes | Full attribute set of the record at the time of the event. |
data.relations | Reserved for eager-loaded relations (usually empty). |
original | Usually null. |
timestamp | ISO-8601 time the event was dispatched. |
Delivery guarantees
| Property | Value |
|---|---|
| Delivery | HTTP POST, JSON body |
| Attempts | Up to 3 total |
| Backoff | 1s before attempt 2, 2s before attempt 3 (exponential — first attempt fires immediately) |
| Execution | Synchronous — not queued |
| Timeout | 30 seconds per attempt |
| Logging | Every attempt is written to the internal webhook_logs table, purged after 30 days |
Xobito issues a unique signing secret per workspace. If you do not yet have your secret, contact Xobito support to have one issued and rotated.
Because webhooks are executed synchronously, your endpoint latency directly affects Xobito dashboard responsiveness. Return
2xx quickly (ideally under 1 second) and do the heavy work asynchronously on your side.Verifying requests
Every webhook request carries an HMAC-SHA256 signature in theX-Webhook-Signature header. See Webhook Security for how to verify.
Testing
There is no “Send test event” button in the current version. To test your endpoint, trigger a real event — for example, create a contact in the dashboard and watch your server for thecreated POST.
Incoming (Meta → Xobito) webhooks
Separate from outbound webhooks above, Xobito also receives inbound events from the Meta Cloud API (incoming messages, delivery receipts, template status changes). These are not customer configurable — they are set up automatically when you connect your Meta Business account. Do not confuse the two systems.Next steps
Webhook Events
The 9 events Xobito actually sends, with example payloads.
Webhook Security
HMAC signature verification.