Skip to main content

Webhook Setup

Webhooks notify your server when events occur in Vocobase, such as a call status changing or a session completing. Instead of polling the API, you receive a POST request with the event payload.

What webhooks are for

Vocobase sends two classes of webhook events to each enabled webhook endpoint: For outbound telephony calls, use call.status.updated to know what is happening right now. Use session.completed only when you need final post-call data. call.status.updated includes:
  • Current normalized call status
  • Previous status, when available
  • Final call disposition and answer classification when available
  • Hangup cause/source when the provider supplied them
  • Whether the status is terminal
  • Whether the call slot/concurrency can be released
  • Account-wide concurrency snapshot for queue orchestration
  • Provider and raw provider status for debugging
session.completed includes:
  • Full conversation transcript with timestamps
  • Call duration and credits used
  • Recording download URL (if recording was enabled)
  • Pre-call variables and post-call extraction results
  • Call metadata (phone numbers, provider, direction)

Configure webhook endpoints

Use webhook endpoints to send the same event stream to one or more destinations, such as prod, staging, or an internal audit receiver. Each endpoint has its own URL, enabled flag, delivery history, and signing secret.
The response contains a secret that you must save:
The endpoint secret is only shown once. Store it in your environment variables immediately. If you lose it, rotate the endpoint secret with POST /config/webhooks/{id}/rotate-secret.

Manage endpoints

List configured endpoints:
Update a label, URL, or enabled state:
Rotate a signing secret:
Delete an endpoint:

Labels and limits

  • Labels must be lowercase letters, numbers, and hyphens; start with a letter or number; and be 1-31 characters.
  • The default label is reserved for the legacy single-webhook compatibility route.
  • Each partner can configure up to 5 webhook endpoints.
  • Only enabled endpoints receive new events.
  • Endpoints receive all webhook event types. Branch on the top-level event field in your handler.
  • Each endpoint signs requests with its own secret.
Existing integrations that use PUT /api/v2/config/webhook still work. That route now creates or replaces the reserved default endpoint and returns a webhook_secret. New integrations should use /config/webhooks.

Requirements

Your webhook endpoint must:
  • Accept POST requests
  • Use HTTPS (HTTP URLs are rejected)
  • Return a 2xx status code within 10 seconds
  • Be publicly accessible from the internet

Signature verification

Every webhook request includes an X-Webhook-Signature header for verifying authenticity. The signature is computed as an HMAC-SHA256 hash of timestamp.body using your webhook secret.

Header format

Verification steps

  1. Extract the X-Webhook-Signature and X-Webhook-Timestamp headers
  2. Construct the signed payload: {timestamp}.{raw_request_body}
  3. Compute HMAC-SHA256 using your webhook secret
  4. Compare the computed signature with the one in the header

Node.js example

Python example

Always verify signatures in production. Skipping verification exposes your endpoint to forged requests.

Next steps

Webhook Payloads

See the full payload structure for each event type.

Error Handling

Learn about retry behavior and best practices.