Skip to main content

Webhook Error Handling

Vocobase automatically retries webhook deliveries that fail. This page explains the retry policy and best practices for building a reliable webhook handler.

Retry policy

When a webhook delivery fails, Vocobase retries up to 4 times (5 total delivery attempts): After all retries are exhausted, the webhook delivery is marked exhausted. The event data is still available via the API — use GET /calls/{id} to fetch call details, including live call status and final transcript/recording data when available.

What counts as a failure

A webhook delivery is considered failed if:
  • Your endpoint returns a non-2xx status code (e.g., 400, 500)
  • The request times out (no response within 10 seconds)
  • A network error occurs (DNS resolution failure, connection refused, TLS error)
A 2xx response (200, 201, 202, 204, etc.) is treated as a successful delivery regardless of the response body.

Timeout

Each webhook request has a 10-second timeout. If your server does not respond within 10 seconds, the delivery is marked as failed and retried.
If your webhook processing takes longer than 10 seconds, you will see repeated retries. Always return a response immediately and process the event asynchronously.

Best practices

Respond immediately

Return a 200 OK response as soon as you receive the webhook. Do not perform heavy processing before responding.

Handle duplicates (idempotency)

Due to retries, your endpoint may receive the same event more than once. Use an idempotency key that includes the event type and the fields that identify the transition:
  • session.completed: use session.completed:{session_id}
  • call.status.updated: use call.status.updated:{call_id}:{status}:{occurred_at}

Verify signatures

Always verify the X-Webhook-Signature header in production to ensure the request is from Vocobase. See Webhook Setup for implementation details.

Use a message queue

For high-volume integrations, push webhook events into your message queue and process them with workers:

Monitor failures

If webhooks fail repeatedly, check:
  1. Your endpoint is reachable — Verify the URL is publicly accessible and not behind a firewall
  2. TLS certificate is valid — Expired or self-signed certificates cause connection failures
  3. Response time is under 10 seconds — Profile your handler to find bottlenecks
  4. Your server is running — Check logs for crashes or out-of-memory errors

Fallback: poll the API

If you miss webhook events, you can always fetch call data directly:

Next steps

Webhook Payloads

See the full payload structure for each event type.

Webhook Setup

Configure webhook endpoints and verify signatures.