Skip to main content

Webhooks

Orbit webhooks deliver real-time HTTP POST notifications to your server whenever events occur — message delivered, call completed, agent conversation ended, and more. Use webhooks to keep your systems in sync without polling.

How It Works

  1. You register a webhook endpoint URL in the Orbit dashboard or via the API
  2. When an event occurs, Orbit sends an HTTP POST with the event payload to your URL
  3. Your server responds with a 2xx status code to acknowledge receipt
  4. If delivery fails, Orbit retries on a fixed schedule (see Retry Schedule)

Register a Webhook

Event Payload Format

Every webhook delivery follows a consistent envelope:
Terminal-failure deliveries (message.failed) additionally include optional error_code and error_message fields carrying the provider’s failure reason. They appear only when the message has a captured provider error and are absent otherwise. See the webhook events reference for the full per-event payload shapes.

Delivery Guarantees

  • At-least-once delivery — events may be delivered more than once; use id for deduplication
  • Ordered by event time — events are sent in chronological order, but network conditions may cause out-of-order delivery
  • 30-second timeout — your endpoint must respond within 30 seconds

Retry Schedule

If your endpoint returns a non-2xx response or times out, Orbit retries on a fixed schedule. Each event gets one initial delivery plus 6 retries (7 attempts total). Each retry delay carries +0–20% jitter (delays run up to 20% longer than the nominal schedule, never shorter): After the 7th attempt fails, the event is moved to a dead letter queue — roughly 34.6 hours after the first attempt. Size your delivery-expiry, replay, and idempotency-key retention windows accordingly: a failing endpoint receives retries for around a day and a half before the event is dead-lettered, so persist seen event id values for at least 3 days to cover the full retry window plus the dead-letter replay window. You can replay failed events from the dashboard under Webhooks > Failed Deliveries.

Managing Webhooks

List your registered webhooks:
Delete a webhook:

Next Steps