Webhook Documentation
Events are sent as HTTP POST requests to your configured endpoint with a structured JSON payload. Each event contains comprehensive information about the action that occurred in your workspace.Platform Compatibility
| Platform | Description |
|---|---|
| Convocore | Convocore agents (built with the Convocore node-based builder) |
| VF | VoiceFlow agents (imported from VoiceFlow or using VoiceFlow runtime) |
Event Types & Categories
Below are all possible event types you can subscribe to:| Event Type | Category | Convocore Support | VF Support | Description |
|---|---|---|---|---|
message_received | Message Events | ✅ | ✅ | Message received on any channel |
chat_delegated | Chat Events | ✅ | ✅ | Chat was delegated to a team member |
bug_reported | Bug Events | ✅ | ✅ | Bug or issue was reported |
agent_deleted | Agent Events | ✅ | ✅ | Agent was deleted |
webhook_test | Test Event | ✅ | ✅ | Used for testing your webhook endpoint |
lead_captured | Lead Events | ✅ | ❌ | Lead was captured by an agent (Convocore only) |
form_submitted | Form Events | ✅ | ❌ | Form was submitted (Convocore only) |
organisation_created | Organisation Events | ✅ | ✅ | Organisation was created |
organisation_updated | Organisation Events | ✅ | ✅ | Organisation was updated |
organisation_deleted | Organisation Events | ✅ | ✅ | Organisation was deleted |
client_created | Client Events | ✅ | ✅ | Client was created |
client_updated | Client Events | ✅ | ✅ | Client was updated |
client_deleted | Client Events | ✅ | ✅ | Client was deleted |
Why are some events Convocore-only?Convocore agents use WebSocket-based interactions that support advanced features like:
- Automatic lead collection based on conversation analysis
- UI Engine forms with dynamic form submissions
- Real-time streaming responses
Request Format
| Property | Value |
|---|---|
| HTTP Method | POST |
| Content Type | application/json |
Event Categories & Payloads
Agent Events
Types:agent_created, agent_updated, agent_deleted
Payload fields:
agentId(string): The ID of the agentagentName(string, optional): The name of the agentagentPlatform(“vg” | “vf”, optional): The platform of the agentoperation(“created” | “updated” | “deleted”): The operation performedcreatedAt(number): Timestamp (ms)workspaceSecret(string): Workspace secret for verification
Agent Created Event
Message Events
Types:message_received
Payload fields:
agentId(string): The ID of the agentagentName(string, optional): The name of the agentconvoId(string): The ID of the conversationmessageContent(string): The content of the messagechannel(“whatsapp” | “instagram” | “facebook” | “telegram” | “webchat”): The channelmessageType(string, optional): The type of the messagefrom(string, optional): The sendercreatedAt(number): Timestamp (ms)workspaceSecret(string): Workspace secret for verification
Message Received Event
Organisation Events
Types:organisation_created, organisation_updated, organisation_deleted
Payload fields:
organisationId(string): The ID of the organisationorganisationName(string, optional): The name of the organisationoperation(“created” | “updated” | “deleted”): The operation performedcreatedAt(number): Timestamp (ms)workspaceSecret(string): Workspace secret for verification
Organisation Created Event
Client Events
Types:client_created, client_updated, client_deleted
Payload fields:
organisationId(string): The ID of the organisationorganisationName(string, optional): The name of the organisationclientId(string): The ID of the clientclientName(string, optional): The name of the clientclientEmail(string, optional): The email of the clientoperation(“created” | “updated” | “deleted”): The operation performedcreatedAt(number): Timestamp (ms)workspaceSecret(string): Workspace secret for verification
Client Created Event
Lead Events
Types:lead_captured
Payload fields:
agentId(string): The ID of the agentagentName(string, optional): The name of the agentleadName(string, optional): The name of the leadleadEmail(string, optional): The email of the leadleadPhone(string, optional): The phone of the leadchannel(see below): The channel where the lead was capturedoperation(“captured”): The operation performedcreatedAt(number): Timestamp (ms)workspaceSecret(string): Workspace secret for verification
voice,vapi,web-chat,whatsapp,instagram,telegram,discord,gb-chat,messenger,telephony,webchat
Lead Captured Event
Form Events
Types:form_submitted
Payload fields:
agentId(string): The ID of the agentagentName(string, optional): The name of the agentconvoId(string): The ID of the conversationformType(“ui_engine_form” | “ui_engine_input”): The type of form submittedformData(object): The submitted form data as key-value pairschannel(see below): The channel where the form was submittedcreatedAt(number): Timestamp (ms)workspaceSecret(string): Workspace secret for verification
voice,vapi,web-chat,whatsapp,instagram,telegram,discord,gb-chat,messenger,telephony,webchat
Form Submitted Event
Chat Delegation Events
Types:chat_delegated
Payload fields:
agentId(string): The ID of the agentagentName(string, optional): The name of the agentconvoId(string): The ID of the conversationassignedToUserId(string): The ID of the user the chat was assigned toassignedToUserName(string, optional): The name of the assigned userassignedToUserEmail(string, optional): The email of the assigned userdelegatedByUserId(string, optional): The ID of the user who delegateddelegatedByUserName(string, optional): The name of the user who delegatedcustomerName(string, optional): The name of the customercustomerEmail(string, optional): The email of the customercustomerPhone(string, optional): The phone of the customerchannel(see below): The channel where the delegation occurredoperation(“delegated”): The operation performedcreatedAt(number): Timestamp (ms)workspaceSecret(string): Workspace secret for verification
voice,vapi,web-chat,whatsapp,instagram,telegram,discord,gb-chat,messenger,telephony,webchat
Chat Delegated Event
Bug Events
Type:bug_reported
Payload fields:
agentId(string): The ID of the agentagentName(string, optional): The name of the agentconvoId(string): The ID of the conversationbugDescription(string): The description of the bug or issueimageUrl(string, optional): The CDN URL of the screenshot (automatically uploaded if provided)reportedByUserId(string, optional): The ID of the user who reported the bugreportedByUserName(string, optional): The name of the user who reported the bugreportedByUserEmail(string, optional): The email of the user who reported the bugchannel(see below): The channel where the bug occurredoperation(“reported”): The operation performedcreatedAt(number): Timestamp (ms)workspaceSecret(string): Workspace secret for verification
voice,vapi,web-chat,whatsapp,instagram,telegram,discord,gb-chat,messenger,telephony,webchat
Bug Reported Event
Webhook Test Event
Type:webhook_test
Payload fields:
message(string): Test messagecreatedAt(number): Timestamp (ms)workspaceSecret(string): Workspace secret for verification
Webhook Test Event
Implementation Guidelines
- Response Requirements:
- Return HTTP 200 status for successful receipt
- Response within 60 seconds timeout
- Empty response body is acceptable
- Delivery Behavior:
- Events delivered in real-time
- No automatic retry mechanism
- Order of delivery not guaranteed
- Data Format:
- Timestamps in milliseconds (Unix epoch)
- UTF-8 encoded JSON payload
- All fields are consistent across events
- Security & Performance:
- Use workspace secret for verification
- Ensure endpoint can handle event volume
- Implement proper error handling
Best Practices
- Validate the workspace secret on every incoming webhook to ensure authenticity
- Implement idempotency handling using the event timestamp and payload data
- Use asynchronous processing for webhook handling to avoid timeout issues
- Log all incoming webhooks for debugging and monitoring purposes
Testing Your Webhook
You can test your webhook endpoint using thewebhook_test event. This event is sent with a simple payload and can be used to verify your endpoint is reachable and correctly configured.
Sample:
Webhook Test Event
