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 sentchat.receipt.delivered- Message delivered to a recipientchat.receipt.read- Message read by a recipient
Conversation events
chat.conversation.created- New conversation createdchat.conversation.member_added- Member added to a conversationchat.conversation.member_removed- Member removed from a conversation
Support events
support.queued- Support conversation entered the queuesupport.assigned- Assigned to an agentsupport.accepted- Agent accepted the conversationsupport.transferred- Transferred to another agent/departmentsupport.closed- Conversation closedsupport.reopened- Conversation reopened
Bot events
bot.reply.sent- Bot sent a replybot.escalated- Bot escalated (low confidence)bot.takeover- An agent took over from the botbot.resumed- The bot resumed after a takeover
Call events
call.invited- A call was started/invitedcall.started- The call connectedcall.participant_joined- A participant joinedcall.participant_left- A participant leftcall.rejected- The invite was rejectedcall.ended- The call endedcall.missed- The invite rang out unansweredcall.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)
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 theX-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