POST Inboxapp sends to your server when something changes: a message arrives, a thread is archived, a contact’s status moves.
Create webhooks in Settings → Webhooks and choose the event types each one receives.
The event
Every event has the same envelope:Events are thin
Webhooks follow the thin-event pattern: an event names the object that changed and carries only the values of the change, never the object itself.- Small payloads. An event is a few hundred bytes, whatever the size of the conversation behind it.
- Out-of-order events are harmless. You read the current state from
object.url, so a late event can’t overwrite newer data with old. - Idempotent by design. Handling the same event twice reads the same state twice.
handler.ts
object.url answers 404 once the object is deleted.
Verify each request before trusting it. See Verifying webhook
signatures.
Event types
Each event type has its own page under Event types with its full schema.
thread.assignedreports the thread’s own assignee.contact.assigneeChangedreports the contact’s default.- Values in
dataare the ones that change wrote. They can be out of date by the time you read them. - New event types and
datafields can be added within v2. Ignore what you don’t know.
Delivery
Each event is delivered once, with no retries, and your response isn’t checked. Events for every platform your team has linked arrive on the same webhook. Your endpoint should:- Answer with a
2xxquickly, and do the work afterwards - Deduplicate on
id - Store the highest
seqit has processed
Replay missed events
Events are kept for 7 days, up to 25,000 per team. After downtime, read what you missed from theseq of the last event you processed:
replay.ts
limit. Continue from lastSeq while hasMore is true. Filter with type, repeated for several.