Docs / Platform / How-to

Custom tools and webhooks

Have the agent call your own systems mid-conversation, notify you when a call ends, and receive every analyzed call by webhook.

What is a custom tool?

A custom tool is a webhook URL you give the agent, with a name, a description of when to use it, and the parameters it should send. During a conversation - voice or chat - the agent decides from your description when to call it, sends the parameters it has gathered, and uses whatever your endpoint returns as information in its next reply.

This is how an agent checks an order status in your system, looks up a booking, verifies a code, or creates a ticket - live, mid-call. The endpoint can be anything that accepts HTTP: your backend, n8n, Zapier, Make, or a CRM automation.

How do I add one?

  1. Open your agent's Tools tab and add a tool under "Webhook Tools".
  2. Give it a name (for example check_order_status), a description that tells the agent when to use it ("Use this when the caller asks where their order is. Requires the order number."), the URL, and the parameters it should send (each with a type and description).
  3. Choose when it fires: During Call (the agent can invoke it mid-conversation) or After Call Ends (fired once automatically when the call finishes).
  4. Use the built-in test button to send a sample request and check your endpoint's response, then publish the agent.

What does my endpoint receive?

During-call tools send POST by default with the tool name, the arguments the agent filled in, and call context (call and agent IDs). Tools set to GET receive the arguments as query-string parameters instead. Whatever body your endpoint returns is handed back to the agent as the tool result - plain text or JSON both work; keep it short and factual.

After-call tools receive one POST when the call ends:

{
  "call_id": "…",
  "agent_id": "…",
  "outcome": "…",
  "collected": { "name": "Jane", "preferred_time": "…" },
  "duration_s": 143.2
}

What if my endpoint is down or slow?

A tool call times out after 10 seconds, and a failed tool never breaks the conversation - the agent is told the lookup didn't work and carries on, so it can apologize and offer an alternative instead of going silent.

Can I get every call sent to my systems, regardless of agent?

Yes. Integrations has outgoing webhooks at the organization level: add a URL and every analyzed call is POSTed to it - call ID, agent, duration, outcome, summary, sentiment, and any extracted fields. Each delivery is logged with its response status so you can see failures. Use these for org-wide syncing to a CRM or data warehouse; use agent tools for in-conversation actions.

Still stuck? Email hello@workflowhq.co - a real person replies, usually within a few hours.