Webhook Conditions
Webhooks can be triggered at different points in the call lifecycle:Limits: You can configure one
before_call webhook, up to four during_call webhooks, and one after_call webhook per agent.Adding a Webhook via Dashboard
1
Navigate to Agent Settings
Log into your account and go to Agent Settings > Functions.
2
Add Webhook Action
Click the (+) button and select Webhooks.
3
Configure the Webhook
Fill in the webhook configuration form with the required fields.
Webhook Configuration
Each webhook requires the following configuration:Required Fields
Optional Fields
Switch a webhook off
Each webhook card has an on/off switch. Turn it off to pause a webhook without deleting it: while it is off, the webhook is never called and the agent is not offered it as a tool. The card shows an Off badge until you turn it back on. Save the agent for the change to take effect. In the API this isenabled: false on the webhook. Leaving enabled out (or setting it to true) keeps the webhook on.
How Parameters Work
Parameters are the key to making webhooks intelligent. When you define parameters:- You specify the key name - What the external API expects (e.g.,
email,subject,priority) - You write instructions in the value field - The text you type in a parameter’s value becomes that parameter’s description for the AI. Use it to tell the AI what the parameter means and what rules to follow: where to get the value, what format it must be in, and what type to send (e.g., “always send as a string, never a number”)
- The AI extracts actual values - During the call, the AI analyzes the conversation and fills in real values, following the rules you wrote
caller_phone, summary_text, transcript) — those are sent as-is without AI involvement.
If you leave a parameter value empty, the AI only sees the parameter’s name and will guess an appropriate value from the conversation context. This is not reliable — always describe the parameter and its expected format in the value field.
Example Parameter Configuration
customer_nameandissue_summarytell the AI exactly what to extract from the conversationemailincludes a fallback rule for when the caller doesn’t provide onepriorityconstrains the AI to an allowed set of values
Controlling Parameter Types and Formats
External APIs are often strict about types — a common failure is the AI sending a number where the API expects a string. Spell the required type and format out in the value text:{"courseID": 60802} and a strictly-typed API will reject it with a 400 validation error (The JSON value could not be converted to System.String). With it, the AI sends {"courseID": "60802"} and the request succeeds.
Real-World Examples
Zendesk Ticket Creation
Create a support ticket in Zendesk during or after a call:Zendesk Authentication
Zendesk Authentication
For Zendesk, use Basic authentication with your email and API token:In JavaScript:
Freshdesk Ticket Creation
Freshdesk rejects fields it does not recognise, so
include_agent_name must be false for an after_call Freshdesk webhook. Otherwise the request fails with 400 Validation failed (invalid_field on agent_name).Freshdesk also requires numeric fields such as priority, status, source and group_id to be integers. Give those parameters "type": "integer" so the value is sent as a number. Without it, the value is sent as a string ("2") and Freshdesk rejects it with Value set is of type String.Chained Lookups (Course Finder)
A common pattern is chaining twoduring_call webhooks: one fetches a list of options, the caller picks one, and a second webhook acts on the selection. The parameter instructions tell the AI how to carry values from the first webhook’s response into the second webhook’s request — including the exact type the API expects:
CRM Integration (Before Call)
Fetch caller information before the agent answers:Post-Call Logging
Log call details to your system after the call ends:API Configuration
You can also configure webhooks via the API when creating or updating an agent. Webhooks are stored in theextensions.tools array.
Model Context Protocol (MCP) connections use the sibling extensions.mcp_servers array. GET responses document the stored shape here; POST/PUT use the validated request shape here (they differ today).
Example request body with webhooks only:
Best Practices
Write Clear Descriptions
Write Clear Descriptions
The description helps the AI understand when to trigger the webhook. Be specific:Good: “Creates a support ticket when the customer reports a problem or needs help with their order”Bad: “Creates a ticket”
Use Meaningful Parameter Names
Use Meaningful Parameter Names
Use descriptive key names that match what your external API expects. The AI uses these names to understand what data to extract.
Describe Every Parameter in Its Value Field
Describe Every Parameter in Its Value Field
The value field is instruction text for the AI. For each parameter, say what it is, where the AI should get it (the conversation, or a previous webhook’s response), and any rules — allowed values, fallbacks, and especially the expected type and format (e.g., “always send as a string”). Avoid leaving values empty; an undescribed parameter forces the AI to guess.
Secure Your Credentials
Secure Your Credentials
Never expose API keys in client-side code. Use environment variables or secure credential storage when possible.
Test Your Webhooks
Test Your Webhooks
Test your webhook endpoints independently before configuring them in your agent. Use tools like Postman or curl to verify they work correctly.
