Skip to main content
Webhook actions allow your Telzino AI phone agents to interact with external systems during calls. You can fetch data, create support tickets, log calls to your CRM, and more.

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 is enabled: 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:
  1. You specify the key name - What the external API expects (e.g., email, subject, priority)
  2. 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”)
  3. The AI extracts actual values - During the call, the AI analyzes the conversation and fills in real values, following the rules you wrote
Some parameter keys are pre-filled automatically from call data when their names match (for example 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

In this example, every value is an instruction to the AI, not a literal value:
  • customer_name and issue_summary tell the AI exactly what to extract from the conversation
  • email includes a fallback rule for when the caller doesn’t provide one
  • priority constrains 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:
Without the type rule above, the AI may send {"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:
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 two during_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 the extensions.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

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 descriptive key names that match what your external API expects. The AI uses these names to understand what data to extract.
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.
Never expose API keys in client-side code. Use environment variables or secure credential storage when possible.
Test your webhook endpoints independently before configuring them in your agent. Use tools like Postman or curl to verify they work correctly.

Troubleshooting