Skip to main content

How webhooks work

Webhooks send HTTP POST requests to your server when events occur in Inbox — a new message arrives, a thread is assigned, a campaign target replies, and more. Instead of polling the API for changes, register a webhook URL and Inbox pushes events to you as they happen.
Configure webhooks in Settings → Webhooks in your Inbox dashboard. You choose which event types each webhook receives.

Event envelope

Every webhook delivery wraps event-specific data in a consistent envelope:
string
required
Unique event ID. Use this to deduplicate deliveries.
number
required
Monotonically increasing sequence number per team. Use this to detect missed events and maintain ordering.
string
required
The team this event belongs to.
string
required
The event type in resource.action format (e.g., thread.created, message.created).
string
required
ISO 8601 timestamp of when the event occurred.
string
required
Schema version. Currently always "1.0".
object
required
The event payload. Structure varies by event type — see individual event pages for details.

Supported event types

Inbox supports 33 event types across 7 categories. Subscribe to individual events or entire categories.

Thread events

Message events

Prospect events

Tag events

Status events

Campaign events

Target events

Delivery behavior

Inbox attempts delivery once with no retries. Responses are not checked — delivery is fire-and-forget. Use the Events API to fetch any events your webhook missed. Events are retained for 7 days.

Handling webhooks

Your endpoint should:
  1. Deduplicate using event.id in case of rare duplicate deliveries
  2. Handle events idempotently
  3. Track the latest seq value so you can backfill missed events via the Events API

Events API

The Events API lets you replay events from the last 7 days. Use it to recover missed webhooks or backfill data.
cURL
Response:
Use lastSeq from the response as afterSeq in your next request to paginate through all events.
Store the last processed seq value persistently. Run a background job that periodically polls the Events API using your stored seq to catch anything your webhook handler missed.

Missed event recovery

Next steps

Thread events

Get notified about new, assigned, and archived threads

Message events

Track messages, edits, and reactions

Campaign events

Monitor campaign lifecycle changes

Migrating from legacy webhooks

Update from the old event format