Overview

Webhooks allow you to receive real-time notifications about events in your Vocantly instance. Configure webhook endpoints to receive HTTP POST requests when events occur.

How Webhooks Work

Supported Events

Message & receipt events

  • chat.message.created - New message sent
  • chat.receipt.delivered - Message delivered to a recipient
  • chat.receipt.read - Message read by a recipient

Conversation events

  • chat.conversation.created - New conversation created
  • chat.conversation.member_added - Member added to a conversation
  • chat.conversation.member_removed - Member removed from a conversation

Support events

  • support.queued - Support conversation entered the queue
  • support.assigned - Assigned to an agent
  • support.accepted - Agent accepted the conversation
  • support.transferred - Transferred to another agent/department
  • support.closed - Conversation closed
  • support.reopened - Conversation reopened

Bot events

  • bot.reply.sent - Bot sent a reply
  • bot.escalated - Bot escalated (low confidence)
  • bot.takeover - An agent took over from the bot
  • bot.resumed - The bot resumed after a takeover

Call events

  • call.invited - A call was started/invited
  • call.started - The call connected
  • call.participant_joined - A participant joined
  • call.participant_left - A participant left
  • call.rejected - The invite was rejected
  • call.ended - The call ended
  • call.missed - The invite rang out unanswered
  • call.quality_report - A call-quality report was submitted

Creating a Webhook

Request

string
required
Webhook endpoint URL (must be HTTPS)
string[]
required
Array of event types to subscribe to
string
Secret for webhook signature verification (optional)
boolean
Whether webhook is enabled (default: true)
Endpoint: POST /api/v1/apps/:appId/webhooks Example:

Webhook Payload

All webhook payloads follow this structure:

Message Created Event

Conversation Created Event

Webhook Signing

Webhooks can be signed with HMAC-SHA256 for verification:

Verify Signature

Signature Header

The signature is sent in the X-Vocantly-Signature header:

Webhook Delivery

Delivery Status

  • pending - Queued for delivery
  • delivered - Successfully delivered (2xx response)
  • failed - Delivery failed (non-2xx response or timeout)
  • retrying - Retrying after failure

Retry Logic

Failed deliveries (non-2xx or timeout) are retried on an increasing backoff schedule:
  • Backoff: 30s, 1m, 2m, 5m, 10m, 20m, 40m, 80m
  • Max attempts: 8
  • After the final attempt: marked as failed (retry manually from the dashboard or via the deliveries API)

Viewing Deliveries

Best Practices

HTTPS Only

Always use HTTPS for webhook URLs

Idempotency

Make webhook handlers idempotent

Quick Response

Respond quickly (within 5 seconds)

Signature Verification

Always verify webhook signatures

Error Handling

Timeout

If your server doesn’t respond within 30 seconds, the delivery is marked as failed and will be retried.

Non-2xx Responses

Any HTTP status code other than 2xx is considered a failure and will trigger retries.

Example Handler

Testing Webhooks

Use tools like ngrok or webhook.site to test webhooks locally:

Next Steps

API Reference

View all webhook endpoints

Event Types

Complete list of events

Security

Webhook security best practices