Tronic Artificial Intelligence
Quick Start

Welcome to Tronic Cloud Voice AI

This guide walks you through everything you need to get your AI voice agent answering calls — from logging in and finding your phone number, to creating an agent, switching it on, pointing your number at it, and making your first test call. Every step has a screenshot. Click any image to enlarge it.

⏱In a hurry? The fastest path to a working agent is Steps 1–7 below. Everything after that is reference for the rest of the dashboard.

Getting your account

How a Tronic Cloud account is created, and what you get on day one.

If someone has already set your account up for you, skip ahead to Logging in. To sign up yourself, go to portal.troniccloud.com.au and click Register.

The form asks for:

  • Individual or Business — pick whichever matches how you’ll be invoiced.
  • Your name, date of birth and phone number.
  • Your email address. Use a real business address — throwaway addresses are rejected, and this becomes your login.
  • Your address, with the option to give a different billing address.
  • Preferred phone area code (optional) — 02, 03, 07 or 08, if you want your number to look local to a particular state. Leave it on No preference and we’ll assign any available Australian number.
Tronic Cloud registration form showing account type, personal details, address and preferred area code fields
Choose Individual or Business, fill in your details, then click Send me a magic link.
🎁What you get straight away. Your account is created with an Australian phone number already assigned to it, a SIP trunk and dispatch rule already configured, and $10 of starting credit so you can make test calls before you pay anything.

1. Logging in

How to get into your Tronic Cloud dashboard the first time and after.

1 Open your welcome email and set a password

When your account is created you receive an email titled “Welcome to Tronic Cloud — your phone number is ready”. Click the secure link inside to choose your password. After that, you log in any time with your email address and password.

Tronic Cloud login page with the Email field, Password field, Sign In button and the email-link option highlighted
Enter your email (1) and password (2), then Sign In (3). First time, or forgot your password? Use the emailed sign-in link (4).
🔒The extra “Continue” page is normal. When you click a sign-in link from an email, you may land on a page that just has a Continue button on it. That’s deliberate — it stops email security scanners from silently using up your one-time link before you get to it. Click Continue and you’ll be signed in.

Forgotten your password?

Click Forgot Password? on the login page, or use “Or sign in with an emailed link” to get a fresh one-click link. Sign-in links are single use and expire after a short time, so request a new one rather than re-using an old email.

✉Changing your login email. Your login email can’t be changed from the dashboard — email support@tronic.com.au and we’ll move it for you.

2. Your dashboard

The overview page you land on after logging in.

2 Get your bearings

The menu on the left (highlighted) is how you move around the dashboard. The main area shows your call activity, usage and costs at a glance. Don’t worry if your numbers are all zero to start — they fill in once calls come through.

Tronic Cloud dashboard Overview with the left navigation menu highlighted in green
Click the image to enlarge. The green outline marks the navigation menu.

What’s in the menu

  • Core — Analytics (this page), Reports, Call History, Chat History, Recording/Egress, Tools, Knowledge Base, Voice Agents and Chatbot Agents.
  • Telephony — SIP Trunks, Dispatch Rules and Phone Numbers: the plumbing that connects real phone calls to your agents.
  • Testing — the Agent Tester, for trying an agent in your browser.
  • Account — Billing and your Account details.

Across the top you’ll find a date-range picker, an Export button, this User Guide, Help, and your account menu (with Log out) on the far right.

3. Your phone number

Where to find the phone number that was set up for you.

3 Open Phone Numbers to see your number

Click Phone Numbers in the menu (under Telephony). Your dedicated number is listed here — this is the number callers ring to reach your agent. The small icon beside it copies it to your clipboard. Your number was also included in your welcome email.

Phone Numbers page with your assigned phone number highlighted in green
Your phone number is highlighted. (Internal trunk IDs are hidden here.)

4. Create your first agent

Your “agent” is the AI that answers the phone and talks to callers.

4 Open Voice Agents and start a new agent

Click Voice Agents in the menu, then the green Create Agent button (top right).

Voice Agents list with the Create Agent button highlighted in green
The green Create Agent button is highlighted.

4b Give it a name, a greeting and instructions

Tell the agent who it is and how to behave:

  • 1 — Agent Name: a name for your own reference.
  • 2 — Initial Greeting: the first thing it says when it answers a call.
  • 3 — System Prompt: its instructions — its role, what it should do, and any rules to follow.

The other tabs (Behavior, Speech Recognition, Voice, Advanced) let you choose the voice and AI models, but sensible defaults are already selected — you can leave them as-is to start. When you’re ready to tune them, see Voice Agents below.

Agent editor with Agent Name, Initial Greeting and System Prompt fields highlighted and numbered 1, 2, 3
The three fields you’ll always set, numbered 1–3.

5. Start the agent

⚠Important: a new agent does not run automatically. You must switch it on with the green Start button — otherwise calls won’t be answered.

5 Click the green Start button

On the Voice Agents list, find your agent and click the green Start button. Its status changes to RUNNING. If an agent is stopped, the dashboard shows a yellow reminder (top) — that’s your cue to start it.

Voice Agents list with the stopped-agent warning banner and the green Start button highlighted
The yellow “is stopped” reminder and the green Start button.

Running vs stopped. A running agent is standing by to answer calls. A stopped agent isn’t — callers will hear ringing with nothing answering. Running an agent costs nothing on its own; you’re only charged for the calls it actually handles, so there’s no reason to stop it between calls.

6. Point your number at it

Connect your phone number to the agent so incoming calls reach it.

6 Open Dispatch Rules and choose your agent

Go to Dispatch Rules (under Telephony). A rule for your number is already set up for you — click the pencil to open it, then:

  • 1 — Agent Name: choose the agent you just started.
  • 2 — Auto-Record Calls: tick this if you want calls recorded (optional).

Click Save. Your number now sends calls to that agent.

Edit Dispatch Rule dialog with the Agent dropdown and Auto-Record option highlighted
Pick your agent (1); optionally turn on Auto-Record (2), then Save.
🔔Auto-Record is what creates recordings. If you don’t tick it, calls still happen and are still logged — but there will be no audio to play back later. This is the single most common reason people find an empty Recordings page.

7. Make a test call

Ring your number from any phone and talk to your agent.

7 Call your number

Dial your Tronic Cloud number (the one on the Phone Numbers page) from your mobile. Your agent should answer within a few seconds with the greeting you set. Every call then appears in Call History with a transcript, summary and (if you turned on Auto-Record) a recording.

Call History page showing recent calls with duration, cost and health columns
Your test call shows up in Call History within moments of hanging up.

Nothing answered? Work through these in order: is the agent RUNNING (Step 5)? Does the dispatch rule point at that agent (Step 6)? Is your credit above the minimum (see Billing Overview)? There’s a fuller checklist in Troubleshooting.

8. Try it in the browser

Prefer not to use a phone? Test the agent right inside the dashboard.

8 Use the Agent Tester

Open Agent Tester (under Testing) to chat or talk to your agent right in the browser — handy for trying changes before they go live:

  • 1 — Select Agent: choose the agent to test.
  • 2 — Mode: pick Text (type) or Voice (use your microphone).
  • 3 — Connect: start the test session.

The agent must be started (Step 5) to respond.

Agent Tester page with Select Agent, Mode toggle and Connect button highlighted and numbered
Select your agent (1), choose Text or Voice (2), then Connect (3).

Voice Agents

The Voice Agents page is your home base — every phone-answering AI you build lives here.

A voice agent is an AI receptionist, salesperson, or assistant that talks to callers on the phone. Each agent has its own personality, voice, and abilities. The Voice Agents page lists all of them, shows whether each one is switched on, and gives you the buttons to create, copy, back up, and delete agents.

The Voice Agents list. Each agent shows its status and has Start/Stop and Edit controls.
The Voice Agents list. Each agent shows its status and has Start/Stop and Edit controls.
⚠Agents must be running to answer calls. A stopped agent will not pick up the phone, even if everything else is set up perfectly. If calls ring out or fail, check this page first — the agent needs the green “Running” badge.

1 Create an agent

Click the green Create Agent button at the top of the page. This opens the agent editor (covered in detail in the next section) where you give the agent a name, write its instructions, and pick its voice. When you save, the new agent appears in the list.

2 Create from a template

Next to Create Agent, the Templates button opens a gallery of nine ready-made agents — a healthcare appointment reminder, a clinic front desk receptionist, e-commerce support, real estate lead qualifier, hotel concierge, restaurant reservations, IT helpdesk, trades job booking, and a customer feedback survey. Each one arrives complete: a full set of instructions (including a shared block of phone-call delivery rules that keep the agent sounding natural — one question at a time, no “let me check” filler, no reading your details back at you), realistic business information, phone tools (hang up, transfer, date lookup) already attached, and sensible settings. Click Use This Template and you land in the editor, ready to swap in your own business details. The same gallery is also available as its own page at Agents → Templates.

Trades job booking uses Claude Haiku on AWS Bedrock (Australian region), Deepgram Flux for listening (with Flux’s own end-of-turn detection switched on) and the ElevenLabs V4 Turbo voice “Hannah” (Australian, young female).
The Templates button on the Voice Agents page — a ready-made starting point instead of a blank prompt.
The Templates button on the Voice Agents page — a ready-made starting point instead of a blank prompt.
  • Model badges: the coloured chips on each card show which AI models the agent will use (language model, speech recognition, and voice). These are chosen automatically to suit your installation.
  • Clinic Front Desk: an inbound receptionist for a medical practice — answers practice questions, collects booking and reschedule requests, takes messages, and directs possible emergencies to 000. It's deliberately tuned to speak with unhurried pacing (a longer listening pause before replying) so callers who pause mid-sentence aren't cut off — if you want it snappier, lower Response Delay on the Conversation tab. Each call's details (patient name, request type, preferred times, callback number) are captured as structured data fields when Auto-generate summaries is on.
  • Hotel Concierge: this template is the speech-to-speech showcase — it runs on Grok Voice (audio-to-audio).
  • Customer Feedback Survey: designed for outbound campaigns. Each answer (satisfaction score, recommendation score, suggestions) is captured as a structured data field on the call record.
ℹTransfers need a destination. Templates that include call transfer create the agent with the transfer tool attached but no destination number. Add one under Tools → Blind Transfer after creating, or the agent will apologise instead of transferring.
ℹWhat happens automatically: the new agent gets a unique name (a number is added if the name is taken), the date-lookup tool is set to your dashboard’s timezone, and the first prompt version is saved to history. The agent only auto-starts if the API keys it needs are already configured — otherwise it’s created stopped with a note explaining what’s missing.

3 Start and stop agents

Each agent row has a Start / Stop button:

  • Start switches the agent on. It will now answer any calls routed to it.
  • Stop switches it off. Useful when you’re editing an agent and don’t want it taking calls mid-change.

The status badge next to the agent’s name shows the current state at a glance: green Running or grey Stopped. If any agent on the page is stopped, a yellow warning banner reminds you at the top.

4 Check agent health

The Health column tells you whether an agent has everything it needs to work:

  • A green Healthy badge means all the AI services the agent uses have valid keys and installed software.
  • A red badge means something is missing — usually an API key that hasn’t been entered yet, or a software package that isn’t installed. Click the red badge to open a popup listing exactly what’s wrong and where to fix it.
💡Tip: a red health badge is the number-one reason a brand-new agent stays silent. Fix the listed items before testing.

5 Duplicate, export, and import

  • Duplicate: makes an exact copy of an agent — perfect for creating a variation without starting from scratch. The copy gets a new name and starts stopped.
  • Copy to Chatbot Agent (the ⇄ button): makes a website chatbot out of a phone agent in one click. A preview opens first — pick a name and the chat mode (Full voice is pre-selected), then read the three lists: Copied (prompt, knowledge text, tool instructions, data-extraction fields, speech settings), Adapted (the language model and its fallbacks are rewritten into the chatbot shape, the greeting becomes the widget welcome message, fast-trip stall recovery is always off on chatbots, values outside the chatbot ranges are clamped) and Not carried over (phone transfers, hold, keypad input, voicemail and IVR detection, the routing slug, realtime audio-to-audio settings, resource limits, handoffs). Tools and knowledge-base collections are linked to the copy — a collection is shared, so editing it changes both agents. Warnings above the Copy button flag placeholders that will be blank on a website ({{user_number}} — a visitor has no phone number) and prompt variables the widget's embed page would have to supply. The chatbot is created switched off so you can review it before it answers anyone. It is a one-time snapshot: changing either agent later does not change the other. A realtime (audio-to-audio) agent copies without a recogniser or voice — tick the acknowledgement, then pick both on the chatbot's Voice tab.
  • Export: downloads the agent as a JSON file. Use this as a backup, or to move an agent to another system. The file carries everything the editor saves: prompt and greeting, the LLM with its fallback chain, every speech-recognition and voice setting (including per-provider extras), conversation dynamics, handoffs, tool assignments and the knowledge-base collections attached to the agent.
  • Import: upload a previously exported JSON file to recreate that agent here. Knowledge-base collections are re-attached by matching a collection with the same name on this dashboard; any that do not exist here are skipped, so open the editor and attach them by hand after importing to another system.
  • View Logs: opens that agent’s recent activity log — the first place to look when an agent answers but behaves oddly.
  • Move to folder: agents can be grouped into folders to keep a long list tidy; the folder button next to Create Agent manages the folders themselves.

6 Delete an agent

Open the agent, scroll to the bottom, and use Delete Agent. You’ll be asked to confirm. Deleting removes the agent’s configuration — its past calls stay in Call History.

ℹNote: before deleting, consider exporting the agent first. That gives you a one-click way back if you change your mind.

7 Prompt version history

Every time you save a change to an agent’s instructions, the previous version is kept automatically. In the editor, click the teal Versions button to:

  • See every saved version with a timestamp and a label showing where the change came from: manual (a browser edit), enrich (the Enrich tool).
  • Click Diff on any version to see a colour-coded comparison — green lines were added, red lines removed.
  • Click Restore to load an older version back into the editor. You still need to press Update Agent to save it.

By default the last 20 versions are kept per agent (adjustable from 5 to 50). Older ones are removed automatically.

The Agent Editor

The tabs that shape everything about how your agent sounds, thinks, and behaves.

Open any agent (or click Create Agent) and you’ll see the editor with these tabs across the top: Identity, Behavior, Speech Recognition, Voice, Advanced. You can save at any time — you don’t have to fill in every tab. If the agent is running when you save, restart it (Stop then Start) so live calls pick up the change.

Identity tab — who the agent is

The Identity tab: agent name, initial greeting and the system prompt that shapes everything the agent says.
The Identity tab: agent name, initial greeting and the system prompt that shapes everything the agent says.
  • Agent Name: the display name you’ll see everywhere in the dashboard and in call history. Pick something meaningful like “Reception” or “After-Hours Support”.
  • Slug: a short, web-safe version of the name that the system uses internally for call routing. It’s generated automatically from the name — you rarely need to touch it. If you do change it, every dispatch rule that sends calls to this agent is updated automatically when you save.
  • Folder: optional grouping so a long agent list stays tidy.
  • System Prompt: the heart of the agent. Written instructions that define its personality, its job, what it should and shouldn’t say, and how it should handle situations. Write it like a briefing for a new employee: who they are, who they work for, what a good call looks like. Shorter, focused prompts respond faster than sprawling ones.
  • Initial Greeting: the exact sentence the agent speaks when it answers. Leave empty for no spoken greeting (the agent then waits for the caller to talk first).
  • Reference Information: facts the agent should always know — opening hours, address, prices, policies. Keeping facts here (rather than buried in the System Prompt) keeps the prompt clean and easy to maintain.
  • Tool Usage Instructions: tells the agent when to use each tool it has been given (tools are set up on the Tools page). Example: “If the caller asks for a human, use the transfer tool to send them to Reception.” You describe the when; the system handles the how. Switching a tool on adds its standard line to this box for you, and switching it off removes that line again — but only if you haven’t changed it; a line you have rewritten is always left alone.
  • RAG Knowledge Base Collections: attach one or more document collections from the Knowledge Base page. The agent will search them automatically when a caller asks something the documents can answer.

Writing a good System Prompt

The System Prompt is where most of an agent’s quality comes from — it’s worth ten minutes of care. Write it like a briefing for a brand-new employee, covering five things:

  • Who it is: a name and role — “You are Sarah, the friendly receptionist for Smith Plumbing in Brisbane.”
  • How it speaks: tone and length — “Be warm and professional. Keep answers to one or two short sentences — this is a phone call, not an essay.”
  • What its job is: the tasks, in priority order — “Your job is to find out what the caller needs, answer questions about our services and hours, and take a message if a plumber isn’t available.”
  • What it must never do: the guard rails — “Never quote exact prices — say a plumber will confirm the cost. Never make up information; if you don’t know, say so and offer to take a message.”
  • How calls should end: — “Before hanging up, confirm you have the caller’s name and phone number, and thank them for calling.”
💡Keep facts out of the prompt. Opening hours, prices, and policies belong in Reference Information (or a Knowledge Base collection for anything long) — and when to use tools belongs in Tool Usage Instructions. A short, focused prompt responds faster and is far easier to maintain. When in doubt, paste your rough notes into Enrich with AI and let it draft the structure for you.

Dynamic variables — personalising every call

You can put placeholders in the System Prompt, greeting and voicemail message that get replaced with real values when each call starts. The most useful ones:

  • {{user_number}}: the caller’s phone number on inbound calls, or the number being dialled on outbound calls.
  • {{current_datetime}}, {{current_date}}, {{current_time}}: the current date and time in your configured timezone — so the agent always knows what day it is.
  • {{time_greeting}}: becomes “morning”, “afternoon”, or “evening” — handy in greetings like “Good {{time_greeting}}, thanks for calling.”
  • Campaign variables: outbound campaigns add more, like {{Name}} and {{CompanyName}} — see the Campaigns section.
  • Caller lookup variables: with the lookup_caller tool on, every field your lookup returns ({{customer_name}}, {{booking_id}}…) is a placeholder too, filled before the greeting — see Tools → Know who is calling before you say hello.

Enrich with AI

  • Enrich with AI (blue button above the System Prompt): the AI rewrites and improves your prompt for you. Paste in rough notes and it turns them into a well-structured prompt. Nothing is saved until you accept the result and click Update Agent.

Behavior tab — the agent’s brain

The Behavior tab: the AI model, its fallbacks, and how the agent handles turn-taking and interruptions.
The Behavior tab: the AI model, its fallbacks, and how the agent handles turn-taking and interruptions.

The first choice on this tab is the most important one:

  • Pipeline Mode — Standard (STT → LLM → TTS): three separate services work as a relay team. One converts the caller’s speech to text, one (the AI brain) decides what to say, and one converts the reply back into speech. This is the flexible choice: you can mix and match the best provider for each job, and it works with every feature in the editor.
  • Pipeline Mode — Realtime (audio-to-audio): a single AI model listens and speaks directly, with no separate speech-to-text or text-to-speech step. Conversations feel very natural and fast, but you’re limited to the voices and behaviours that the realtime provider offers. When you pick Realtime, the Speech Recognition and Voice tabs are mostly replaced by a notice, because the realtime model handles those jobs itself.
Google Gemini Live

Google’s realtime voice models come in two flavours, and which ones you see depends on whether the agent is set to Google AI Studio or Google Vertex AI.

  • Gemini 3.8 Live — the current model and the one new agents start on. Google recommends it in place of both older Gemini voice models.
  • Gemini 3.8 Live Extended Thinking — the same model, but it reasons in the background before answering. Better on complicated questions, slower to reply, and the caller hears that pause. It has its own Thinking Level setting (Minimal / Low / Medium / High); Low is the default and is usually the right choice on a phone call. This model will not start without a level set, so the dashboard always sends one.
  • Gemini 3.1 Flash Live and Gemini 2.5 Flash Native Audio — the previous models, no longer offered: Google switches both off on 17 November 2026. Agents that used them were moved to Gemini 3.8 Live automatically when the dashboard updated. 3.8 Live has no Proactivity, Affective Dialog or Thinking Budget settings, so those switches no longer apply to a moved agent.
Which language Gemini Live speaks

There is no language setting for Gemini Live. Gemini chooses the language from your System Prompt and from the language the caller speaks. We tested this with Malayalam, Hindi and Spanish on both Google AI Studio and Vertex: a language setting was accepted and made no difference, while one line in the prompt did. So the editor shows a note in its place.

  • One fixed language: add a line such as Always speak Malayalam, even if the caller speaks English. to the System Prompt.
  • Follow the caller: add Reply in the same language the caller is speaking.
  • Greeting: write it in the same language — it is spoken first, before the caller says anything, so it sets the tone for the call.
ℹAgents saved before this change keep whatever language they had saved; Google ignores it, exactly as it always did. OpenAI and Azure realtime agents still have the Language box — there it tells their speech recognition which language the caller speaks.
ℹThe 3.8 models are Google AI Studio only. They are not offered on the Google Vertex AI provider, because Google does not serve them there. Vertex agents stay on Gemini Live 2.5 Flash Native Audio — which Google retires on 13 December 2026, with no Vertex replacement announced. If you run a Vertex realtime agent, plan to move it to Google AI Studio or another realtime provider before then.
⚠Google Vertex AI realtime only works in some regions. Google serves Gemini Live on Vertex only in the US (us-central1, us-east1, us-east4, us-east5, us-south1, us-west1, us-west4) and part of Europe (europe-central2, europe-north1, europe-southwest1, europe-west1, europe-west4, europe-west8) — not in global, Asia, Australia or the Middle East (tested October 2026).
ℹThinking Budget vs Thinking Level. Older Gemini models used a Thinking Budget measured in tokens. The 3.x models use a Thinking Level instead, and the two are not interchangeable — the dashboard shows whichever one the model you picked actually accepts, and hides the other.
OpenAI GPT-Live — a different kind of realtime agent

Every other realtime option takes turns: it listens, you stop, it answers. OpenAI GPT-Live does both at once, the way a person does — it is still listening while it talks, so a caller can cut in mid-sentence and it notices immediately. It also decides for itself when to start and stop, which is why none of the usual turn-detection settings appear for it. Pick it from the Realtime Provider dropdown; it uses the same OpenAI key as the other OpenAI options.

The thing worth understanding before you use it is that GPT-Live is two models, not one:

  • The voice is GPT-Live itself. It handles the conversation — how the agent sounds, how it chats, and what it says while it is waiting. It takes the agent’s ordinary prompt, the same one every other agent uses.
  • The thinking happens in a second model behind it, the Backend Model. That one does the reasoning and runs your tools. It has its own separate Backend Model Instructions box.
The mistake almost everyone makes. The voice never sees your tools, so describing them in the agent’s main prompt does nothing. What the main prompt needs to say is which questions to hand over — and what to say while it waits, because the caller is still on the line during that pause. Without that, the agent either hands over small talk or tries to answer something it has no information about. Put the tool detail in the Backend Model Instructions instead.
  • Voice: six voices — Marin, Cedar, Beacon, Cinder, Stone and Vesper. These are not the same list as the other OpenAI realtime models; only Marin appears in both. The voice is fixed once a call starts.
  • Backend Model: Luna is the fastest and the sensible default for phone calls. Terra and Sol are more capable but slower, and the caller hears that wait.
  • Reconnect After: only worth setting on unusually long calls. The connection renews behind the scenes and the conversation carries over, so the caller hears nothing.
Two things GPT-Live cannot do. It cannot read out a script word for word — it always says things in its own words. Where the dashboard would normally speak a fixed message (a transfer announcement, for instance) it asks GPT-Live to say the same thing in its own way instead. That is fine for most messages, but if yours has to be worded exactly — a legal or compliance line — use Standard mode for that agent. It also cannot be paired with a separate voice provider, because it has no text-only mode.

Billing is two lines, not one. The voice is charged by how long the call lasts, and the backend model by how much thinking it does. Both show on the call record.
Azure OpenAI — OpenAI realtime models on your own Azure resource

Pick Azure OpenAI as the Realtime Provider to run the GPT Realtime models on your own Azure OpenAI resource.

  • Azure Deployment Name (Advanced Realtime Options): the name of your model deployment in the Azure portal. The editor fills it in with the model name, which is what Azure suggests when you deploy a model. If you named your deployment differently, type your name here; it is kept when you change the model. If the box is left empty, the agent uses the model name.
If the deployment name is wrong, Azure refuses every call to the agent and the caller hears nothing. The agent log then names the deployment it tried — check it matches the portal.

For Standard mode, configure the AI brain here:

  • LLM Provider: which AI company powers the agent’s thinking — OpenAI, Google, and others.
  • LLM Model: the specific model. Models in the list carry star ratings for speed — for live phone conversations, faster models feel dramatically better. Smaller “mini”, “nano”, “flash” and “lite” models answer faster and cost less; larger ones reason better but pause longer on a phone line. Models not available in your configured region are greyed out with an explanation.
  • Temperature: how creative the agent is, from 0 to 1. Low values (0.1–0.3) give consistent, predictable answers — best for business use. Higher values make replies more varied but less controlled.
  • Reasoning effort on voice calls: this dropdown appears only when the selected model can “think” before answering — Claude, GPT (including GPT-OSS), Grok 4.6, Qwen, GLM, DeepSeek, Nemotron and Kimi models on AWS Bedrock, Gemini 3.x on Google / Vertex, Grok 4.5 and Grok 4.7 on xAI (4.7 always thinks a little, so even on Off expect two seconds or more before each reply — at least twice Grok 4.5, and in our launch-week tests occasionally much longer; for busy phone lines Grok 4.5 is the safer choice), DeepSeek V4 Flash on SCX (Au). Off (the default) keeps replies fastest and is the right choice for almost every phone agent. Low / Medium / High make the model reason progressively harder before each reply — smarter on complex questions, but the extra thinking is silence the caller has to sit through, so the dashboard asks you to confirm before saving anything above Off. The note under the dropdown explains exactly what each level does on the model you’ve chosen, because models differ: some always think a little even on Off, some don’t think at all unless you raise the level, and on a few Off actively switches thinking off. If you switch to a model that doesn’t support reasoning, the dropdown hides itself and quietly resets to Off — that’s expected, not a fault.
  • Enable prompt caching (Claude on Bedrock): off by default. The provider keeps a copy of the system prompt between calls, so replies start sooner and cached reads cost much less. Leave it off if the prompt keeps changing: writing the cache costs about 25% more than normal input, and that copy may never be used.
Where does your data go? (AWS Bedrock model names) Bedrock models carry a suffix that tells you where the AI actually runs: (AU) models process everything inside Australia (Sydney); (Global) models may be served from any AWS region worldwide; (Regional — uses API Settings) models run in the AWS region set for the dashboard. If data residency matters to your business, pick an (AU) model. Claude Sonnet 5.5 is offered as (Global) only for now — Amazon doesn’t provide an Australia-only version of it yet, so pick Sonnet 5 (AU) or Sonnet 4.6 (AU) if calls must stay in Australia. Claude Haiku 5.5 is Anthropic’s newest small model and about a tenth of Haiku 4.5’s price. It comes in (AU), (Global) and (Regional) on Bedrock. With Reasoning on Off it answers without thinking first (about three-quarters of a second to the first word). Claude Sonnet 4.5 has been retired: agents that used it were moved automatically to the matching Sonnet 4.6 (AU stays AU), which costs the same. Gemini 3.5 Flash and Gemini 3.7 Flash are no longer offered on Google AI Studio: Google now answers requests for them with Gemini 3.6 Flash and Gemini 3.8 Flash, so the dashboard moved every agent, chatbot, AI Summary, knowledge base and simulation setting that used them to those two models when it updated (October 2026). Nothing else about the agent changes; costs are now worked out at the model that really answers. 3.7 Flash was removed from Google Vertex AI as well (3.8 runs in the same places at the same price), but 3.5 Flash stays on Vertex because it is the only Gemini 3 model served from Sydney. OpenRouter (October 2026 refresh): the voice list gained Claude Haiku 5.5 (about a tenth of Haiku 4.5’s price and a little faster), GPT-OSS 120B via Groq (the fastest option we measured, and cheaper than the old Cerebras version it replaces), Nemotron 3.5 Lightning, Qwen 3.6 Flash and Gemini 3.8 Flash. Two models that had been quietly “thinking” before every reply (DeepSeek V4 Flash and Qwen3 32B) now answer straight away. Agents on the retired GPT-OSS 120B via Cerebras or Gemini 3.5 Flash entries were moved to the Groq and 3.6 Flash entries automatically. On Google Vertex AI the picture is different: of the current Gemini 3.x models only Gemini 3.5 Flash is served from the Sydney region (Google added it in October 2026); the others are global/US/EU only — when your configured Vertex region doesn’t offer a model, the dashboard automatically routes it through Google’s global endpoint so it still works, and the model list greys out anything genuinely unavailable with an explanation.
On a few older Claude models, AWS ignores your Temperature setting whenever reasoning is switched on — a warning appears under the Reasoning effort dropdown when that applies to your selected model.

For Realtime mode you instead pick:

  • Realtime Provider & Model: which audio-to-audio model to use.
  • Realtime Voice: the built-in voice offered by that provider.
  • Output Modalities: whether the model produces speech directly, or produces text that a separate voice (from the Voice tab) then reads out.
  • Provider-specific extras: depending on the model you’ll also see options like Temperature, Thinking Budget / Reasoning Effort (how much the model deliberates before answering — more thought, slower replies), Enable input noise reduction, and Enable context window compression (keeps very long calls from exceeding the model’s memory). The defaults are sensible — each option explains itself inline.

LLM fallback — staying up when a provider goes down

AI providers occasionally have outages or slow periods.

  • Enable LLM Fallback: builds a backup chain — primary → backup 1 → backup 2. If the current provider doesn’t reply within the timeout during a live call, the next one takes over mid-conversation. Callers just hear a normal (if slightly delayed) reply.
  • Fallback Timeout: how long to wait for a reply before switching (default 4 seconds).
  • Fallback Provider / Model and 2nd Fallback: your backups. For best protection, pick a different company than your primary, so one provider’s outage can’t take out your whole chain.

Conversation Dynamics — timing and interruptions (also on the Behavior tab)

Below the model settings, the Conversation Dynamics section controls how the agent waits and handles being talked over. The defaults suit most agents:

  • Response Delay: a deliberate pause before the agent replies (0 = fastest). Add a little if the agent feels like it’s pouncing on callers — if it cuts people off mid-thought, try 0.3–0.4 seconds.
  • Endpointing Mode: how the agent decides the caller has finished a sentence — a fixed wait, or a dynamic one that adapts to each caller’s speaking rhythm.
  • Min Words to Interrupt: how many words a caller must say before the agent stops talking (default 2). Keeping it at 2 or higher stops coughs and background noise from cutting the agent off mid-sentence. Phone agents listening with Deepgram Flux need 2 or higher — a lower value is raised to 2 automatically on those calls.
  • Barge-In Threshold: how long the caller must be speaking before it counts as an interruption at all (default 0.5 seconds). 0.3 seconds lets callers interrupt quickly while ignoring a short “uh-huh” or “yes”.
  • Discard Audio During Announcements: while the agent plays something callers can’t interrupt, anything they say is thrown away. Leave it on (the default) unless you need to catch what callers say during announcements.
  • Echo Cancel Warmup: for a moment after the agent starts speaking, the caller’s audio is ignored so the echo of the agent’s own voice can’t make it stop talking. Leave it on Automatic: 0 seconds on outbound calls (the person’s first words are never lost), 0.5 on inbound phone calls, 3 on web calls. Set a number only if one line has echo at the start of calls; 0 turns it off.
  • Resume After False Interruptions: if an “interruption” turns out to be noise, the agent picks up where it left off (the False Interruption Timeout sets how long it waits before resuming).
  • Preemptive Response Generation (Advanced): the agent starts composing its answer while the caller is still finishing — faster replies, at a tiny risk of jumping the gun. On by default.
  • Filter Markdown from Speech: strips text formatting before speaking so the agent never says “star star” out loud. Leave on.

Speech Recognition tab — how the agent hears

The Speech Recognition tab: which engine transcribes the caller, in which language.
The Speech Recognition tab: which engine transcribes the caller, in which language.
  • STT Provider: the service that turns caller speech into text. Deepgram is the popular default; ElevenLabs, Google, OpenAI, and others are also available.
  • STT Model: the specific recognition model. Newer models are usually both faster and more accurate, and the list carries star ratings for real-world speed. On Deepgram, a good rule of thumb: Flux for English phone calls (the quickest turn-taking), Flux Multilingual for its ten languages, Nova 3 when accuracy matters most or for many other languages, and Nova 3 Medical for medical vocabulary.
  • Language: the caller’s main language (e.g. en). Some providers offer a multilingual option, and an Automatic Language Detection switch lets the recogniser work it out itself.
  • Flux Multilingual (Deepgram): the conversational Flux recogniser in a version that understands ten languages (English, Spanish, French, German, Hindi, Russian, Portuguese, Japanese, Italian and Dutch), detects the language automatically, and keeps up even when a caller switches language mid-call. If you set a Language, it is used as a hint to bias recognition; otherwise detection is fully automatic. Standard Flux remains the pick for English-only lines.
  • Keywords / Custom Vocabulary / Key Terms: words the recogniser should listen out for — product names, brand names, industry jargon, unusual surnames. Adding them dramatically reduces mishearings of the words that matter most to your business. (The exact field name varies by provider.)
  • Smart Formatting (Dates & Currency) / Remove Filler Words: provider niceties — format numbers and dates properly in transcripts, and drop the “um”s and “uh”s so the AI reads cleaner text.

Audio Input Settings — voice detection, turn-taking, and noise (Speech Recognition tab)

Further down the same tab, this section decides when the agent believes someone is talking and when they’ve finished. Change one thing at a time and re-test:

  • Enable VAD (Voice Activity Detection): the ear that notices speech starting and stopping, filtering out silence and background noise. Leave on; the Speech Detection Engine dropdown picks which engine does it.
  • Microphone Sensitivity: lower picks up quiet speakers but also more background noise; higher ignores noise but can miss soft voices.
  • Min Speech Duration / Min Silence Duration: how long a sound must last to count as speech, and how long a pause must last before the agent decides the caller has finished. Raising Min Silence helps with slow, thoughtful callers who get talked over.
  • Turn Detector (Advanced): smarter end-of-sentence prediction beyond simple silence. Audio (v1-mini) — recommended — listens to tone and pacing to tell a mid-thought pause from a finished sentence. Text is the older transcript-based method; Off uses silence only (cheapest, but the agent may jump in during thinking pauses). Turn Detection Sensitivity fine-tunes how confident it must be.
  • Noise Cancellation: cleans up the caller’s audio before the agent hears it — helpful for callers on speakerphone, in cars, or on noisy sites. Pick an engine and a Suppression Strength (higher removes more noise but can start eating quiet speech). Leave off if your callers are usually somewhere quiet.
  • Flux transcript options: with a Deepgram Flux model selected, the Speech Recognition tab also shows Spoken numbers as digits (“eight two seven four one” becomes 82741 — handy for order and phone numbers reaching tools intact), a Profanity filter, and Number redaction (Off / Numbers / Aggressive) which removes spoken numbers from the transcript the agent, its tools and Call History see. All three apply from the next call.
  • Google Gemini Live transcription: Google’s newest speech recogniser (Gemini 3.5 Transcribe Live, 85+ languages, about $0.009 a minute). It appears in two places: as its own provider, Google Gemini (AI Studio), which uses the same Google AI Studio API key as the Gemini language models; and as a model under Google Cloud, which uses your Google Cloud service-account file. On Google Cloud it always runs on Google’s global endpoint — Google does not offer it in individual regions yet — so your Speech Recognition region setting does not apply to it; pick Chirp 3 instead if your audio must stay in one region. Set the Language as usual, or leave it on auto-detect. Custom Vocabulary works (brand names, street names and jargon it would otherwise mishear); Smart Formatting and Remove Filler Words are greyed out because Gemini formats the text itself. Google closes each live session after 10 minutes and the dashboard reconnects straight away, so long calls keep being transcribed. Because Google does not report usage for this model, the call’s speech-recognition cost is worked out from the call length.
  • Secondary languages (ElevenLabs Scribe v2 realtime): a comma-separated list of language codes (for example es, fr) the caller may switch to in addition to the main Language. Leave blank to let Scribe choose from every language it supports.
  • Flux options: when a Deepgram Flux model is selected, extra switches appear (Flux Turn Detection, thresholds, Echo Guard). Their inline notes explain each; the defaults are the recommended setup.

STT Stall Recovery — when the speech-to-text provider has an outage

Occasionally a speech-to-text provider has a brief outage mid-call: the phone line is fine, but the words stop coming through — the agent effectively goes deaf without knowing it, and the caller ends up talking to silence. STT Stall Recovery (on the Speech Recognition tab) protects against exactly this. It is off by default; switch it on per agent to enable it.

  • What it does when on: the agent notices within a few seconds that speech has stopped converting to text while the caller is still talking. It first recovers any delayed words automatically; if the words are truly lost it politely asks the caller to repeat (with a hard limit so it can never nag); if the connection to the provider is dead it disconnects and redials it behind the scenes — the caller just hears a short pause.
  • Dead-from-the-start connections are fixed fast: when the provider connection is broken from the very first moment of the call (the caller speaks, but not a single word ever comes through), the agent no longer works through several “could you repeat that?” rounds first — it replaces the connection immediately, within roughly the first ten seconds, then apologises once and asks the caller to say it again. This rescues the short calls where a caller would otherwise have given up before recovery finished.
  • Recovery Threshold: how long to wait after the caller stops speaking before recovery kicks in. Leave blank for automatic — the system picks a safe value for the selected provider.
  • Goodbye Message: the last resort. If the provider cannot be revived at all, the agent speaks this message once and ends the call cleanly — far better than leaving the caller talking to a dead line. Word it however suits your business, but remember it is spoken once, right before the call ends: don’t promise transfers, callbacks, or menu options. Leave blank for the built-in default.
  • Backup Transcription Provider (optional): one more rescue attempt before the goodbye. If you pick a backup, then when the main provider can’t be revived the call quietly switches to the backup and keeps going — the caller just hears one “sorry, could you repeat that?” instead of the goodbye, and the backup handles the rest of the call. Pick a different company than your main provider (two services from the same company tend to fail together). If the backup fails too, the goodbye still fires — choosing a backup never removes the safety net. Backup minutes are billed at your main provider’s configured rate. Some providers can’t serve as backups and appear greyed out. Leave on None to go straight to the goodbye instead.
  • Turning it off: switch it off and the agent instantly returns to standard behaviour — nothing else about the agent changes.
ℹDeepgram Flux agents: agents using Deepgram Flux already include a basic built-in stall detector that runs regardless of this switch. The switch adds the full recovery ladder — repeat prompts, automatic reconnection, and the goodbye — for Flux and every other provider alike.
ℹRealtime mode: when the agent uses the Realtime pipeline, this tab shows a “Realtime Mode Active” notice instead — the realtime model does its own listening, so there’s nothing to configure here.

Voice tab — how the agent sounds

The Voice tab: choose the voice your callers will hear.
The Voice tab: choose the voice your callers will hear.
  • Google Vertex AI — Cloud TTS voices: Chirp 3 HD and Chirp HD voices speak as the reply streams in. Studio, News, Casual and Polyglot voices can’t stream (a Google limitation), so they speak sentence by sentence — until October 2026 those voices were silent on calls. Studio voices cost about ten times more per character than the others. For Russian, Google has only 8 Chirp 3 HD voices, so the list shows just those.
  • Greyed-out models: any Google Vertex AI model, voice or recogniser that Google doesn’t serve in the region chosen is greyed out, with the regions it does work in. An agent that already uses one keeps it selected (marked ⚠) so saving the agent never changes its model behind your back.
  • TTS Provider: the service that speaks the agent’s replies. ElevenLabs is known for the most natural voices; OpenAI, Google, and others each have their own character and price point.
  • Voice: the actual voice. Most providers offer a gallery of male and female voices in different accents; some (like ElevenLabs) support custom cloned voices via the TTS Voice ID field.
  • ElevenLabs voices: the list shows ElevenLabs’ standard voices, grouped by accent and labelled with the accent, age and gender ElevenLabs itself gives each voice. They work on every ElevenLabs plan. Charlie is ElevenLabs’ only standard Australian voice. The Australian — Advanced group adds more Australian voices from ElevenLabs’ Voice Library — women: Emma, Sally, Jess, Kylie, two Charlottes, Arabella and Hannah; men: Paul, Tom, Daniel, Ian and Lee; plus Stevie J, whose accent sits between Australian and British. All are billed at ElevenLabs’ normal rate. Voice Library voices need a paid ElevenLabs plan, and the person who shared each voice can withdraw it after a notice period (at least a year for every voice listed except Arabella, six months, and Hannah, who has no notice period — their labels say so), so make a test call after choosing one. If a voice ever stops working, the call’s Logs tab shows an ELEVENLABS VOICE FAILED line explaining why. For any other voice — another Voice Library voice or your own cloned voice — choose Custom Voice ID… and paste its ID. For the most reliable accent use Flash v2.5 or Turbo v2.5: ElevenLabs checks each voice’s accent on those models, not on V3 or V4 Turbo, and the editor warns when an Australian voice is paired with V3 or V4 Turbo. Speech speed on Flash and Turbo must be between 0.7 and 1.2; a speed outside that is adjusted automatically. The list was rebuilt in October 2026, because ElevenLabs had retired many of the voices the old list offered and several were labelled with the wrong accent. Nothing an agent plays changed:
    • An agent on a voice whose label was wrong now shows the correct accent (for example Eric — American, previously listed as Australian) with a short note under the Voice box.
    • An agent on a voice ElevenLabs retired opens with Custom Voice ID selected and a note naming the old voice. That ID already plays a different voice than its old name; pick a voice from the list to choose again.
    • An agent with no voice chosen shows Sarah (default) — the voice it has always used.
  • SLNG.ai Fish Audio voices: the list is a starter set of Fish voice IDs; any of the 338 voices on SLNG’s Fish Audio voice page can be pasted in via Custom Voice ID. Demo Voices — Voice ID changes on each turn sends no voice ID at all, so Fish picks a different voice every time the agent speaks — use it only to prove the connection works (for example when a pinned SLNG region can’t find a named voice and calls fail with “Reference not found”), never for a live agent.
  • Speech Speed: speaking rate. 1.0 is normal; a touch faster (1.05–1.1) can make agents feel snappier. The slider only appears for voices that support it. For Deepgram that means Flux voices (0.5–1.5 — the ends are gentler than the numbers: 0.5 is about a quarter slower, not half speed; most phone agents sound best between 0.8 and 1.2) and Aura-2 English and Spanish voices (0.7–1.5); other Aura voices have no speed control.
  • Deepgram Flux voices: Flux is Deepgram’s conversational voice engine. It keeps its tone and pacing from reply to reply — but only while the call stays on the same connection to Deepgram; a new connection starts that memory afresh. The dashboard keeps one connection open for the whole call, and each call’s Logs tab (Call Details) ends with a line such as Flux TTS: 9 speech segments on 1 connection(s). If Flux ever has to open a fresh connection part-way through a call you will also see a warning, Flux TTS opened a new Deepgram connection mid-call, at the point where its tone memory restarted. A hand-over to another agent always starts its own connection, so it does not trigger the warning, and the end-of-call line covers the agent that was speaking when the call ended.
  • Provider extras: some providers add their own sliders — e.g. ElevenLabs’ Voice Stability (lower = more expressive, higher = more consistent) and Similarity Boost (how closely the voice sticks to its original character).
  • ElevenLabs V4 Turbo: ElevenLabs’ newest voice model — more expressive than Flash while still quick to start speaking, and billed at the same per-character rate as Flash v2.5. Voice Stability and Similarity Boost apply; ElevenLabs removed the speed control from v4, so the Speed setting hides itself (on chatbots too). Behind the scenes the dashboard speaks each sentence as soon as it is written rather than word-by-word, because v4 does not support ElevenLabs’ word streaming — you don’t need to do anything about this.
  • ElevenLabs V3 Conversational: ElevenLabs’ most expressive voice model. Instead of sliders, you direct the performance with audio tags written into your prompts and greetings — e.g. [whispers], [excited], [laughs], [sighs] — and only the Voice Stability slider applies (Similarity and Speed are controlled by the model, so those controls hide themselves). It takes noticeably longer to start speaking than Flash v2.5 and costs about twice as much per character, so choose it where expressiveness matters more than snappy response — storytelling, empathy-heavy lines — rather than fast-paced phone traffic.
  • Start speaking earlier (Advanced): begins generating the spoken reply during the brief pause while the agent confirms the caller has finished — shaves a few hundred milliseconds off response time, at a small extra TTS cost when it guesses wrong. Off by default.
ℹRealtime mode: this tab is also replaced by a notice in Realtime mode — unless the realtime model is set to text-only output, in which case the voice you pick here reads out the model’s text replies. This applies to the OpenAI and Azure realtime models. On Google Gemini realtime, text-only output does not hand the speaking over to the voice you pick here — Gemini keeps speaking in its own realtime voice. If you want a specific voice on a Gemini agent, choose it from the Realtime Voice list on the Behavior tab rather than here.
ℹWhat happens automatically on Deepgram voices: Deepgram’s Aura voices can skip the word that follows a written “...” pause, which is how a phone number read back as “zero four zero three ... one two three ... six four eight” can lose a digit. The dashboard therefore sends a spaced “...” to Deepgram as a comma on the word before it (“three, one two three, six four eight”), which keeps a short pause between the groups and never loses the digit. When the groups are written as numerals (“0403 ... 123 ... 648”) the dots are simply removed, because Deepgram reads “0403 123 648” digit by digit. Your prompts, the transcript and the billed characters are unchanged — only the audio is. The agent log records how often it kicked in (“TTS pause guard: N rewrites”). Other voice providers are not affected.

Advanced tab — conversation feel

Agent Handoffs and Data Extraction Fields, near the bottom of the Advanced tab.
Agent Handoffs and Data Extraction Fields, near the bottom of the Advanced tab.

The defaults here work well for most agents. (The fine-grained timing and hearing controls live on the Behavior and Speech Recognition tabs — see the Conversation Dynamics and Audio Input Settings groups above. This tab holds the operational settings.)

Silence behaviour — when both sides go quiet

  • Silence before agent re-engages: how many seconds of quiet before the agent speaks first (default 10).
  • Re-engage caller on silence: when the timer fires, choose what the agent does — ask “are you still there?”, say an exact custom phrase you write, or stay silent. The agent keeps checking in at the same interval — counted from when it finishes speaking each time — until the caller responds or the attempt limit is reached.
  • Max re-engagement attempts before hanging up: after this many unanswered nudges the agent says a polite goodbye (played in full) and ends the call (default 2). Speaking at any point cancels the countdown instantly.
  • End Call on Silence & Silence Timeout (seconds): a harder backstop — end the call outright after a continuous stretch of total silence, so an abandoned line can’t stay open racking up cost.
When a call is handed off between agents (transfers and transitions), the silence settings of the agent currently handling the call apply — each agent’s own on/off switch, action and phrase take over as soon as it picks up the conversation. The re-engagement attempt count is shared across the whole call, so nudges used before a handoff count towards the limit afterwards.

Outbound Call Detection — voicemail and phone menus

These only apply to outbound calls (campaigns and manual dialling), where the agent may reach a machine instead of a person:

  • Voicemail Detection: the agent recognises it has hit voicemail. Action when voicemail is detected chooses what happens next — hang up, leave a spoken Voicemail message (written by you), or play an uploaded Recording to play at a chosen volume. Extra detection instructions lets you describe unusual voicemail greetings your callers’ carriers use.
  • IVR / Phone Menu Detection: recognises “press 1 for sales” phone menus. Action when IVR menu is detected is either Navigate the menu (the agent presses keys itself — tell it which options to pick in the System Prompt) or Hang up immediately.
Detection method — classic or LiveKit answering-machine detection

The Detection method select at the top of the card decides who does the recognising:

  • Ask the AI (classic): exactly what every agent did before this option existed, and what existing agents keep using until you change the setting. The agent’s own language model listens to the call and calls a tool when it believes it has reached voicemail or a phone menu. Your greeting is spoken as soon as dialling starts, so on a slow-to-answer number it can play into the ringing tone.
  • LiveKit answering-machine detection (the default for new agents): LiveKit listens to how the call is answered and decides in about a second whether a person, a voicemail greeting, a full or unset mailbox or a phone menu picked up. It then applies the voicemail and phone-menu settings you already have: a person gets your greeting, a voicemail gets your message or recording after the beep, a full mailbox is hung up on, and a phone menu is navigated or hung up on per your IVR setting. Your greeting is held until the callee has actually answered. Outbound calls only — inbound calls, chatbots and the Agent Tester are never affected, and the method only does anything when Voicemail Detection or IVR Detection is switched on.
  • Wait for the beep: (LiveKit mode) the detector fires when the greeting ends, but most beeps land a second or two later. Your message or recording starts after this pause (default 2 s) so it is not cut off.

Under Advanced detection settings (LiveKit mode):

  • Give up deciding after: counted from the moment the call is answered (default 20 s). When it runs out the result is “uncertain”.
  • Give up waiting for any speech after: a callee who answers and says nothing counts as “uncertain” after this long (default 10 s). If the call had already been answered by the time the detector started listening, this is shortened to 3 s so a person who already said hello is not left waiting.
  • Short greeting limit: speech shorter than this followed by silence (“Hello?”) is a person straight away; longer greetings are checked by the classifier model (default 2.5 s).
  • When the detector cannot decide: Continue as if a person answered (default) or Hang up. Pick Hang up for campaigns where a wrong greeting into a phone tree is worse than a missed person.
  • Classifier model: which language model reads the greeting transcript. Leave it on “this agent’s model” unless you want something faster or cheaper. It always runs as a separate copy, so a classifier hiccup can never end the call.
  • Detection recogniser: realtime (audio-to-audio) agents have no recogniser of their own, so the detector listens with this one (Deepgram Nova-3 by default). Standard agents reuse their own Speech Recognition setting.
  • Wait for the greeting to finish before deciding: on by default, so a voicemail is never talked over. Switch it off to make “Give up deciding after” a hard limit.
What happens automatically in LiveKit mode: while the detector is listening the agent stays silent (no greeting, no silence nudges); if the detector cannot be started for a call — for example the number was answered before the agent joined and nothing was heard — the classic method takes over for that call, and the agent log says AMD fallback: with the reason. Every result is written to the call’s record and shown on Call Detail as Answered by: Person / Voicemail / Mailbox unavailable / Phone menu / Unknown. Campaign counts keep working: voicemail, full mailboxes and hung-up phone menus all count as voicemail. Extra detection instructions apply to the classic method only.

Resource Limits — caps and safety valves

Also on the Advanced tab, the Resource Limits section sets sensible ceilings on each agent:

  • Max Call Duration (minutes): the agent politely ends the call when this limit is reached. New agents default to 10 minutes — if your calls seem to cut off at a fixed length, this is why. Raise it, or set it to 0 for no limit. It’s a useful cost guard against a caller (or a misbehaving conversation) keeping a line open for hours.
  • Max Tool Steps per Turn: how many tools the agent may use in a row before it must speak (default 3). Raise it only if the agent runs multi-step workflows — e.g. look up an order, then verify the caller, then send a confirmation — and you see it stopping partway through.

Agent Handoffs — passing the caller to another agent

Handoffs let one agent pass the live call to another agent mid-conversation. There are two very different ways to use them: a Transfer behaves like being put through to a different department (a new “person” takes over, and may say so), while a Transition builds one seamless receptionist out of several narrow specialist agents — the call silently moves between a router, a booking phase, a cancellation phase and so on, and the caller believes they spoke to one person the whole time. Picking the Type in the editor snaps the announce and context settings to that style’s recommended defaults. On a silent transition the destination agent simply carries the conversation on (it is handed the previous agent’s last line so it never repeats it); if it has an Initial Greeting written and the route’s tick-box is on, that line is spoken instead, and a route’s Bridge Phrase is spoken first if set. Silent transfers with no greeting wait for the caller. For transitions to stay invisible, every agent in the chain needs the same persona wording and the same Voice settings — the editor warns you if any transition in the chain (even one configured on another agent’s page) would change the voice mid-call.

  • Handoff hold line & Play after (seconds): a per-agent setting shown at the top of the Agent Handoffs section — insurance for seamless transitions. If this agent hands the call to another agent and nobody has said anything for that many seconds while the handover is being prepared (for example while a Summary-mode handover brief is written), the caller hears the hold line once (default “One moment.” after 3 seconds) instead of silence. On a normal transition it never plays, and it is never used on transfers. Write it in the agent’s language; leave the text blank to switch it off for this agent. The agent doing the handing off owns the setting.

The full guide — including ready-to-copy example prompts for both styles and a worked multi-phase receptionist setup — is in the Transfers & Transitions section.

  • Transfer: an announced handoff. The caller knows it’s happening — “Let me put you through to our billing team.” Use the optional Sign-off Prompt to control the exact send-off line.
  • Transition: a silent handoff. The caller never notices — the conversation simply flows into a new phase handled by a different agent (useful for multi-step workflows like verify-then-book). An optional bridge phrase smooths the join.
  • Context Mode: how much of the conversation the receiving agent inherits — Full (everything), Summary (an AI-written handover brief — who is calling, what they want, and the exact details collected so far), or Fresh (clean slate).
  • Handoff Summary Model & Custom Summary Instructions: shown when Summary mode is selected. Pick which AI model writes the handover brief (default: the agent’s own model) and optionally replace the built-in instructions with your own. Writing the summary adds a short pause — typically 2–5 seconds — at the moment of transfer (an announced transfer’s sign-off line usually covers it; on silent transitions the pause is capped tighter). If the summary can’t be generated in time, the transfer still goes ahead with the most recent part of the conversation attached — it never gets stuck.
  • Greeting on handoff: the receiving agent’s Initial Greeting is spoken on announced handoffs; on silent ones it’s skipped automatically.
  • When to Transfer / When to Transition: a one-line description the AI reads to decide when this handoff applies — e.g. “Transfer when caller asks about billing or invoices”.

Data Extraction Fields — pulling details out of every call

Also on the Advanced tab: name the specific details you want captured from each call — a callback number, an order reference, a preferred appointment day — and the AI fills them in when it generates the call summary. Each field has a Field Name (short, lowercase), a Display Label (how it appears on the call detail page), and a Description (for LLM) telling the AI exactly what to look for. Extracted values show up on each call in Call History.

Walkthrough: build a production-ready voice agent, stage by stage

Work through the tabs in this order — and prove each stage works before moving to the next. That way, when something misbehaves you always know which stage caused it.

  • Stage 1 — Identity. Name the agent, write the System Prompt using the five-part briefing above (or paste rough notes into Enrich with AI), set an Initial Greeting, and put your facts in Reference Information. Save. Prove it: open the Agent Tester in Text mode and have a typed conversation — wrong tone or wrong facts get fixed here, before audio ever enters the picture.
  • Stage 2 — Behavior. Keep Standard pipeline unless you specifically want Realtime. Pick a fast LLM (the star ratings are speed), Temperature 0.2–0.3, and set up an LLM fallback with a different company as backup. Prove it: the agent list’s Health badge is green, and Text-mode replies in the Tester come back quickly.
  • Stage 3 — Speech Recognition. Pick the STT provider/model, set the language, and — important — add your business’s product names, brand names, and local suburbs to the Keywords/Custom Vocabulary field. Prove it: Agent Tester in Voice mode — say the tricky words and check the transcript panel got them right.
  • Stage 4 — Voice. Choose the voice and speed. Prove it: listen in the Tester — if it sounds robotic or too slow, adjust speed (1.05 is a nice nudge) or try another voice before you get attached.
  • Stage 5 — Tools & handoffs. On the Tools page assign what the agent needs (hangup at minimum; transfers, take-a-message, send-SMS as required), then come back to Identity → Tool Usage Instructions and write one line per tool about when to use it. Add Handoffs on the Advanced tab if another agent handles part of the job. Prove it: in the Tester, ask for a human / trigger each tool and watch the tool calls appear in the transcript.
  • Stage 6 — Safety rails. Advanced tab: check Max Call Duration suits you (new agents default to 10 minutes), set silence behaviour, and — for outbound work — voicemail detection. Speech Recognition tab: consider switching on STT Stall Recovery with a backup provider.
  • Stage 7 — real call. Start the agent, point a dispatch rule at it (see Dispatch Rules), and ring it from your mobile. Only a real call proves the trunk, caller ID, and true phone audio.

Transfers & Transitions (Agent Handoffs)

One phone call, several specialist AI agents — handoffs let a call move between your agents without the caller ever being put on hold.

A handoff swaps which of your AI agents is speaking on a live call. The call never leaves the dashboard and never rings another phone — it’s the same call, with a different “brain” taking over. There are two styles, and they serve two very different designs:

The two styles — two different mental models

  • Transfer — separate departments. The caller is handed to what feels like a different person: “Let me put you through to our billing team.” The new agent has its own name, its own greeting, and may sound different. Use this when departments are part of the experience — reception → billing, sales → support.
  • Transition — one person, several phases. The caller never notices anything. Behind the scenes the call moves between narrow, single-job agents — a router that works out what the caller wants, then a booking agent, a cancellation agent, a question-taker — but to the caller it is one continuous conversation with one person. This is how you build a large, complex receptionist without one giant prompt: each phase gets a short, focused prompt and only the tools that phase needs.
ℹHandoffs are not phone transfers. To send a caller to a real human on another number, use the Blind Transfer or Attended Transfer tools on the Tools tab instead. Handoffs only ever swap between your own AI agents on the same call.

Setting one up

What the caller hears at the moment of takeover depends on the type. On a transition the new agent simply carries on the conversation as the same person: it is given the previous agent’s last sentence so it never repeats it, and it speaks within the normal thinking pause (one to two seconds). If the new agent has an Initial Greeting written and the route’s “Speak this agent’s Initial Greeting on takeover” box is ticked, that exact line is spoken instead — keep it to one short phrase. If the route has a Bridge Phrase, the system speaks it at the handoff (handy over a Summary-mode pause) and the new agent then carries on. If the last thing said before the handoff was a question (“Anything else I can help with?”), the new agent waits for the answer instead of talking over it, and it never hops straight on to a third agent before the caller has spoken. On a transfer the caller is meant to notice: announced transfers say the Sign-off Prompt and the new agent’s greeting; a silent transfer with no greeting waits for the caller. Each call allows up to 12 handoffs as a safety limit against accidental loops.

<role>
You are Alex, the Billing Department agent for {{business_name}}. Callers
reach you when reception transfers billing questions to you. You are a
different person from the receptionist - introduce yourself as Alex from
Billing when you take over.
</role>

<job>
Handle invoice queries, payment issues, and account balances. Verify the
caller's identity (full name + date of birth) before discussing any
account details.
</job>

<style>
Professional and warm. Plain text only - no markdown, your words are
spoken aloud.
</style>

For a Transition target, write a phase of the same person — and leave its Initial Greeting blank so it simply carries the conversation on (a greeting is spoken word for word and can sound like a restart); never a call-opening welcome:

<role>
You are Chloe, the AI receptionist for {{business_name}}. You are MID-WAY
through an ongoing call - the conversation so far is in your context.
This is the BOOKING phase of the call.
</role>

<critical_rules>
- Do NOT greet the caller or introduce yourself. You have already been
  speaking with them.
- Do NOT ask for anything the caller has already told you - check the
  conversation context first. If their name, phone number, or preferred
  clinic is already there, use it.
- Never mention being transferred, connected, or "a different agent".
  You are the same person the caller has been talking to.
- Continue naturally from wherever the conversation left off.
</critical_rules>

<job>
Book the caller's appointment: confirm the service and practitioner,
offer available times, capture any missing contact details, confirm the
booking back to them.
</job>

Example setup: a clinic receptionist built from phases

A proven pattern for a complex receptionist:

  • Intro Manager (the agent your phone number points at): greets, answers general questions, works out what the caller needs. Transitions to each specialist phase.
  • Booking / Reschedule / Cancel agents (one per site if locations differ): each does one job with only that job’s tools attached. Each can transition back to the Intro Manager or across to another phase (“actually, I also want to ask a question”).
  • All of them share the same identity block word-for-word (“You are Chloe…”), the same Voice settings, no greetings, and full-context silent transitions.

Four rules that keep transitions invisible

  • Same identity everywhere: the name and persona wording must be identical in every agent of the chain. Any drift is what callers notice.
  • Same voice everywhere: a different voice on any hop instantly reveals the swap. The editor shows a warning listing every transition in the chain — including hops configured on other agents — where the voices don’t match.
  • No greeting on transition targets: leave the Initial Greeting blank (or untick “Speak this agent’s Initial Greeting on takeover” on the route) and the new agent just carries on — that is what keeps the swap invisible. Untick it on routes that loop back to the entry agent, or its full welcome would replay mid-call; the router then continues naturally, or waits if the last thing said was a question.
  • “Don’t re-ask” in every phase prompt: the number-one giveaway in real calls is a phase agent asking for a name the caller already gave. The critical-rules block above prevents it.
⚠Test the whole chain, not just the first hop. Use the Agent Tester on the entry agent and steer the conversation through every phase — including “take me back” paths — listening for re-greetings, re-asked questions, or a voice change.

Chatbot Agents

Text-chat versions of your AI agents — embed them on your website.

Where voice agents answer the phone, chatbot agents answer typed messages. The same AI brains, prompts, knowledge bases, and tools power both — a chatbot can look up your documents, and even speak out loud if you enable its voice mode. The most common use is the website widget: a small chat bubble in the corner of your site that visitors click to talk to your AI.

The Chatbot Agents page — create, edit and manage your website chat agents.
The Chatbot Agents page — create, edit and manage your website chat agents.

1 The list page

The Chatbot Agents page lists every chat agent with an Enabled / Disabled state. A disabled agent refuses new conversations — handy while you’re still building it. From the list you can create, create from a template, toggle on/off, duplicate, export, import, and delete agents, just like voice agents. Duplicate copies the chatbot’s tools and knowledge-base links along with its settings. Export downloads a JSON backup; Import restores one. The Usage Today column shows how many of today’s allowed sessions the agent has used (e.g. 12/50, from the daily limit on its Session tab) — it turns yellow at 80% and red when the limit is reached and new visitors are being turned away until midnight (UTC).

1b Copy to Voice Agent — and Copy to Chatbot Agent

The ⇄ button on a chatbot row makes a phone agent from that chatbot in one click (the same button on the Voice Agents page goes the other way). Nothing is copied until you have seen a preview:

  • Copied: the system prompt, knowledge text, tool instructions, data-extraction fields, and every speech setting from the Voice tab (recogniser, voice, conversation dynamics). Tools and knowledge-base collections are linked to the copy; a collection is shared, so editing it changes both agents.
  • Adapted: the language model and its fallback chain are rewritten into the voice-agent shape (the chatbot’s reply-length limit has no phone equivalent), the widget welcome message becomes the greeting, a phone routing slug is generated from the name, and two chatbot-only behaviours are reset to the phone defaults: fast-trip stall recovery is turned back on and the “reconnect the chat” speech-recovery message is cleared.
  • Not carried over: the widget look, allowed websites, session limits, error reply, automatic summaries and recording consent — none of them mean anything on a phone call. Going the other way, phone transfers, hold, keypad input, voicemail/IVR detection, realtime settings and handoffs stay behind. Human Handoff settings (and the handoff_to_human tool) are website features and are not copied to a phone agent.
  • Warnings: prompt placeholders are never rewritten, only flagged. A chatbot prompt that relies on a variable from the embed page comes out blank on a phone call unless a campaign supplies the same variable; {{user_number}} works on phones but is blank on a website.
  • Switched off on arrival: the copy is created stopped (voice) or disabled (chatbot) so it cannot answer a real caller or visitor until you have reviewed it. If the chatbot had no recogniser or voice selected, the preview says “Voice setup required” and asks you to tick an acknowledgement.
  • One-time snapshot: the two agents are not linked. Change one later and the other stays as it was. If a copy fails part-way, delete the half-made agent and try again.

2 Create from a template

The Templates button next to Create Chat Agent opens a gallery of nine ready-made text chatbots — the same scenarios as the voice agent templates (healthcare clinic, clinic front desk, e-commerce support, real estate, hotel concierge, restaurant reservations, IT helpdesk, trades bookings, and a feedback survey), each adapted for website chat. Every template arrives with a full set of instructions, realistic business information, and widget styling (title, welcome message, brand colour) already filled in. Click Use This Template and you land in the editor ready to customise.

⚠Template chatbots are created enabled. They’ll answer as soon as the widget is embedded on a page.
ℹWhat happens automatically: templates are created in text-only mode (no microphone) — you can switch on voice later from the General tab. The Feedback Survey template also switches on automatic summaries for itself, so its four survey answers are captured as data fields on every conversation without any extra setup.

3 The essentials — General and LLM & Prompt tabs

The chatbot editor tab strip. Embed Code joins them once the agent is saved.
The chatbot editor tab strip. Embed Code joins them once the agent is saved.

Open an agent and you’ll find the editor organised into tabs: General, LLM & Prompt, Widget, Session, Domains, and Embed Code.

  • Name: the agent’s display name in the dashboard.
  • Description: internal notes for you — visitors never see this.
  • Enabled: the master on/off switch.
  • Provider & Model: the AI brain, exactly like a voice agent’s. Because chat doesn’t need split-second replies, you can afford a smarter (slower) model here than you would on a phone agent.
  • Fallback models: up to two backup models that take over automatically if the main model fails — an outage, a “too busy” (rate limit) error or a missing key — so visitors just keep chatting. Turn on Enable LLM Fallback and pick one or two models. It works on every chatbot channel: website text chat, website voice chat.
    • As soon as the main model reports an error, the message goes to backup 1, then backup 2. Each model gets one try — the main model isn’t retried first.
    • Website chat (typed and spoken) works like a phone agent: once the main model has failed, the rest of that chat goes straight to the backup while the main model is checked again in the background. A model that sends nothing at all is given up on after Fallback Timeout for spoken replies, and after about 10 seconds for typed ones.
    • If a tool has already run (for example an email was sent), the backup carries on from there — nothing is done twice. Once a reply has started appearing it is not switched halfway through.
    • A backup uses the main model’s extra settings where it has the same kind (for example an Azure deployment name or an OpenRouter custom model id).
    • Replies a backup wrote are charged at the main model’s price, and the record still names the main model — the same as on phone calls.
    • When a backup steps in, the conversation’s page shows a Backup model line (when and which model failed), the Agent Tester’s Debug panel shows a line, and website chats count toward the Provider errors alert if you have set one up.
  • Temperature: creativity level, from 0 to 2 (new chatbots start at 0.7). Keep it low for consistent business answers; higher gives more varied, creative replies.
  • Reasoning effort: the same Off/Low/Medium/High dropdown as the voice editor, shown only for models that can think before answering (Claude, GPT including GPT-OSS, Grok 4.6, Qwen, GLM, DeepSeek, Nemotron and Kimi models on AWS Bedrock, Gemini 3.x, Grok 4.5 on xAI). Website visitors tolerate a short wait far better than phone callers do, so raising this is more reasonable here than on a voice agent — the note under the dropdown explains what each level does on your chosen model. It hides itself (and resets to Off) when the selected model doesn’t support it.
  • Max Tokens: a ceiling on how long each reply can be. Lower it to keep answers short (and cheaper); raise it only if replies are being cut off mid-sentence.
  • System Prompt: the agent’s written personality and job description. The teal Versions button above it lists earlier saved versions to compare (Diff) or restore — it works exactly like Voice Agents → Prompt version history.
  • Reference Information: short must-know facts (hours, returns policy, contact email) that are included with every reply.
  • RAG Knowledge Base Collections: attach document collections from the Knowledge Base page. The agent searches them on demand when a visitor’s question calls for it — across the website widget, voice chat alike.
  • Tool Instructions: when and how to use any tools assigned to this agent.
💡Tip: put short, always-relevant facts in Reference Information, and large document sets in a Knowledge Base collection. Stuffing big documents into the prompt slows every reply and costs more.

4 Widget appearance

The Widget tab controls how the chat looks on your website:

  • Brand Color: the colour of the chat bubble and header — match it to your site.
  • Position: bottom-right or bottom-left corner.
  • Theme: light, dark, or auto (auto follows each visitor’s own device setting).
  • Widget Title: the heading at the top of the chat window.
  • Display Mode: how the chat presents itself — Popup (classic floating bubble), Embedded (sits inline inside a section of your page), Sidebar (slides in from the screen edge), Fullscreen overlay (large centred window), Voice Button (a click-to-talk pill with a live waveform), or Voice Orb (an animated orb that reacts to sound). The two voice modes need the agent’s voice mode switched to full voice.
  • Orb Style: the look of the voice orb. Classic is the original crescent. Circle is a solid dot that breathes with the caller’s voice and glows while the agent speaks. Bars is a five-bar meter that rises and falls with the voice. Circle and Bars are drawn in your brand colour and are used in two places at once — the big orb in Voice Orb display mode, and the small indicator inside the chat during a voice session. Choosing either one therefore replaces the Voice Visualizer setting below. New chatbots start on Circle; chatbots you created earlier stay on Classic until you change them, so nothing about your live widget changes on its own.
  • Voice Visualizer: the style of the small in-chat indicator shown during voice sessions — Bars (the classic animated equaliser) or Dot grid, a 5×5 matrix of dots that animates differently for each moment of the conversation: a ring sweeps while connecting, the centre pulses while listening, a line sweeps while the agent is thinking, and the dots rise and fall with the agent’s voice while it speaks. This setting is ignored whenever Orb Style is set to Circle or Bars, because the orb style then drives the in-chat indicator too.
  • Widget Size, Corner Style, Launcher Size: Compact (380 px wide) or Full (440 px), Rounded / Square / Extra-rounded corners, and a small/medium/large chat bubble.
  • Open From Your Own Button: already have a “Chat with us” button on your site? Enter its CSS selector here and clicking it opens the widget. It only works in Popup, Sidebar and Fullscreen modes — the other modes have no launcher to open.
  • Widget Elements: show or hide the transcript, microphone button, and text input box. The microphone setting only applies in Full voice mode, and the text box can only be hidden in Full voice mode with the microphone shown, so visitors always have a way to talk to the agent.
  • Welcome Message: the first message visitors see when they open the chat.
  • Branding Text: the small line of text at the bottom of the widget — set it to your own company name or leave it blank.
The Widget tab — colours, corner, size, which parts show, and the Orb Style animation, with a live preview.
The Widget tab — colours, corner, size, which parts show, and the Orb Style animation, with a live preview.

5 Voice tab — Chat Mode and every speech setting

The Voice tab owns the Chat Mode choice and every setting that only matters when a chat has sound. In Text mode the tab shows only the mode selector; pick a voice mode and four sub-tabs appear, laid out like the phone-agent editor: Speech Recognition (recogniser, model, language, turn detector, stall recovery and the advanced recogniser controls), Voice (voice provider, model, voice, output volume, markdown filter and the advanced voice controls), Conversation Dynamics and Recording. The editor remembers which sub-tab you had open, and a save that trips a validation error on another sub-tab switches to it so you can see the field. Nothing is renamed — every setting saves exactly as before.

  • Text only: visitors type, the agent replies in text. No microphone, no audio. Only the LLM provider’s API key is needed — no speech-recognition or voice key, and the Speech Recognition / Voice sub-tabs are ignored in this mode.
  • Voice with avatar: visitors still type, but the agent’s reply is spoken aloud. The browser never asks the visitor for microphone permission.
  • Full voice: a real two-way voice conversation — visitors speak into their microphone and the agent listens and replies aloud. The browser will prompt visitors for mic permission.
Chat Mode on the Voice tab — the one decision that turns a typing chatbot into a talking one.
Chat Mode on the Voice tab — the one decision that turns a typing chatbot into a talking one.
With a talking mode selected, the speech settings appear below.
With a talking mode selected, the speech settings appear below.
ℹNothing changes until you change it. Every field on this tab shows the value the chatbot already runs with. Opening the tab and pressing Save keeps behaviour exactly as it was; only the fields you edit take effect. These are the same controls a phone agent has, so a setting that works on your voice agent means the same thing here.

Speech recognition (how the agent hears — full voice only)

  • STT Provider / Model / Language: the recogniser and the language visitors speak.
  • Responsiveness, Custom vocabulary, Smart formatting, Remove filler words, Auto-detect language: tuning that most providers honour. Blank means the provider’s own default.
  • Provider extras: some recognisers have their own panel (Deepgram Flux and ElevenLabs Scribe) that appears only while that provider is selected. The Deepgram panel carries the Flux transcript options (spoken numbers as digits, profanity filter, number redaction) and the ElevenLabs panel the Scribe v2 secondary languages, exactly as on voice agents. Chatbots now offer the same recognisers as voice agents — Deepgram, OpenAI, Google Cloud, ElevenLabs, AWS Transcribe, Azure Speech, Azure OpenAI, SCX, xAI Grok, Telnyx, SLNG.ai —. Azure OpenAI recognition needs a transcription deployment name (Azure OpenAI panel) and cannot be a backup recogniser.
  • STT Stall Recovery: off by default, and it only affects voice sessions — typed chats are never interrupted. When the recogniser stops responding the session first recovers missed words, then asks the visitor to repeat, then reconnects a dead transcription stream, and only as a last resort apologises with the Goodbye Message and ends the session. Recovery Threshold sets how long to wait after the visitor stops speaking before recovery starts (blank = automatic, about 3.5 seconds). Turn it on to reveal the Backup speech recognition provider used when retries are spent. Only providers that can take over a live stream are listed (Azure OpenAI and non-streaming models are hidden), and with a Deepgram Flux primary only the verified Flux-backup providers are selectable — the same rule the voice-agent editor applies.

Voice (how the agent speaks)

  • TTS Provider / Model / Voice ID / Language: the voice visitors hear.
  • Speaking speed: 1.0 is normal; not every provider supports it.
  • Provider extras: ElevenLabs stability and similarity, Deepgram Flux expressivity — each appears only for its provider. Chatbot voices now match voice agents — Deepgram (incl. Flux), ElevenLabs, OpenAI, Google Cloud, Google Gemini, Azure Speech, Azure OpenAI (needs a TTS deployment name), AWS Polly, SCX, xAI, SLNG.ai and Telnyx (Kokoro voices — Telnyx retired its NaturalHD voices in September 2026; saved NaturalHD voice ids are switched to the Kokoro default automatically).
  • Output Volume: louder or quieter agent audio without touching the visitor’s device volume.
  • Filter Markdown from Speech: strips formatting before speaking so the agent never says “star star” out loud — leave it on.

Conversation dynamics

  • Voice activity detection: whether and how sensitively the agent notices the visitor speaking. Lower sensitivity numbers hear softer speech; Min silence is the pause that ends a visitor’s turn.
  • Turn detection & endpointing: the Turn Detector engine is chosen at the top of the tab — Audio v1-mini (recommended, and the default for new chatbots) listens to the speech itself and runs on any server, the older Text model needs extra memory on the agent server, and Off uses silence detection only; here you tune its threshold, the audio detector’s patience (blank = automatic), fixed or dynamic endpointing, and the pause before the agent replies. Deepgram Flux users get the Flux end-of-turn controls.
  • Interruptions: how many words it takes to cut the agent off, how long a visitor must speak, and what happens after a false interruption.
  • Noise cancellation: Full voice only. Cleans the visitor’s microphone audio on the server before recognition. Browsers already suppress noise, so start with Off and only enable it for noisy environments. The echo-canceller warm-up and microphone input rate sit here too.
  • Silence re-engage: Full voice only. When a visitor goes quiet mid-conversation the agent nudges them — ask if they are still there, repeat itself, let the AI improvise, or say your custom text — up to the number of nudges you allow, then says goodbye. This already runs on every Full voice chatbot; the controls simply tune it. In Voice with avatar the visitor has no microphone, so the agent cannot tell silence from reading and these nudges are always off (a reading visitor is never interrupted or cut off). The separate inactivity auto-close on the Session tab still ends idle sessions in every mode.
  • Record full-voice sessions: Full voice only. Off unless you switch it on. When on, the visitor sees your Consent notice and must tap Agree before the microphone or the session is even requested — nothing is recorded without that tap, and text or avatar sessions are never recorded. Recording consent decides whether they are asked at all, and has four settings. The two that ask: Ask first — keep chatting unrecorded if they decline (recommended — they still get help, just no audio file) and Ask first — offer text chat instead (voice stays off until they agree; they can still type). The two that do not ask: Don’t ask — show the notice puts your wording on screen as a permanent line the visitor cannot dismiss, and records regardless; Don’t ask — show nothing records with the visitor told nothing at all. In both of those the chat window shows a small “Recording” marker in its header while audio is being captured — but the Voice Orb and Voice Button display modes have no header, so with show nothing those two tell the visitor nothing at all. Recordings appear on that chat’s page in Chat History (player, download, and a consent receipt showing when they agreed and the exact notice they saw) and on the Recording/Egress page behind the Include chat sessions switch. The text transcript is kept either way, exactly as for every chat today. Delete the audio with the chat using Delete with recording on the chat’s page.
  • Generation: pre-emptive generation and speech start the reply before the visitor’s turn is fully confirmed (faster, slightly more usage); prompt caching lets supporting LLM providers reuse the system prompt between turns.
Recording someone without asking is against the law in many places. The two “Don’t ask” settings exist because some operators need them, but the responsibility is entirely yours. Recording a visitor’s microphone with no notice is unlawful in much of Australia and in a great many other countries, and it is the site owner who answers for it, not the visitor. If you are unsure, use one of the two settings that ask, or at minimum the one that shows the notice. Sessions recorded without asking are still filed honestly: the consent receipt on that chat records that the visitor was never asked, rather than pretending they agreed.
Recording consent is yours to word. The default notice is neutral (“This voice conversation may be recorded for quality purposes. Your chat transcript is kept either way.”). Check what notice-and-consent your state or country requires for where the widget is embedded, and edit the text to match — the dashboard shows exactly what you type. A returning visitor is asked again every session; a short recorded chat is never dropped from Chat History by the minimum-duration filter, so its audio always stays reachable.
The chat widget showing the recording consent card with Agree and No thanks buttons
What the visitor sees before the microphone is requested — nothing is recorded until they tap Agree.
ℹWhat happens automatically in voice modes: whenever a chat session runs with voice, the agent is automatically given spoken-reply rules on top of your prompt — keep replies short, avoid lists and symbols that sound wrong read aloud, say numbers and dates naturally, one question at a time, and treat typed and spoken messages the same. Your prompt stays written for on-screen text; the transcript still shows every reply as text while it’s spoken. The widget also shows the agent’s live state during voice sessions — Connecting, Listening, Thinking, and Speaking. Text-only sessions are unaffected.
⚠Chat Mode and the Widget tab: the voice-only display modes (voice orb, voice button) need Full voice. Pick another mode and the widget falls back to a popup — the Widget tab shows the current mode so this is never a surprise.

6 Hand a chat to a person (Human Handoff)

Sometimes a visitor needs a human — they ask for one, they are upset, or the chatbot has run out of answers. Human Handoff lets the chatbot pause itself and pass the conversation to your team, then take back over when the person is done. It works on the website widget (text, voice-with-avatar and full voice). Phone calls are not included: phone agents already have the transfer tools.

There is no inbox in the dashboard. The conversation is sent to a web address you choose — usually an n8n workflow that posts it to Slack, your CRM or a help desk — and your team member replies from there. The reply appears in the visitor's chat window with the person's name on it. Everything is recorded in Chat History afterwards.

Turn it on — the Human Handoff tab

Open the chatbot, go to the Human Handoff tab, and fill in the fields below. Saving with the switch on also turns on the handoff_to_human tool for this chatbot — you never need to visit the Tools page.

  • Enable Human Handoff: the master switch. It needs a Webhook URL. Switching it off (or changing the URL or secret) while someone is mid-handoff hands those chats straight back to the assistant.
  • Webhook URL: where the dashboard sends the conversation, and every visitor message after it. The address must be reachable from this server, and this server's own address must be reachable from there, because replies come back to it.
  • Signing secret: every event is signed with it so the receiving side can prove it came from your dashboard. It is created for you the first time you save. If you press Regenerate, update the secret in your n8n workflow or software too, or events will be rejected there.
  • Name shown when the person gives none: replies normally carry the person's own name; this is the fallback label.
  • While a person is being brought in: what the visitor is told the moment the handoff starts. On full-voice chats the assistant's voice reads it out.
  • When the assistant takes back over: what the visitor hears when the person closes the handoff or goes quiet for too long.
  • Show a “Talk to a person” button: puts a button in the widget's header so the visitor can ask directly, without waiting for the chatbot to decide. You can change the label. The button hides itself while a handoff is running.
  • If the button can't be honoured: shown when the daily limit is reached or the chat cannot be handed over right now.
  • Wait for a person / Then / Never wait longer than: if nobody answers within the first number of minutes, the assistant either carries on (with the message below) or keeps waiting — but never past the hard limit, after which the assistant always takes back over.
  • Person silent for: if the person stops replying for this long, the assistant takes back over.
  • Email me when a handoff starts: one email per handoff. Leave blank to skip.
  • Handoffs per day / Visitor messages per handoff / Forwarded messages per day: abuse limits. Reaching a message limit hands the chat back to the assistant.
  • Message when a person ends the chat: used only when the person chooses to end the chat instead of handing it back.
The Human Handoff tab — where the chat is sent, what the visitor sees, and what happens if nobody answers.
The Human Handoff tab — where the chat is sent, what the visitor sees, and what happens if nobody answers.

What the visitor sees

A banner across the top of the chat shows the state: Waiting for a person to join…, then You're chatting with Sam once the person replies, and it disappears when the assistant takes back over. Each of the person's replies carries their name above the bubble. If the visitor reloads the page while the chat is still open, the banner comes back; if they leave for longer than the chat's own timeout, the handoff ends and a returning visitor starts fresh with the assistant.

Chat widget showing a human handoff in progress
The widget while a person holds the chat.
  1. Save the tab at least once, then press Build n8n workflow (Slack). A workflow file downloads.
  2. In n8n choose Workflows → Import from file and pick it. Open the three Slack nodes and select your Slack credential and channel.
  3. Open the Reply form node, copy its Production URL, and paste it into the Slack message text where it says HANDOFF_FORM_URL (the yellow note in the workflow shows exactly where).
  4. Activate the workflow, copy the address of its Handoff events webhook, paste it into Webhook URL on the tab and save.
  5. Press Send test event. You should see “Outbound: delivered” straight away and a message in Slack. Open the reply form from that message and send anything — within a minute the tab shows “Inbound: your side replied”. Both directions now work.

Day to day: a Slack message appears when a visitor asks for a person. Open its reply form link, type your reply, and send. Every further visitor message lands in the same channel. On your last reply tick hand back to the assistant and the chatbot resumes — it is told exactly what you and the visitor said.

Replying inside the Slack thread itself is included in the downloaded workflow as a switched-off node (Slack thread reply (advanced)). It needs a Slack app with Event Subscriptions pointed at n8n, which is a Slack-side setup rather than a dashboard one: create the app at api.slack.com, enable Event Subscriptions with the node's webhook address, subscribe to message.channels, give it the channels:history and chat:write scopes, add it to the channel, then pick your credential on the node and enable it. From then on a reply typed in the thread goes to the visitor, and typing done hands the chat back. The reply form keeps working alongside, and needs none of that — which is why it is the default. You can also swap the Slack nodes for email, GoHighLevel, Zendesk or anything else n8n can post to.

Use your own software instead (developers)

Any system that can receive a web request and send one back can be the receiving side. The dashboard sends three events to your Webhook URL as JSON: handoff.requested (the transcript so far, visitor details, and a reply URL + token), handoff.visitor_message (each later visitor message), and handoff.ended (why it ended). Each request carries X-Handoff-Timestamp and X-Handoff-Signature — an HMAC-SHA256 of <timestamp>.<raw body> with your signing secret; reject anything older than five minutes. Answer with any 2xx within ten seconds; anything else is retried three times, and a retried delivery repeats its X-Handoff-Delivery id so you can ignore duplicates.

To reply, call the reply URL with the token as a bearer token. The token only works for that one conversation and stops working when the handoff ends.

# Send a reply
curl -X POST "https://your-dashboard/api/handoff/<conversation_id>/message" \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{"text": "Hi, Sam here - your order ships tomorrow.", "human_name": "Sam"}'

# Hand the chat back to the assistant (or end it with "resume_ai": false)
curl -X POST "https://your-dashboard/api/handoff/<conversation_id>/close" \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{"resume_ai": true, "note": "Delivery question answered"}'

# Check state and recent messages (poll no faster than every 5 seconds)
curl "https://your-dashboard/api/handoff/<conversation_id>" -H "Authorization: Bearer <token>"
  • 401 invalid_token: wrong or expired token — or your system cannot reach the dashboard's public address.
  • 410 conversation_ended: the handoff already ended (the visitor left, a timeout fired, or someone else closed it). Safe to ignore.
  • 409 not_in_handoff: someone already handed the chat back.
  • 429: more than 60 calls a minute for one conversation.

What happens automatically

  • The assistant stops answering the moment a handoff starts and does not answer again until the person closes it or a timeout fires. It is then given a clearly marked record of what was said, so it can continue sensibly — and it treats that record as information, not as instructions.
  • If nobody picks up in time, the visitor gets the message you set and the assistant either carries on or keeps waiting up to the hard limit.
  • If the person goes quiet for the set time, the assistant takes back over.
  • If your webhook cannot be reached when a handoff starts, the visitor is not left hanging: after the retries they get the “nobody available” message and the assistant carries on. The tab shows the last delivery result.
  • If the visitor leaves the widget, the handoff ends and your side is told.
  • Daily and per-chat limits stop a runaway visitor from flooding your team.

7 Sessions and allowed websites

  • Session Management: housekeeping for conversations — Auto-close inactive sessions with an Inactivity Timeout (minutes) and the Inactivity Message shown when it happens, plus Max Messages per Session as a hard cap on any single conversation.
  • Max session length (minutes, 0 = no limit, the default): ends a single chat after this many minutes with a polite message asking the visitor to start a new one — it stops a session being held open and running up AI costs.
  • Reconnect grace period (seconds, 0 = default): how long the conversation stays open after the visitor closes or leaves the page, so a quick reload rejoins the same chat. The default is about 20 seconds and the maximum 10 minutes; a longer window keeps sessions running after the visitor has gone.
  • Error Handling — When the AI hits an internal error: what the visitor sees if something breaks behind the scenes — the standard apology (default), your own Custom error message, or nothing at all (silent).
  • Daily Limit (Abuse Protection) — Max sessions per day: once this many new conversations have started today, the widget politely refuses further visitors until midnight (UTC). It’s your protection against a surprise AI bill from bot traffic or a viral page (0 = no limit). To get an email when the limit trips, add a report rule with the Widget Abuse — Daily Limit Reached trigger on the Reports page.
  • AI Summary & Data Extraction: the AI reads each finished conversation, writes a summary and pulls out the specific details you name — each extraction field has a Field Name, a Display Label, and a Description (for the AI) telling it what to look for (e.g. “the phone number the visitor wants to be called back on”). Results appear on the conversation’s Chat History page under Extracted Data, and in your AI Conversation Analysis reports.
    • When it happens: website conversations are summarised when they end.
    • Daily automatic summary limit: the most automatic summaries this chatbot gets per day, across all its channels (default 200, 0 = unlimited). Website visitors are anonymous, so this stops a flood of junk conversations running up AI costs. Conversations over the limit show “Skipped — this chatbot’s daily summary limit was reached”. If you raise the limit, today’s skipped conversations are summarised automatically within about 5 minutes; older ones need the Generate Summary button, which is never counted against the limit.
  • Domains tab — Allowed Origins: the security list of website addresses allowed to use this chatbot. Only sites you list here can load the widget — always use https:// addresses on live sites.

8 Put it on your website — Embed Code

The Embed Code tab — copy this snippet into your website to make the chat widget appear.
The Embed Code tab — copy this snippet into your website to make the chat widget appear.

The Embed Code tab generates a single small script tag. Copy it and paste it just before the closing </body> tag of your website (or hand it to whoever manages the site). The chat bubble appears automatically. Use the Preview button first to see exactly how the widget will look and behave before it goes live.

ℹNote: the Preview opens the real widget — conversations there are recorded in Chat History, exactly like a real visitor’s.

Passing details about the visitor (data-variables)

Your website can hand the chatbot details about the person — for example a logged-in customer’s name — by adding a data-variables attribute to the embed snippet, for example data-variables='{"name": "Priya", "account_number": "1253566"}'. Each name becomes a {{placeholder}} you can use in the system prompt and welcome message (“Hello {{name}}…”). Names are lowercase letters, digits and underscores (up to 32 characters), up to 10 variables, values up to 200 characters each. A placeholder you don’t supply is removed from the welcome message automatically.

⚠Personalisation only, never proof of identity. Anyone can send any value, so the agent must never treat a value like an account number as verified.

9 Test it safely

Head to the Agent Tester page (covered later in this guide), pick your chatbot from the dropdown, and chat with it in a throwaway test session — nothing is saved to Chat History, but tools and knowledge lookups run for real. The chatbot must be Enabled to respond.

Ending a chat session from your own code (developer API)

The normal way needs nothing from you: when a visitor ends the chat or closes the page, the widget disconnects them immediately. The session’s room simply sits on the server for a few minutes before it is cleaned up automatically — harmless, though a visitor who reconnects inside that window can land back in the old session.

For websites with their own “End chat” button (or any custom integration), there is an API that closes the session instantly: the agent leaves on the spot, and a reconnect is guaranteed to start a completely fresh session.

  • Endpoint: POST /api/widget/end on your dashboard’s address, with the JSON body {"room_name": "webchat-..."}.
  • Authentication — no API key needed: send the header Authorization: Bearer <session token> using the same token your page received from /api/widget/token when the chat session started. That token proves the caller owns that session, so a visitor can only ever end their own chat — never anyone else’s.
  • Response: {"success": true}. Safe to call twice, and safe to call after the session already ended — “the room is gone” counts as success either way, so your hang-up code never needs special error handling for it.
  • Errors: 401 — missing/wrong token, or a token for a different room; 400 — malformed body or a room name that doesn’t start with webchat-; 429 — called too rapidly for the same room (wait the number of seconds in the Retry-After header).
  • Typical flow: on your own End-chat button, disconnect the widget client first, then fire this call.

Walkthrough: launch a website chatbot, stage by stage

Same principle as building a voice agent — prove each stage before the next:

  • Stage 1 — brain and prompt. Create the agent; on General / LLM & Prompt pick a model (chat can afford a smarter, slower one than a phone agent), write the System Prompt, add facts to Reference Information, set two fallback models. Prove it: Agent Tester → pick the chatbot → have a conversation. Fix tone and facts here first.
  • Stage 2 — knowledge. Attach the Knowledge Base collections it should answer from. Prove it: in the Tester, ask a question only the documents can answer and check it comes back right.
  • Stage 3 — look and feel. Widget tab: brand colour, position, title, welcome message, display mode (start with Popup). Pick the Chat Mode on General — Voice with avatar is the sweet spot for websites (spoken replies, no microphone permission popup).
  • Stage 4 — guard rails. Session tab: set the daily session limit (abuse protection), inactivity timeout, and — if you want summaries — switch on AI Summary with a daily cap. Domains tab: add your website’s https:// address to Allowed Origins — the widget won’t load anywhere else.
  • Stage 5 — go live. Enable the agent, Embed Code tab → Preview to see it exactly as visitors will, then paste the script tag before </body> on your site. Prove it: open your website in a private/incognito window and have a real conversation — then find it in Chat History.

Knowledge Base

Give your agents your documents to answer from.

Out of the box, an agent only knows what’s written in its prompt. The Knowledge Base changes that: upload your price lists, policies, FAQs, and manuals, and the agent searches them during the conversation to answer questions accurately — instead of guessing. This works for both voice agents and chatbot agents.

1 Create a collection

A collection is a folder of related documents — for example “Product Info”, “Company Policies”, or “Pricing”. Keeping topics in separate collections lets you give each agent only the knowledge it needs. Click the create button, give the collection a name and description, and it’s ready for documents.

The Knowledge Base page. Collections group your documents; attach a collection to an agent so it can answer from them.
The Knowledge Base page. Collections group your documents; attach a collection to an agent so it can answer from them.

2 Add documents and web pages

  • File tab: TXT, MD (Markdown), CSV, PDF and Word (.docx) files up to 10 MB each. Choose several files at once, or drag them onto the upload box — they’re added one after another. PDF and Word files have their text extracted automatically (Word headings and tables are kept). Older .doc files aren’t supported — save them as .docx first. Image-only (scanned) PDFs have no text to read.
  • Text tab: give it a title and type or paste the content — great for FAQs, opening hours and price lists you don’t have as a file. It’s saved as a text document you can re-index, download or delete like any other.
  • URL sources: add a web page address, a Google Doc, or a Google Sheet. The content is fetched and indexed automatically, and you can set an auto-refresh interval (every 12 hours, 24 hours, 48 hours, or weekly) so the knowledge stays current when the page changes.

After you add a document, the system splits it into small chunks and processes them for search — you’ll see the chunk count next to each document. Large files take a little while; the rest of the dashboard keeps working normally while one is processed, and uploads are handled one at a time.

Same name twice: if the collection already has a document with the same name, you’re asked what to do: Replace adds the new version first and only then removes the old one (so the agent never has a gap with nothing to search), Keep both keeps both copies (answers may repeat), or Skip. If the old copy can’t be removed, the new row shows Old copy not removed — delete the old one from the list yourself.

Within each collection you can view, download, add, or delete documents at any time. URL sources also show a refresh badge with a “Refresh now” button and a per-source interval picker, and turn red if the last fetch failed.

What the columns mean:

  • Collections table — Documents / Vectors / Embedding: how many documents the collection holds, how many searchable chunks they became (Vectors), and which embedding provider/model the collection was built with. To move a collection to another model, use Re-embed (below) — no need to delete and re-upload.
  • Collections table — Used by: which voice agents and chatbots search this collection (Not assigned if none do yet).
  • Documents table — Size / Chunks / Status: the file size, how many search chunks it was split into, and its state. Processing… means it’s still being added (the list refreshes itself); Failed means it wasn’t added — hover for the reason, delete the row and try again.
  • KB Status card (top of page): Running (green) means the search database is up; Stopped (red) or Not Configured (grey) means no knowledge lookups will work until it’s fixed.
ℹWhat happens automatically: a failed upload leaves nothing half-searchable behind, and if the dashboard restarts in the middle of an upload, that document is marked Failed at the next start and its partial search data removed — just upload it again. Deleting a document removes its search data too; if the search database is down, the delete is refused (try again once it is running) rather than leaving answers from a “deleted” document behind. Website sources that auto-refresh are swapped the same safe way: new version first, then the old one removed.

3 Attach a collection to an agent

  • Voice agents: open the agent’s editor, and on the Identity tab tick the collections under Knowledge Base Collections. An agent can search several collections at once. If you have no collections yet, the editor shows a link to create one.
  • Chatbot agents: same idea — the collections picker is on the LLM & Prompt tab.

That’s it — the agent now decides for itself when a caller’s question needs a document lookup. It fires on “what’s your returns policy?” but not on “hi there”. It checks the agent’s Reference Information first and only searches when the answer isn’t there.

Search switches itself on and off. Ticking at least one collection turns on the agent’s Search Knowledge Base tool and adds a short line about it to the agent’s Tool Usage Instructions; unticking them all turns it off and removes that line (if you’ve rewritten the line yourself, it’s left alone). Duplicating an agent copies its collections too, and deleting an agent’s last collection switches its search off. If you switch search off yourself on the Tools page, it stays off until you change the agent’s collections.

Search tool settings (Tools page → Search Knowledge Base, per agent):

  • Max results: how many matching passages the agent gets per lookup (default 5). Fewer is faster and cheaper; more gives the agent more to go on.
  • Say a filler line on slow lookups / Filler line / Filler delay: the agent starts searching while it is still saying its own “let me check that”. If the search is still running this many seconds after it finishes speaking (default 2), it says the filler line (default “One moment, let me check that.”) so the caller isn’t left in silence. On by default. Realtime voice agents don’t use the filler line.
💡Tip: use the Test Search box on the Knowledge Base page to try real questions before a caller does. Choose Test as agent in the drop-down above the box to search exactly as that agent would on a call — its own collections and Max results, with the same time limits. The timing line shows how long each step took. Tick Include AI Synthesis (shown when AI Answer Synthesis is on) to test the full written answer too.

If the written answer doesn’t come back, a box appears exactly where the answer would have been, and stays there, explaining why:

  • AI answer dropped — time limit reached: the answer model didn’t finish within the Answer time limit, so on a real call the agent would read the raw search results shown underneath. Pick a faster answer model (best) or raise the limit, save, and test again. The links in the box open the settings for you.
  • AI answer failed: the answer model returned an error (shown in the box, e.g. a wrong model name or a key problem). Again, a call would use the raw results. Some providers report a slow answer as an error of their own, so a very slow model can show here too.

Only administrators see the model name, the error text and the links; other users are asked to contact their administrator.

Re-embed — moving a collection to another embedding model

Each collection is built with one embedding model, and two models’ search data can’t be mixed. Re-embed (in the collection’s row) rebuilds the collection’s search data with a new model in the background, then switches over in one step. The collection keeps its name, its documents and the agents that use it.

  • New provider / New model: any configured model except the current one. The line under the model is how quickly it answers one caller question.
  • Estimate: how many passages will be re-embedded and roughly what it costs (usually well under a cent).
  • Also searched by agents that use other models (only when it applies): an agent that searches this collection and collections on a different model makes one extra lookup per question, and match scores from different models aren’t directly comparable. Re-embed those collections to the same model too.
  • Rebuilt from their saved text / will need uploading again (only when it applies): documents with no search data of their own are rebuilt from their saved text or web address; any without either are listed so you can upload them again afterwards.
  • Start re-embed: first a test passage is sent to the new model to check the key, the model access and the result size — if that fails you see why and nothing is built.
  • While it runs: the row shows a progress bar and a Cancel link. Uploads, text, web addresses, re-index and deletes on that one collection pause (you’re told to try again shortly), and scheduled website refreshes wait for the next cycle. Live calls keep searching the collection the whole time. One re-embed runs at a time per dashboard.
  • When it finishes: “Switched to … Live calls use it now.” The very next lookup uses the new model. Check a few answers with Test as agent. The old search data is deleted a minute later. There is no undo button — to go back, re-embed again with the old model.
  • Model retired — re-embed needed (red): the provider has switched that model off (for example Google AI Studio’s text-embedding-004). Calls skip the collection — the agent keeps answering from its other collections — and new uploads are refused until you re-embed it; deleting documents or the whole collection still works. Re-embed opens with gemini-embedding-001 already chosen.
ℹWhat happens automatically: if anything fails or you cancel, the half-built copy is removed and the collection carries on exactly as before. If the dashboard restarts mid-way, the job is marked interrupted at the next start and cleaned up the same way; if it restarts just after the switch, the collection stays on the new model and the old copy is removed shortly after.
ℹTime limits on calls: during a call the search step is given up to 5 seconds and the AI answer step up to the Answer time limit . If the answer step is too slow, the agent answers from the raw search results instead — the caller is never left waiting indefinitely. If the search itself can’t run (for example the search database is down), the agent carries on without it and offers to follow up.

Walkthrough: give an agent your price list in five minutes

  • Step 1: create a collection called “Pricing”.
  • Step 2: upload your price list (PDF, Word or CSV) — or paste it on the Text tab.
  • Step 3: in the test search box, ask a real question a caller would ask (“how much is the premium plan?”). If the right chunk comes back, you’re ready; if not, simplify the document (tables with clear headings work better than dense prose).
  • Step 4: open the agent’s editor → Identity tab → tick “Pricing” under Knowledge Base Collections → save. Then pick Test as agent in the Test Search box to confirm it finds the price.
  • Step 5: prove it in the Agent Tester: ask the price question and watch the transcript show the knowledge lookup happening before the answer.

Tools

Tools are the things your agents can do — transfer calls, send messages, look things up, take action.

Without tools, an agent can only talk. With tools, it can hang up politely, put callers on hold, transfer them to a human, text them a booking link, check an order in your CRM, and much more. The Tools page is where you switch tools on per agent and configure how each one behaves.

The Tools page. Assign tools to an agent on the first tab; build webhook connections on the second.
The Tools page. Assign tools to an agent on the first tab; build webhook connections on the second.

1 Assign tools to an agent

The Agent Tool Assignments section at the top lists your agents. Click Configure next to an agent to open its assignment panel, then flip the toggle for each tool you want that agent to have. Configurable tools (like transfers) show a settings panel under their toggle where you can override the defaults just for this agent.

  • Switching a tool off keeps its settings. Untick a tool and save: the agent stops using it, but whatever you typed into its panel for this agent stays saved. Tick it again and the same settings are back — nothing to type in again. The saved settings do nothing while the tool is off. They are cleared only when you press Reset to Global on that tool, when the tool itself is deleted, or when they are no longer allowed (for example an address the dashboard now refuses).

Sometimes an agent has a tool assigned that this page can’t offer right now — for example the tool was renamed. The Configure window then shows a yellow warning box at the top (“1 tool on this agent isn’t available right now”) listing it with the reason, and the agent table shows its badge in yellow with a warning sign.

  • “Not found”: the tool was deleted or renamed, or couldn’t be loaded. If it was renamed, switch the new name on in the list above and tick Remove on the old one.
  • Remove: tick it and click Save to take the tool off this agent. Its per-agent settings are deleted too.
ℹWhat happens automatically: calls simply skip tools that aren’t available, and saving the window never removes a tool you didn’t see — only the ones you switch off or tick Remove on. Deleting a webhook tool also takes it off every agent that used it (and its default text out of their Tool Usage Instructions). If an agent’s Tool Usage Instructions still mention a removed tool, a notice after saving tells you to tidy that text in the agent editor.

Let the agent finish speaking before a tool runs

When the agent says something and then uses a tool — “I’ll put you through to Sales now” followed by a transfer, or a goodbye followed by a hang-up — the tool waits for the sentence to finish before it starts. Most sentences take 2–4 seconds. If the agent is still talking after 8 seconds (for example because it repeated the caller’s request back first), this setting decides how much longer it may keep waiting, so the caller hears the whole sentence instead of being cut off mid-word.

  • Before a tool runs, let this agent finish speaking (top of a voice agent’s Configure window):
    • Use default: follows the dashboard’s default — up to 15 seconds unless it has been changed. Right for almost everyone.
    • Up to 12 / 15 / 20 seconds: a shorter or longer limit for this agent. A sentence longer than the limit is still cut off when the limit is reached.
    • Off — stop waiting at 8 seconds: the old behaviour. The tool starts at 8 seconds even if the agent is mid-sentence.
    Any choice other than Use default applies to this agent only. Chatbots don’t have this choice.
ℹWhat happens automatically: the extra wait only happens while the agent is still speaking — short sentences are not slowed down at all, and the tool starts the moment the sentence ends. Changes apply from the next call. The number-entry tool (collect_dtmf) is never delayed, and speech-to-speech (realtime) agents always stop at 8 seconds. One setting covers the whole call: after a handoff, the agent that answered the call still decides. The setting travels with the agent when you export, import or duplicate it.
⚠Long lines mean later transfers. A long “I’ll put you through” line is now heard in full, so the transfer starts a few seconds later. For the quickest handovers, tell the agent in its instructions to keep its transfer line to one short sentence.

2 Tell the agent when to use its tools

Giving an agent a tool isn’t quite enough — it also needs to know when to reach for it. That happens in the agent editor, in the Tool Usage Instructions box on the Identity tab. Example: “If the caller asks to speak to a person, use the transfer tool and send them to Reception. If nobody answers, offer to take a message.” You describe the when in plain English; the system automatically supplies the technical details and the list of available destinations.

Switching a tool on adds its default instruction to that box for you. Switching it off takes that default text out again — unless you had edited it, in which case your wording is left alone and a notice asks you to open the agent editor and remove what no longer applies.

Built-in tools at a glance

  • hangup: lets the agent end the call gracefully when the conversation is done.
  • handoff_to_human: chatbot agents only — hands a website conversation to a person via the chatbot's webhook. It is switched on and off from the chatbot's Human Handoff tab, not here; the only thing to edit on this page is its usage instruction.
  • hold: puts the caller on hold with hold music. Upload your own music in the tool’s configuration.
  • blind_transfer: forwards the caller straight to another destination — a phone number or a phone-system extension — without checking first. You define named destinations (“Reception”, “Sales”) and the agent picks by name.
  • attended_transfer: the polite version — the caller waits on hold with music while the agent dials the destination, briefs them privately, then connects the two. If the destination doesn’t answer or voicemail picks up, the agent automatically comes back to the caller and offers to take a message instead.
  • take_a_message: captures a message from the caller and delivers it to the right staff member by email and/or SMS. Works on its own or as the fallback when a transfer fails.
  • collect_dtmf: collects keypad input (account numbers, PINs) — callers can press keys or say the digits. Configure how many digits, the timeout, and whether the agent reads them back to confirm.
  • play_audio: plays a pre-recorded audio file — legal disclaimers, announcements, standard messages. Upload MP3, WAV, or OGG files up to 10 MB.
  • cal_check, cal_book, cal_reschedule, cal_cancel: the four Cal.com calendar tools — check free times, book an appointment, move an existing appointment to a new time, and cancel one. They share one setup, described in Setting up Cal.com for your agents.
  • get_datetime: gives the agent the current date and time, in your chosen format and timezone.
  • send_sms: texts the caller (booking links, addresses, confirmations). Pick a messaging provider in the tool’s configuration. A Test button sends a real test message.
  • send_email: sends an email via your configured mail service.
  • lookup_caller: looks the caller up by their phone number the moment the call connects — through your n8n workflow or API, and/or from what the dashboard already knows — so the greeting and the whole conversation can use their name, booking or account. Runs while the phone is still ringing. See Know who is calling before you say hello.
  • schedule_callback, record_note: shown on the Tools page as Coming Soon — these are preview placeholders and can’t be configured or used yet.

Configuring the transfer tools, field by field

The two transfer tools carry the most options of any built-in tool. What each field in their Configure popups means:

  • Default Outbound SIP Trunk: which of your outbound trunks dials the destination. Individual destinations can override it.
  • Transfer Destinations: the named places the agent can send callers. Each destination has a name the agent refers to (“Reception”, “Sales”), a type (a phone number, or a SIP address for phone-system extensions like 3CX), and the number/address itself. The agent only ever picks from this list — it can’t invent destinations. On a PBX-type trunk a phone-number entry must be an extension, queue or SIP user name and is dialled exactly as written; a number starting with + is refused, so give that entry a Trunk override pointing at a PSTN trunk.
  • Play Dial Tone (blind transfer): what the caller hears during the connection moment.
  • Transfer Mode (Advanced) (blind transfer): how the handover is executed — leave on the default unless your phone system needs the alternative.
  • Play Hold Music / Hold Music File / Volume (attended transfer): what the caller hears while the agent talks to the destination privately. Upload your own file or use the built-in music.
  • Consultation Timeout / Ring-out timeout (seconds) (attended): how long the private briefing may last, and how long to let the destination ring before giving up.
  • Detect voicemail and pivot automatically (attended): if the destination’s voicemail answers instead of a person, the agent notices and treats it as no-answer instead of briefing a machine. The two advanced fields tune how long it listens and how confident it must be.
  • When transfer fails, the agent should: the fallback — apologise and continue (default), take a message (needs the take_a_message tool enabled on the same agent), or apologise and end the call.
  • Auto-Hang-Up … When Caller Leaves: if the caller hangs up mid-transfer, the dialled destination is hung up too instead of being left saying “hello?” to no one.
  • Minimum Consultation Time Before Merge (seconds) (attended): a brief guaranteed private moment with the destination before the caller can be merged in.
  • Hold tool extras: the hold tool shares the hold-music fields and adds Max Hold Time (seconds) so nobody can be left on hold forever.

Walkthrough: set up “transfer to a human” that can’t dead-end

  • Step 1: pick your outbound trunk, add a destination named “Reception” with the real phone number, leave hold music and voicemail-pivot on.
  • Step 2: set When transfer fails to Take a message.
  • Step 3: in Agent Tool Assignments, enable attended_transfer AND take_a_message on your agent (configure take_a_message’s delivery email/SMS so messages actually reach someone).
  • Step 4: agent editor → Tool Usage Instructions: “If the caller asks for a person, use the attended transfer to Reception. If nobody answers, take a message.”
  • Step 5: prove both paths with real calls: one where Reception answers (you’ll hear the agent’s private briefing before the merge), and one where you let it ring out — the agent should come back and take a message. Check the message arrived.

Setting up Cal.com for your agents

Your agents can work with a Cal.com calendar through four built-in tools. Together they cover the whole appointment conversation:

  • cal_check: finds the free times on a day or range of days.
  • cal_book: books a new appointment in one of those free times.
  • cal_reschedule: moves an appointment the caller already has to a new free time. Cal.com keeps it as one appointment and sends a single “rescheduled” email.
  • cal_cancel: cancels an appointment the caller already has.

This works with a Cal.com cloud account (cal.com). Everything below is done once; after that you just switch the tools on for each agent that should take bookings.

Step 1 — Your Cal.com account and calendar

  • Sign in to Cal.com (or create a free account) with the business account whose calendar the agent should book into.
  • Connect your real calendar (Google, Outlook or Apple) in Cal.com under Settings → Calendars, then switch on each calendar under Check for conflicts that holds your real appointments. Cal.com treats anything in those calendars as busy, so the agent never offers a time you’re not free — a connected calendar with its switch off is ignored. Add events to chooses which calendar the agent’s bookings appear in.
  • Set your working hours in Cal.com under Availability. The agent can only offer times inside them.
Cal.com Calendars settings with a connected Outlook calendar
Cal.com → Settings → Calendars — a connected Outlook calendar. Add events to is where bookings land; the switches under Check for conflicts choose which calendars count as busy.

Step 2 — The event type the agent books

In Cal.com an event type is a kind of appointment — for example “30 minute consultation”. The agent books, moves and cancels appointments of one event type. Create one (or pick an existing one) under Event Types, and set its length, buffers and minimum notice the way you want them — the agent follows the same rules as your online booking page.

A few event-type settings decide whether the tools can work at all. Open the event type and check them before you go live (the tab names below are the ones in the event type’s left-hand menu):

  • Privacy & security → Requires booker email verification — turn OFF. With it on, Cal.com emails a code the caller would have to read out, which they can’t do on a call. Booking and moving appointments then fail.
  • Privacy & security → Requires confirmation — your choice. If it’s on, new and moved appointments wait as “pending” until you confirm them in Cal.com. The agent tells the caller the business still has to confirm the new time.
Cal.com event type Privacy and security settings
Event type → Privacy & security — Requires booker email verification must be off; Requires confirmation is your choice.
  • Reschedule & cancel → Disable cancelling / Disable rescheduling — leave OFF. If either is on, Cal.com refuses the matching tool and the agent tells the caller it couldn’t make the change. (Require cancellation reason doesn’t get in the way — the agent always sends one.)
Cal.com event type Reschedule and cancel settings
Event type → Reschedule & cancel — leave Disable cancelling and Disable rescheduling off.
  • Payments & Seats → Offer seats — leave OFF. The agent can’t move or cancel a seat in a group booking; it will tell the caller the team will help. Paid bookings aren’t supported by the agent either.
Cal.com event type Payments and Seats settings
Event type → Payments & Seats — leave Offer seats (and Paid booking) off.
  • Phone number question — only if you want phone matching. If you plan to turn on Also require the caller’s phone number to match (see Step 5), the booking has to store the caller’s number. Add a phone question under the event type’s Booking form, and switch on Send caller’s phone number in cal_book.

Step 3 — Create an API key and find the Event Type ID

  • API key: in Cal.com go to Settings → Developer → API keys, click New, give it a name such as “Voice agent”, and copy the key (it starts with cal_live_). Cal.com shows it only once. If you set an expiry date, put a reminder in your diary: an expired key makes every Cal.com tool fail with “The calendar API key appears to be invalid”.
Cal.com API keys page
Cal.com → Settings → Developer → API keys — click New to create a key. The list shows each key’s name and expiry, never the key itself.
⚠Keep the key private. Anyone with it can read and change every booking on your Cal.com account. Paste it only into the dashboard.
  • Event Type ID: the number Cal.com uses for the event type the agent books. Cal.com no longer shows it in the address bar (the editor link now looks like app.cal.com/links/…, and that code is not the ID), so the dashboard looks it up for you:
    1. Open the Cal.com tool’s settings (Step 4 says where) and paste the API key.
    2. Under Event Type ID, press Find my Event Type ID, then Load my event types. You see every event type on your Cal.com account (and its teams) with its length and ID.
    3. Press Use this next to the right one. The number goes into the box. Press Save, then Run Test (Step 5).
    Not sure which one it is? In Cal.com open the event type, click Copy link (the public booking link, such as cal.com/yourname/30min) and paste it into the box above Load my event types: the matching event type is highlighted and marked Matches your link.
  • What the button uses: the API key typed in the same settings, or, if that box is blank, the key the tool already has saved (the same key the tool books with). It only reads from Cal.com — nothing is booked or changed.
  • If you paste Cal.com’s editor link (app.cal.com/links/…) the panel tells you it holds no ID and leaves the list showing — just pick from the list.
  • Older Cal.com screens: if your address bar still shows app.cal.com/event-types/1234567, that number is the Event Type ID and you can type it in directly.
  • A team event marked “Managed team template” can’t be booked directly; pick the team member’s own copy of it instead.

Step 4 — Put the key into the tools

Each of the four tools has its own copy of the settings, so fill in the same Cal.com API Key, Event Type ID and Timezone in every Cal.com tool the agent uses.

  • For one agent: Tools page → Agent Tool Assignments → Configure next to the agent → switch the tool on and fill in its settings panel. Use this when different agents book into different calendars.
  • Timezone: set it to the timezone your Cal.com working hours are in (for example Australia/Sydney). It is how the agent reads out times and understands “the appointment on Tuesday”. If you leave it blank the dashboard’s own timezone is used, which may not be yours — set it on every Cal.com tool.

Step 5 — Choose the tools and test them

  • Book only: cal_check + cal_book.
  • Book and change: add cal_reschedule and/or cal_cancel. If callers ever ring to change a time, switch on cal_reschedule — without it the agent can only book a second appointment and the old one stays in your calendar.
  • Also require the caller’s phone number to match (on cal_reschedule and cal_cancel): an extra check that the booking belongs to the person calling. Leave it off unless your bookings save the caller’s phone number (Step 2) — with it on, a booking that has no phone number can never be found.
  • Test: after saving, press Run Test in each tool’s settings. It only reads from Cal.com — it never books, moves or cancels anything.

Then try the whole conversation in the Agent Tester with a test booking under your own email: book one, ring back and move it, ring back and cancel it. Check Cal.com after each step.

If something goes wrong

What the agent (or the tool result in Call History) says, and what to do:

  • “The calendar API key appears to be invalid”: the key was mistyped, deleted or has expired. Create a new key in Cal.com (Step 3) and paste it into every Cal.com tool.
  • “The configured calendar event type was not found” or “Event Type ID is not configured”: the Event Type ID is missing or belongs to a different Cal.com account (the first message comes from cal_check and cal_book). Look it up again with Find my Event Type ID (Step 3), using the same API key.
  • “I couldn’t find an upcoming appointment under that email address on that date”: the caller gave a different email or date from the one on the booking, the booking is for a different event type, or it is in the past. The agent should check the spelling and the date with the caller.
  • “I wasn’t able to find that appointment … the team will follow up”: three look-ups failed in the same conversation, so the tool stopped trying (this stops people guessing their way into someone else’s booking). Call the customer back.
  • “That time slot is no longer available”: someone took the time between the agent offering it and the caller choosing it. The agent checks again and offers another time.
  • “That appointment has already been cancelled”: nothing to do — it was cancelled earlier (by the caller online, or by you).
  • “… can’t check the caller’s phone number in this conversation”: phone matching is on, but the conversation has no phone number (for example a website chat). Turn phone matching off for that agent, or handle changes from the website yourself.
  • Every look-up fails although the details are right: phone matching is on and your bookings don’t store a phone number. Turn it off (Step 5).

Know who is calling before you say hello (lookup_caller)

Most agents that need a booking number, an account or a name have to ask for it and wait for the caller to find it. With lookup_caller switched on, the dashboard looks the caller up by their phone number the moment the call connects — in your own booking system through an n8n workflow, and/or in what the dashboard already knows — and hands the result to the agent before it speaks. The greeting can then be “Hi Sarah, is this about your appointment on Tuesday?” instead of “Can I have your booking number?”.

ℹWhere the waiting happens. The lookup runs while the caller’s phone is still ringing. A call is only answered once the agent is ready, so a two-second lookup means roughly one extra ring — never two seconds of silence after “hello”. If nothing comes back in time the agent greets normally and the details, if they arrive later, are quietly added for the rest of the conversation.

How it works, step by step

  1. A call connects. The dashboard reads the caller’s number from the phone line (on an outbound call, the number being dialled). Calls with no number — a withheld caller ID, the Agent Tester, a website chatbot — skip the lookup and greet straight away.
  2. The lookup starts. Everything you switched on runs at once: your webhook (an n8n workflow or any web address that answers with JSON) and the built-in sources described below.
  3. The agent waits, briefly. Up to the Maximum wait you set (2 seconds by default; the hard ceiling is 5). The phone keeps ringing during this time.
  4. The result becomes placeholders. Every field that comes back — customer_name, booking_id, whatever your workflow returns — becomes a {{name}} placeholder in the greeting and the System Prompt, exactly like {{user_number}}. A Caller Information note listing all of them is added to the prompt automatically, so the agent knows them even if you never mention a single placeholder.
  5. The agent greets. With the normal greeting, or with the greeting your workflow returned for this caller, or — when nothing was found — with the Fallback greeting.
  6. Late answers still count. If the reply arrives after the greeting has started, it is added to the prompt in the background and marked after greeting in the call’s transcript. The agent cannot change a greeting it has already spoken, but it knows the details from the next sentence on.

What you need to add to the prompt

Nothing, to begin with. With Add a Caller Information note to the prompt on (the default) the agent receives a block like this at the start of every call where something was found, and it will use the details the way it uses anything else in its prompt:

## Caller Information
customer_name: Sarah Chen
booking_id: BK-1234
booking_time: Tuesday 10:00

Three things are worth adding once you have seen it work:

  • Placeholders in the greeting: Hi {{customer_name}}, thanks for calling Riverside Dental. A placeholder the lookup did not fill is left out, and if the greeting would start with a blank the Fallback greeting is spoken instead — so a found caller gets the personal version and an unknown caller never hears “Hi , thanks for…”.
  • A rule about what to do with it: the agent knows the booking; tell it how to behave. For example: “If Caller Information includes a booking, confirm it with the caller (‘I can see your appointment on Tuesday at ten’) instead of asking for their booking number. If there is no Caller Information, ask for their name and booking number as usual.”
  • {{caller_info}} to choose where the note goes: if your prompt contains this placeholder the whole Caller Information block is placed there instead of at the end. Useful when a long prompt has a “What you know about this caller” section.
Names are fixed by your workflow, not by the prompt. {{customer_name}} only fills if the lookup returned a field called exactly customer_name. The Test button on the tool shows the names that actually came back — copy them from there. The names user_number, current_datetime, current_date, current_time, time_greeting and caller_info are reserved and are dropped if a workflow returns them.

Switching it on

  • For one agent (agent level): Agent Tool Assignments → the agent → Configure next to lookup_caller. A per-agent webhook is the usual reason: a dental agent looks up the dental system, the gym agent the gym system.
  • New agents start with it off. Nothing changes on an agent until you tick the tool.

Where the details come from

Tick any mix. All of them run at the same time and their fields are merged; when two sources return the same field name, the webhook wins.

  • Your webhook (the usual choice): a web address that receives the caller’s number and answers with what you know about them — an n8n workflow in front of your booking system, CRM or database, or your own API. The n8n Wizard builds the workflow for you (next section).
  • Built-in source: last call’s extracted fields: if the agent has Data Extraction Fields (Voice Agents → the agent → Behavior), the values it pulled out of this caller’s previous call are reused — the name they gave, the product they asked about. The dashboard only starts remembering calls once the tool and this switch are on for the agent, and only calls where the summary actually picked something out (a two-second call that extracted nothing does not replace the useful one before it). Fields the caller never mentioned are left out, never read out as “null”. No webhook needed.
  • Built-in source: campaign contact: when this agent dialled the caller in an outbound campaign, the contact’s Name, CompanyName, JobTitle and custom columns are reused — handy when they ring back.
  • Built-in source: caller location: caller_country, caller_region and caller_local_time worked out from the number itself (the state for Australian landlines, the country for mobiles). Lets the agent say “good evening” to someone ringing from Perth after your Melbourne office has closed.

Setting it up with n8n

  1. Tools → n8n Wizard tab → Caller lookup (who is calling).
  2. Choose the agent and paste your n8n address. Click Create. The wizard saves the workflow’s address and its secret straight into the tool’s settings and switches the tool on for that agent — nothing to copy.
  3. Download the workflow and import it into n8n (new workflow → ⋯ → Import from File…).
  4. Replace the Look up the caller (REPLACE ME) step with your own lookup — an HTTP Request to your booking system, a Google Sheets or database lookup, a HubSpot search — keyed on {{ $json.body.caller_phone }}. Give it one item with the fields you want the agent to know. Leave found false when there is no record.
  5. Publish the workflow (the Active toggle, top right), then go back to the Tools page and press Run Test with your own mobile number.
Three n8n traps, in the order people hit them.
  • The workflow must be published. Until it is, n8n only has a test address; the dashboard sees a 404 and the agent greets without details. The Last lookup line on the tool shows the 404.
  • The Webhook node must stay on “Using ‘Respond to Webhook’ node”. Respond immediately answers “Workflow was started” before your lookup has run. The dashboard treats that as not found and Run Test says to change the node.
  • “Listen for test event” answers once. It is for clicking through a single run in n8n. Use the published workflow and the dashboard’s Run Test instead.

What your workflow receives, and what it should send back

Received (a JSON POST, available in n8n as {{ $json.body.… }}): event (call_started for the automatic lookup, lookup when the agent asks mid-call, test from the Test button), caller_phone, caller_phone_formatted, called_number, direction, call_id, room_name, agent_slug, agent_name, timestamp, and when they exist dynamic_vars (campaign variables), sip_headers, custom (your Extra fields) and requested_number (a different number the caller stated, only if you allow that).

Sent back — any of these shapes work:

  • The full shape: {"found": true, "variables": {"customer_name": "Sarah Chen", "booking_id": "BK-1234"}, "context": "VIP. Prefers SMS.", "greeting": "Hi Sarah, calling about Tuesday?", "metadata": {"crm_id": "C-88"}}. variables become placeholders; context is plain text added to the prompt as-is; greeting replaces the agent’s greeting for this call; metadata is kept on the call record (and sent with post-call webhooks) but never spoken.
  • A flat object: {"customer_name": "Sarah Chen", "booking_id": "BK-1234"} — every top-level text or number becomes a placeholder.
  • Not found: {"found": false}, an empty object, or a 404.
  • n8n’s “All Entries” array with one item is unwrapped automatically.

Limits, so a runaway reply cannot bloat the prompt: at most 50 fields, 2,048 characters per field, 4,096 characters of context, 1,024 characters of greeting, and a 64 KB reply. Line breaks and control characters inside values are removed.

Testing and watching it

  • Run Test (on the tool card and on the per-agent Configure window) takes a phone number, runs the real lookup and shows the fields returned, the greeting override, the context, the raw reply and exactly what was sent. Test it with a number you know is in your system and with one that is not.
  • Last lookup line: under each agent’s lookup_caller row — “ok (420 ms) 2 minutes ago · 14 found, 3 not found, 1 error”. The first place to look when a greeting was not personal.
  • In the call’s transcript: a Caller lookup entry at the top shows found / not found / timed out / error, the sources, the field names and the time taken. Values are never stored in the transcript — only the names.
  • Automatic pause: after five webhook errors in a row (not “not found”, not slow), counted across all calls, the webhook is paused for ten minutes so a dead address does not add a ring to every call; built-in sources keep running. The Last lookup line shows “webhook PAUSED” with the minutes left. A successful Run Test lifts the pause immediately.
  • “Webhook failing”: if your webhook errors but a built-in source still found something, the call still gets that data, and the Last lookup line and Run Test say the webhook failed — a broken address is never hidden behind the built-in sources.
  • Time limits: each built-in source gets most of the ring time and is dropped if it runs over; a lookup the agent makes during the call gives up after five seconds (the agent carries on without it); Run Test gives up after ten.

Privacy and safety

  • Caller numbers leave this box the moment you enter a webhook address. Only send them to a system you control, and say so in your privacy notice.
  • Only the caller ID is looked up unless you switch on Allow looking up a number the caller states. Leave that off unless you need it: with it on, anyone who rings can ask the agent about any phone number, and the agent will read back whatever your system holds.
  • Secrets stay secret: the API key or password is masked after saving and never appears in Test output, logs or the call record.
  • Caller ID can be faked. Someone can ring showing another person’s number and hear what the lookup holds for it. Never put anything in the lookup reply, or in Data Extraction Fields you reuse, that you would not tell a stranger on the phone. Withheld and “anonymous” callers are never looked up.
  • Local time: worked out only where the country has one time zone (and per state for Australian landlines). Countries with several — including the US, Canada, Spain, Portugal, Chile and New Zealand — give the country only.

R Every tool, and every setting it has

Below is each tool you can switch on, what it does in plain terms, a picture of its settings, and what every field is for.

Fields marked required must be filled in before the tool will work. Where a default is shown, that is what the tool uses if you leave the field alone.

attended_transfer

Warm transfer. The agent rings the destination, speaks to them privately while your caller waits on hold, then connects the two. If nobody answers it comes back to the caller.

Settings

  • Outbound SIP Trunk: SIP trunk to use for outbound consultation calls (pick one from a list)
  • Transfer Destinations: Destinations the agent can warm-transfer to. Each entry has a name (shown to the agent), a type (PSTN phone number or SIP URI for 3CX/PBX queues), and the destination value. Optionally a per-destination trunk override, and a notification email and SMS number: when the agent takes a message for this destination (for example after it doesn’t answer), take_a_message sends it there instead of to its default recipient. attended_transfer always uses bridged dial — SIP REFER mode (available on blind_transfer) does not apply here because the multi-step consult/merge flow needs the destination as a room participant. On a PBX-type trunk a phone-number entry must be an extension, queue or SIP user name (letters, digits, . _ -) and is dialled exactly as written; a number starting with + is refused, so give that entry a Trunk override pointing at a PSTN trunk. (a named list of destinations)
  • Play Hold Music: Whether to play hold music while caller is on hold during transfer (on or off; default: True)
  • Hold Music File: Audio file to play while caller is on hold during consultation. Leave on (None - use default) to play the built-in hold music. (pick one from a list)
  • Hold Music Volume: How loud the hold music plays to the caller. The slider is perceptual (50% sounds about half as loud as 100%); values below ~10% are near-silent on phone calls. 80 is the recommended default. (a slider; default: 80)
  • Consultation Timeout (seconds): How long the consultation can run before it auto-cancels and the caller is returned. The countdown starts when the transfer is initiated and INCLUDES the time spent dialling and ringing the destination (typically 5–15s), so set this comfortably higher than the conversation alone — 90 seconds or more is recommended. Default 120. Set to 0 to disable auto-cancel entirely. (a whole number; default: 120)
  • Ring-out timeout (seconds): How long to wait for the destination to pick up before treating it as no-answer. Lower = faster pivot to taking a message, higher = more tolerance for slow mobiles. Typical range 15-25. (a whole number; default: 18)
  • Detect voicemail and pivot automatically: When enabled, the agent listens briefly to the destination's first few seconds after pickup and pivots back to the caller if it hears a voicemail greeting. Disabled automatically in audio-to-audio (realtime) pipelines where no separate STT is available. (on or off; default: True)
  • Voicemail detection window (seconds) — advanced: How long to listen to the destination before deciding voicemail vs human. Shorter = faster pivot, longer = more accurate. Typical range 4-10. (a whole number; default: 6)
  • Voicemail confidence threshold — advanced: How confident the detector must be before auto-cancelling. Lower = more sensitive (more pivots, but more false positives on hands-free / flat-tone humans). 0.7 is a balanced default. (a slider; default: 0.7)
  • When transfer fails (no-answer or voicemail), the agent should: Choose what happens when the destination doesn't pick up or voicemail is detected. Selecting 'Take a message' ALSO requires the take_a_message tool to be enabled on this agent — otherwise the LLM will be told to call a tool it doesn't have. (pick one from a list; options: Apologise and continue talking with the caller (default), Take a message from the caller (requires the take_a_message tool to be enabled), Apologise briefly and end the call; default: Apologise and continue talking with the caller)
  • Auto-Hang-Up Recipient When Caller Leaves: When the original caller hangs up after the transfer completes, automatically end the recipient's leg too — so the recipient doesn't hear silence waiting for the call to drop. Default: enabled. Disable only if you have a specific reason to let the recipient leg stay alive after the caller leaves. (on or off; default: True)
  • Minimum Consultation Time Before Merge (seconds): Prevents the LLM from merging the transfer immediately. Default 8 seconds. Set to 0 to disable the guard entirely (trust the LLM to merge whenever appropriate). Maximum 60 seconds. (a number; default: 8)
ℹPBX trunks dial extensions as written. When the trunk in use is PBX-type, a phone-number destination such as 101 is dialled exactly as typed. A destination starting with + is refused on a PBX trunk; give that row its own Trunk override pointing at a PSTN trunk. Earlier versions dialled PBX extensions as +<extension> and the transfer failed.
Always finish the transfer. After consulting, the agent must either merge (connect the two) or cancel (come back to the caller). The consultation timeout is the safety net if it does neither.

background_audio

Plays quiet background sound during the call, such as gentle office noise, so silence does not feel dead.

Settings

  • Background Audio File: Select a built-in clip or uploaded file to loop during calls (pick one from a list)
  • Audio Volume: Controls background audio volume. 0-100% is normal range, above 100% boosts quiet clips for phone calls. (a slider; default: 80)
  • Audio Probability: Probability of the ambient sound playing at any given moment (0% = never, 100% = always) (a slider; default: 100)

Background audio starts by itself when the agent joins the call and loops under the whole conversation. The agent never calls it, so you don’t need to mention it in Tool Usage Instructions.

blind_transfer

Straight transfer. The agent forwards the caller to a destination you set up in advance, chosen by name.

Settings

  • Default Outbound SIP Trunk: SIP trunk used for transfers when a destination doesn't specify its own trunk override. (pick one from a list)
  • Transfer Destinations: Destinations the agent can transfer to. Each entry has a name (shown to the agent), a type (PSTN phone number or SIP URI for 3CX/PBX queues), and the destination value. Optionally a per-destination trunk override, and a notification email and SMS number that take_a_message uses when the caller leaves a message for this destination (Attended Transfer’s boxes are checked first if both tools list the same name). On a PBX-type trunk a phone-number entry must be an extension, queue or SIP user name (letters, digits, . _ -) and is dialled exactly as written; a number starting with + is refused, so give that entry a Trunk override pointing at a PSTN trunk. (a named list of destinations)
  • Play Dial Tone: Whether to play a dial tone to the caller during transfer (on or off; default: False)
  • Transfer Mode (Advanced): bridge (default, recommended) — dashboard dials the destination and bridges the caller in; if the destination doesn't answer, the agent stays on the call and can recover. refer (advanced) — sends a SIP REFER to your upstream provider so the call is handed off cleanly and the dashboard's room ends; requires a REFER-friendly provider (Telnyx, or 3CX-as-direct-trunk). Twilio rejects REFER for non-PSTN URIs. With REFER you lose the wait-for-answer safety net — if the destination is unreachable the caller lands on a dead leg. (pick one from a list; options: bridge, refer; default: bridge)
  • Auto-Hang-Up Transfer Target When Caller Leaves: When the caller hangs up after being transferred (Bridge mode only), automatically end the destination leg too — so a 3CX queue agent doesn't pick up to silence. Default: enabled. Disable only if you have a specific reason to let the destination leg stay alive after the caller leaves. Not relevant in REFER mode (the destination is on a separate carrier-owned call the dashboard can't control). (on or off; default: True)
Bridge or REFER. Bridge keeps the agent on the line until the destination answers, so it can recover if nobody picks up. REFER hands the call to your carrier and ends cleanly, but loses that safety net. Most providers need Bridge.
The agent finishes its sentence first. The transfer waits for “I’ll put you through…” to finish before dialling. How long it may wait is set under Let the agent finish speaking before a tool runs.

cal_book

Books an appointment in Cal.com during the call. To move an appointment the caller already has, use cal_reschedule instead — booking again leaves the old appointment in your calendar. Setup: Setting up Cal.com for your agents.

Settings

  • Cal.com API Key: Your Cal.com cloud API key (starts with cal_live_…). (a secret, stored hidden; required)
  • Event Type ID: The number Cal.com uses for this event type. Press Find my Event Type ID to look it up (Cal.com no longer shows it in the address bar). (a whole number; required)
  • Timezone: IANA timezone recorded on the booking (e.g. Australia/Sydney). Leave blank to use the dashboard timezone.
  • Attendee Language: Locale code for the booking confirmation (e.g. en). (default: en)
  • Send caller's phone number: Attach the caller's phone number to the booking (for Cal.com SMS reminders). Only sent when it is in E.164 format. (on or off; default: False)
  • Bookings API Version (advanced): Cal.com cal-api-version for the bookings endpoint. Leave default unless Cal.com changes it. (default: 2024-08-13)
  • Usage Instruction: Guidance appended to the agent's prompt for when/how to use this tool. (a longer block of text; default: To book an appointment, call cal_book with the caller's full name, their email address, and start_time. CRITICAL: start_time must be copied VERBATIM from a cal_check slot — never invent or reformat a timestamp. Confirm the spelled-out email with the caller before booking. If a slot is no longer available, call cal_check again once and offer another time; do not retry more than twice.)
Testable. This tool has a test button in its settings, so you can check it works without placing a call.

cal_cancel

Cancels an appointment the caller already has in Cal.com. The agent finds the booking from the email address it was booked under and the date of the appointment, reads it back, and only cancels once the caller says yes. First set up Cal.com as described in Setting up Cal.com for your agents.

How a cancellation sounds

  • Caller: “I need to cancel my appointment.”
  • Agent: “Sure — what email address is it booked under, and what day is it?”
  • Caller: “jo@example.com, it’s on Tuesday the 1st.” (the agent looks it up — nothing is changed yet)
  • Agent: “I’ve found your appointment on Tuesday 1 December at 11:00am. Would you like me to cancel it?”
  • Caller: “Yes please.” (only now is it cancelled)
  • Agent: “Done — your appointment on Tuesday 1 December at 11:00am has been cancelled.”

Settings

  • Cal.com API Key: Your Cal.com cloud API key (starts with cal_live_…). Use the same key as your other Cal.com tools. (a secret, stored hidden; required)
  • Event Type ID: The number Cal.com uses for this event type. Press Find my Event Type ID to look it up. The agent can only change bookings of this event type — use the same ID as cal_check and cal_book. (a whole number; required)
  • Timezone: IANA timezone the caller’s appointment date is in (e.g. Australia/Sydney) — also the timezone the agent reads times out in. Leave blank to use the dashboard timezone, but setting it is strongly recommended.
  • Also require the caller’s phone number to match: Only find bookings whose phone number matches the number the caller is ringing or texting from. Bookings saved without a phone number can then never be found, and website chats (which have no number) can’t use the tool at all — only turn this on if your bookings record the caller’s phone. (on or off; default: off)
  • Bookings Lookup API Version (advanced): Cal.com cal-api-version for finding bookings. Leave default unless Cal.com changes it. (default: 2024-08-13)
  • Cancel/Reschedule API Version (advanced): Cal.com cal-api-version for cancelling and rescheduling. Leave default unless Cal.com changes it. (default: 2026-02-25)
  • Usage Instruction: Guidance appended to the agent's prompt. The default tells the agent to ask for the email and date, read the appointment back, and only cancel after a clear yes; and to use cal_reschedule instead if the caller wants a different time. (a longer block of text)
ℹWhat happens automatically: the tool works in two steps. The first only looks up the booking and hands the agent a one-time 6-digit code; the second, with that code, does the cancelling. The code only works in the same conversation, for about 10 minutes, and only once — so the agent can’t cancel anything it hasn’t read back to the caller first. After three look-ups that find nothing, the tool stops looking for the rest of that conversation. Cal.com sends its usual cancellation email, and the cancelled booking stays visible (as cancelled) in Cal.com.
⚠Who can cancel? Anyone who knows the email a booking was made under and the day of the appointment. That’s the same as most online booking pages. For a stricter check, turn on Also require the caller’s phone number to match — but only if your bookings store the caller’s number.
  • Existing agents don’t change: the tool does nothing until you switch it on for an agent.
  • Repeating (recurring) appointments: only the one occurrence the caller named is cancelled; the rest of the series stays.
  • Group (seated) bookings: can’t be cancelled by the agent — it tells the caller the team will help.
  • Test runs never cancel real bookings: the tool is recorded as used but not actually run.
Testable. This tool has a test button in its settings. The test only reads from Cal.com — it never cancels anything.

cal_check

Checks what appointment times are free in Cal.com so the agent can offer them — for a new booking (cal_book) or a new time for an existing one (cal_reschedule). Setup: Setting up Cal.com for your agents.

Settings

  • Cal.com API Key: Your Cal.com cloud API key (starts with cal_live_…). (a secret, stored hidden; required)
  • Event Type ID: The number Cal.com uses for this event type. Press Find my Event Type ID to look it up (Cal.com no longer shows it in the address bar). (a whole number; required)
  • Timezone: IANA timezone for availability (e.g. Australia/Sydney). Leave blank to use the dashboard timezone.
  • Slot Duration (minutes, optional): Only for variable-length event types. Leave blank to use the event type's own duration. (a whole number)
  • Slots API Version (advanced): Cal.com cal-api-version for the slots endpoint. Leave default unless Cal.com changes it. (default: 2024-09-04)
  • Usage Instruction: Guidance appended to the agent's prompt for when/how to use this tool. (a longer block of text; default: When the caller asks about availability or wants to book, call cal_check with the requested date range (start_date and end_date, ISO dates like 2026-07-01). State the timezone you are quoting and confirm it with the caller. Read back a few of the returned slot times. Do NOT invent times — only offer slots cal_check returned. When the caller picks one, pass that slot's exact value to cal_book without reformatting it.)
Testable. This tool has a test button in its settings, so you can check it works without placing a call.

cal_reschedule

Moves an appointment the caller already has to a new free time. It uses Cal.com’s own “reschedule”, so there is still one appointment afterwards (Cal.com marks the old time as rescheduled) and the caller gets one “rescheduled” email. Without this tool an agent can only book a second appointment and the old one stays in your calendar. Needs cal_check switched on too, to find the new time. Set up Cal.com first: Setting up Cal.com for your agents.

How a reschedule sounds

  • Caller: “I need to move my appointment.”
  • Agent: “No problem — what email is it booked under, and which day is it on?”
  • Caller: “jo@example.com, Monday the 30th. Could I do Tuesday morning instead?” (the agent checks Tuesday’s free times with cal_check)
  • Agent: “I have 11:00 or 11:30 on Tuesday.” Caller: “11 is great.” (the agent looks up the booking — nothing is changed yet)
  • Agent: “So that’s moving your appointment from Monday 30 November at 11:30am to Tuesday 1 December at 11:00am — shall I go ahead?”
  • Caller: “Yes.” (only now is it moved) Agent: “Done — you’re now booked for Tuesday 1 December at 11:00am.”

Settings

  • Cal.com API Key: Your Cal.com cloud API key (starts with cal_live_…). Use the same key as your other Cal.com tools. (a secret, stored hidden; required)
  • Event Type ID: The number Cal.com uses for this event type. Press Find my Event Type ID to look it up. The agent can only change bookings of this event type — use the same ID as cal_check and cal_book. (a whole number; required)
  • Timezone: IANA timezone the caller’s appointment date is in (e.g. Australia/Sydney) — also the timezone the agent reads times out in. Leave blank to use the dashboard timezone, but setting it is strongly recommended.
  • Also require the caller’s phone number to match: Only find bookings whose phone number matches the number the caller is ringing or texting from. Bookings saved without a phone number can then never be found, and website chats (which have no number) can’t use the tool at all — only turn this on if your bookings record the caller’s phone. (on or off; default: off)
  • Bookings Lookup API Version (advanced): Cal.com cal-api-version for finding bookings. Leave default unless Cal.com changes it. (default: 2024-08-13)
  • Cancel/Reschedule API Version (advanced): Cal.com cal-api-version for cancelling and rescheduling. Leave default unless Cal.com changes it. (default: 2026-02-25)
  • Usage Instruction: Guidance appended to the agent's prompt. The default tells the agent never to use cal_book to move an appointment, to find the new time with cal_check, read back both the old and the new time, and only move it after a clear yes. (a longer block of text)
ℹWhat happens automatically: the same two steps as cal_cancel — a look-up that changes nothing and gives the agent a one-time code, then the move itself with that code. If someone takes the new time in between, the agent hears “That time slot is no longer available” and offers another. If the event type requires confirmation, the new time waits as “pending” in Cal.com and the agent tells the caller the business still has to confirm it. The move is recorded in Cal.com as made by the caller (their email), not by you.
  • Existing agents don’t change: switch the tool on for each agent that should move appointments. Once it’s on, the agent is told to use it instead of booking a second appointment.
  • Repeating (recurring) appointments and group (seated) bookings can’t be moved by the agent — it tells the caller the team will help.
  • Who can move a booking: the same as cal_cancel above.
Testable. This tool has a test button in its settings. The test only reads from Cal.com — it never moves anything.

collect_dtmf

Lets the agent collect numbers the caller types on their keypad, such as an account or reference number.

Settings

  • Number of Digits: How many digits to collect (a whole number; default: 10)
  • Input Timeout (seconds): How long to wait between digit inputs (a number; default: 4.0)
  • Terminator Key: Key to end input early (pick one from a list; options: #, *; default: #)
  • Confirm with Caller: Read back digits and ask caller to confirm (on or off; default: True)
What happens automatically: once the digits are captured, the tool hands the agent the number ready to read back — each digit as a word, with a short pause between groups (a 10-digit number is spoken as 0412, 014, 214). This wording is deliberate: some voices skip the digit that follows a "..." or a dash, so the agent is told never to use those between digits. If the caller says the digits instead of pressing keys and the count does not match the configured number of digits, the agent asks again (up to three attempts) before falling back to taking the number by voice. Digit words are English; agents using a non-English voice get the digits plus the formatting rule.

get_datetime

Tells the agent the current date and time, so it can answer 'are you open now' and talk about days correctly.

Settings

  • Timezone: Timezone the agent reports the date and time in. Set it to where your business is (pick one from a list; options: Australia/Melbourne, Australia/Sydney, Australia/Brisbane, Australia/Perth, Australia/Adelaide, America/New_York, America/Chicago, America/Denver, America/Los_Angeles, Europe/London, Europe/Paris, Europe/Berlin, Asia/Tokyo, Asia/Singapore, Asia/Hong_Kong, Pacific/Auckland, UTC; default: Australia/Melbourne)
  • Date Format: How dates should be formatted (pick one from a list; options: Tuesday, 14 January 2025, 14 January 2025, January 14, 2025, 14/01/2025, 01/14/2025, 2025-01-14; default: Tuesday, 14 January 2025)
  • Time Format: How times should be formatted (pick one from a list; options: 2:30 PM, 14:30, 2:30:45 PM, 14:30:45; default: 2:30 PM)

handoff_to_human

Chat only. Hands the conversation to a real person on your team.

Settings

  • Usage Instruction: When the chatbot should hand a conversation to a person. Switch the feature on and set the webhook in the chatbot's Human Handoff tab — this tool is managed from there. (a longer block of text; default: Use the handoff_to_human tool when the visitor asks to speak to a person, is clearly upset, or you have been unable to help after two attempts. Call it with a short reason. Do NOT announce the handoff yourself and do NOT add anything after calling it — the tool tells the visitor exactly what happens next.)

hangup

Lets the agent end the call politely when the conversation is finished.

Settings

  • Usage Instruction: Instructions appended to the agent's system prompt for when and how to use the hangup tool (a longer block of text; default: Use this tool to end the call when the conversation is complete, when you have achieved your goal, or when the caller requests to hang up. Before calling this tool, always deliver your closing words — if the caller has already said goodbye or asked to end the call immediately, a single brief acknowledgment is enough. Do not call this tool mid-sentence or without any spoken closing. After calling this tool the call disconnects immediately — do not generate any further text or response.)

The agent says its closing words first; the call only drops once they have finished playing, plus a couple of seconds so the phone network delivers the last word. A speech-to-speech (realtime) agent that hangs up without saying anything gets a short goodbye generated for it first.

hold

Puts the caller on hold with music while the agent does something, then brings them back.

Settings

  • Play Hold Music: Whether to play hold music while on hold (on or off; default: True)
  • Hold Music File: Audio file to play while on hold. Leave on (None - use default) for a silent hold. (pick one from a list)
  • Hold Music Volume: How loud the hold music plays to the caller. The slider is perceptual (50% sounds about half as loud as 100%); values below ~10% are near-silent on phone calls. 80 is the recommended default. (a slider; default: 80)
  • Max Hold Time (seconds): Told to the agent as the longest a caller should wait on hold. Guidance for the agent, not a hard cut-off (a whole number; default: 300)

Holding is two steps: the agent puts the caller on hold, and must call the tool again with resume to take them off — the caller can’t hear the agent in between. You can pick a built-in clip or upload your own (MP3, WAV or OGG, up to 10 MB).

lookup_caller

Looks the caller up by phone number when the call connects (and, if allowed, again mid-call) and gives the agent the result as placeholders and a Caller Information note. The full walkthrough — how it works, what to put in the prompt, the n8n workflow and the reply format — is in Know who is calling before you say hello. Voice agents only.

Settings

  • Look up the caller automatically when the call connects: the whole point of the tool. Runs while the phone is still ringing so the greeting can use the result. Off = the agent can only look up mid-call, when it decides to (on or off; default: on)
  • Let the agent re-check during the call: gives the agent a lookup_caller action for when nothing was found at connect time, or the caller asks it to check again (on or off; default: on)
  • Allow looking up a number the caller states: off (recommended) only ever looks up the caller ID. On lets the agent look up a different number the caller gives — which means anyone who rings can ask about any number (on or off; default: off)
  • Lookup webhook URL: your n8n / Make / API address. Receives a JSON POST with caller_phone, called_number, direction, call_id, agent_slug and more; replies with the caller’s details. Leave blank to use built-in sources only.
  • Authentication: how the webhook recognises this dashboard — None, API key header, Bearer token or Basic (username + password) (default: None)
  • Header name: for API key header: the header the key is sent in (default: X-API-Key; the n8n Wizard uses X-Webhook-Secret)
  • API key / token: the value sent in the header, or as the Bearer token. Masked after saving
  • Username / Password: for Basic authentication. The password is masked after saving
  • Extra fields (JSON object): added to every request as custom, e.g. {"location": "Melbourne clinic"} — lets one workflow serve several agents
  • Run the automatic lookup on: Inbound calls (the caller’s phone keeps ringing while we wait), Outbound calls (the lookup overlaps the dial; if the person answers within the wait, the greeting still uses it) or Both (default: Inbound)
  • Wait for the result before greeting: on = the greeting can use the caller’s name. Off (safe mode) = greet instantly and let the details arrive for the conversation (on or off; default: on)
  • Maximum wait (ms): every call on this agent rings up to this much longer. 2000 is a good default; above 3000 callers start hanging up (300–5000; default: 2000)
  • Fallback greeting: spoken when nothing comes back in time — not found, slow, or down. Leave blank to use the normal greeting with any missing placeholders left out
  • Add a Caller Information note to the prompt automatically: lists everything the lookup returned so you need not reference each placeholder by name. Skipped when your prompt already contains {{caller_info}} — the block goes there instead (on or off; default: on)
  • Built-in source: last call’s extracted fields: reuses the Data Extraction Fields the agent pulled on this caller’s previous call. Calls after this update only, once that call’s summary has run (on or off; default: off)
  • Built-in source: campaign contact: if this agent dialled the caller in a campaign, their Name, CompanyName, JobTitle and custom fields are reused (on or off; default: off)
  • Built-in source: caller location: caller_country, caller_region and caller_local_time from the number, where the number reveals them (on or off; default: off)
ℹWhat happens automatically: a webhook that errors five times in a row is paused for ten minutes (counted across calls; built-in sources keep running; a successful Run Test clears the pause). Agents that had the old “lookup_caller [Coming Soon]” placeholder ticked simply no longer have it — it never did anything; tick lookup_caller to use the real tool.

play_audio

Plays a recorded audio file to the caller, for disclaimers or announcements.

Settings

  • Default Audio File: Default audio file to play if none specified (pick one from a list)
  • Audio Volume: Controls how loud the audio plays to the caller (0% = silent, 100% = full volume) (a slider; default: 80)

record_note

Not available yet. This tool appears in the list but is still being built. Leave it switched off.

Saves a note against the call.

Settings

  • Storage Mode: Where to save notes (pick one from a list; options: redis, webhook, both; default: redis)
  • Notes Webhook URL: Webhook to receive notes (for CRM integration)

schedule_callback

Not available yet. This tool appears in the list but is still being built. Leave it switched off.

Arranges for someone to ring the caller back later.

Settings

  • Callback Webhook URL: Webhook to receive callback requests (n8n, Make.com, etc.) (required)
  • Minimum Delay (minutes): Earliest a callback can be scheduled (a whole number; default: 15)
  • Business Hours Only: Only allow callbacks during business hours (on or off; default: True)
  • Business Hours Start: Start time in 24h format (e.g., 09:00) (default: 09:00)
  • Business Hours End: End time in 24h format (e.g., 17:00) (default: 17:00)
  • Timezone: IANA timezone the business hours are in, e.g. Australia/Melbourne (default: Australia/Melbourne)

search_knowledge_base

Lets the agent look up answers in your Knowledge Base instead of guessing. It switches on and off by itself when you tick or untick Knowledge Base collections for an agent (see Knowledge Base). The search starts while the agent is still saying “let me check”, so the caller waits less.

Settings

  • Max results: Maximum number of search results to return (a whole number; default: 5)
  • Say a filler line on slow lookups: if the search is still running a couple of seconds after the agent finishes its own “let me check”, say the filler line so the caller isn’t left in silence. Standard (non-realtime) voice agents only (on or off; default: on)
  • Filler line: what the agent says while a slow lookup finishes (default: One moment, let me check that.)
  • Filler delay (seconds): how long after the agent stops talking to wait before the filler line (default: 2)

send_email

Sends an email during the call, for example a confirmation or a link.

Settings

  • Email Provider: Choose your email sending method (pick one from a list; options: smtp, ses; required; default: smtp)
  • SMTP Host: SMTP server address (e.g., smtp.gmail.com)
  • SMTP Port: SMTP port (587 for TLS, 465 for SSL) (a whole number; default: 587)
  • SMTP Username: Login name for your mail server. Leave blank if the server needs no login
  • SMTP Password: Password for that login. Masked after saving (a secret, stored hidden)
  • Use TLS: Enable TLS encryption (on or off; default: True)
  • AWS Region: AWS SES region (pick one from a list; options: us-east-1, us-east-2, us-west-1, us-west-2, eu-west-1, eu-west-2, eu-central-1, ap-south-1, ap-southeast-1, ap-southeast-2, ap-northeast-1; default: ap-southeast-2)
  • AWS Access Key ID: Access key of an IAM user allowed to send through SES
  • AWS Secret Access Key: The matching secret key. Masked after saving (a secret, stored hidden)
  • From Email Address: The address the email is sent from. Must be allowed by your mail server or verified in SES (required)
  • From Name: The name shown next to the From address, e.g. your business name
  • Reply-To Address: Where replies go if different from the From address

This tool has its own mail settings above. The agent fills in the recipient, subject and message when it calls the tool.

send_sms

Sends a text message to the caller during the call.

Settings

  • SMS Provider: Custom (n8n) sends through your own n8n workflow. (pick one from a list; options: Custom (n8n); required; default: Custom (n8n))
  • From Number / Sender ID: Sender phone number (E.164, e.g. +61412345678).
  • n8n Send-webhook URL: Production URL of the imported Send-SMS n8n workflow (download it below, import into n8n, activate, paste the URL here)
  • Shared Secret (send_sms tool): Sent as the X-SMS-Secret header so your n8n workflow can verify the request came from this dashboard. Baked into the downloaded workflow — regenerate = re-download + re-import. (a secret, stored hidden)
  • SMS API URL (legacy direct HTTP): Direct SMS gateway HTTP endpoint — only used when the n8n Send-webhook URL above is empty
  • HTTP Method: HTTP method for API requests (pick one from a list; options: POST, GET; default: POST)
  • Request Body Template: JSON template with placeholders: {{to}}, {{from}}, {{message}} (JSON; default: {"to": "{{to}}", "from": "{{from}}", "message": "{{message}}"})
  • Authentication Type: How to authenticate with your SMS API (pick one from a list; options: none, bearer, token, basic, api_key_header, api_key_query; default: none)
  • Auth Token/Key: API key, bearer token, or basic auth credentials (a secret, stored hidden)
  • Auth Header Name: Header name for API key (e.g., X-API-Key) (default: Authorization)
  • Success Check Path: JSONPath to check success (e.g., $.status or $.success) (default: $.success)
  • Success Value: Expected value for success (e.g., 'sent', 'true', '200') (default: true)
Testable. This tool has a test button in its settings, so you can check it works without placing a call.

take_a_message

Takes a message when the person the caller wants is not available, and sends it on. Each message is also stored for 90 days, but no page in the dashboard shows it: the email or text message is how you receive it.

Settings

  • How to deliver captured messages: Captured messages can be sent by email only, SMS only, or both. SMS requires the agent's SMS provider to be configured under the Messaging tab. (pick one from a list; options: Email only, SMS only, Email and SMS; default: Email only)
  • Default recipient email: Email used when the message is not for a transfer destination that has its own notification email (set on that destination in the Attended or Blind Transfer tool, which must be switched on for the agent). Leave blank to send only to destinations' own addresses.
  • Default recipient SMS number: SMS number (E.164 format, e.g. +61412345678) used when the message is not for a transfer destination that has its own notification SMS number. Leave blank to text only destinations' own numbers.
  • Include call recording link: If call recording is enabled for this agent, include a link to the recording in the message email/SMS so the recipient has full context. (on or off; default: True)
  • Usage Instruction (advanced): Instructions appended to the agent's system prompt for when and how to use take_a_message. Leave default unless you have a specific reason to override. (a longer block of text)

threecx_messaging

Sends a message INTO your 3CX system so it lands in a named user's chat. Not for texting customers.

Settings

  • 3CX Webhook URL: Full 3CX Generic SMS webhook URL including the token path (e.g. https://yourtenant.3cx.ph/sms/generic/ABC123...). Find this in 3CX Admin → SIP Trunks → your trunk → Generic SMS tab. (a line of text; required)
  • 3CX DID (fallback): The 3CX DID registered for SMS, in E.164 format with leading + (e.g. +61488883111). Used as the 'to' number only when no destinations are configured below. Must match the DID in 3CX EXACTLY. (a line of text)
  • Default Country Code: E.164 country prefix (e.g. +61) used to normalize numbers entered in national format (e.g. 0412000001 → +61412000001). Must include the leading +. (a line of text; default: +61)
  • Recipients (3CX Users): Named list of 3CX user DIDs the agent can message. Each entry has a Name (what the agent picks by, e.g. 'Sales', 'Support') and a Number (the 3CX DID that routes to that user, in E.164 with leading +). (a named list of destinations)
  • Sender Identities: Named list of sender identities the message can appear to come from. Each entry has a Name (what the agent picks) and a Number (mobile in E.164, OR an alphanumeric sender ID up to 11 characters, e.g. 'Tronic'). (a named list of destinations)
  • Default Sender Name: Name of the sender identity to use when the agent doesn't specify one. Must match an entry in the Sender Identities list above. (a line of text)
  • Webhook Timeout (seconds): Maximum time to wait for 3CX to respond before giving up. Default 15s. Voice calls hear silence during this, so keep it short. (a whole number; default: 15)
Testable. This tool has a test button in its settings, so you can check it works without placing a call.

threecx_receptionist — 3CX Receptionist

Turns the agent into a receptionist for your 3CX phone system: it finds people, queues, ring groups and menus in the live 3CX directory, sees who is available right now, puts callers through, offers voicemail when someone is busy, can screen callers first, only ever reaches the entries you tick, and can hang up on spam or abusive callers. Each agent connects to 3CX one of three ways: over a phone line with transfers dialled over a PBX trunk, over a phone line with transfers made through the agent’s own 3CX extension (no PBX trunk), or as an extension inside 3CX. Needs 3CX AI Edition (V20 Update 9 or later) and a Service Principal login.

3CX Receptionist

Turn an agent into a receptionist for your 3CX phone system — a live directory, real-time availability, screening, voicemail and transfers, all driven from 3CX itself.

The 3CX Receptionist is a tool you switch on per agent. Once it has a login to your PBX, the agent finds people, departments, queues, ring groups and menus by name in the live 3CX directory, sees whether a person is free right now, puts the caller through, offers voicemail when they are busy, can ask who is calling first, and refuses anyone you have not allowed. There is nothing to type in or keep up to date: when you add a person in 3CX, they appear in the agent’s directory the moment you tick them.

🔒NOTE: Needs 3CX AI Edition (formerly Enterprise), V20 Update 9 or later. The directory and presence come from 3CX’s Configuration API, or from 3CX’s own MCP server on Update 10 and later — the agent picks whichever your PBX has.
The 3CX_Receptionist tool needs a Service Principal (an API key), and only 3CX Ent/AI Edition can create one.

No 3CX AI Edition? Use SIP Direct and the transfer tools. On any 3CX version an agent can still send callers to your 3CX users, queues, ring groups or IVRs using SIP Direct: a SIP trunk from the dashboard to your PBX, plus the ordinary blind_transfer or attended_transfer tool to any 3CX internal number. The agent answers, and when the caller asks for someone it dials that extension or queue straight into 3CX.

For set-up steps for SIP Direct, see this video walk-through: youtu.be/NTC66pO1hpM

Setting up SIP Direct (any 3CX version)

Step 1 — Create a PBX trunk to your 3CX

In the dashboard go to Telephony → SIP Trunks → Outbound → Create new trunk (or use the Setup Wizard). The two fields that matter are marked below:

  • Trunk Type = PBX is what allows bare extension and queue numbers to be dialled. A PSTN trunk refuses them.
  • Address: your 3CX hostname and port. Include the port so DNS SRV is bypassed.
  • Caller-ID to show on transfers: leave blank and the real caller’s number flows through to the person in 3CX; type a number to show that instead.

This trunk is for transfers into 3CX. To make outgoing calls (campaigns) go out through the 3CX to customers, use a separate trunk that logs in as a 3CX extension — see Calling out through a 3CX phone system.

⚠Your 3CX admin must allow the dashboard in. In 3CX: add this dashboard’s SIP egress IP as a Generic SIP Trunk (IP based), whitelist that IP in Anti-Hacking, and set the trunk Transport: TCP with Include diversion header support: Yes. Without these, transfers are usually rejected with SIP 403 Forbidden.
Step 2 — List the 3CX destinations on the transfer tool

On the Tools page open blind_transfer on an agent’s panel, and add one destination per person, queue or menu the agent may reach:

  • Name is what the agent hears about and what the caller asks for (“Sales queue”, “Alex”). Keep it natural.
  • Value: sip:800@your-pbx.3cx.au for queue 800. On a PBX trunk you may also type the bare extension (800); a number starting with + is refused, so an outside number needs its own PSTN Trunk override on that row.
  • Test on the row places a real call to that destination so you can confirm it rings before an agent uses it.
  • attended_transfer takes exactly the same destinations if you want the agent to speak to the person first, then join the caller.
What you get, and what you do not
  • You get: transfers into 3CX to people, queues, ring groups and IVR menus, on any 3CX edition, with warm or blind transfer and the usual recording and hang-up behaviour.
  • You do not get: the live 3CX directory (you type the list yourself and keep it up to date), real-time availability, voicemail by name, caller screening handed to the person, or the tick-list of who may be reached. Those come from the 3CX API, which is what the receptionist and Ent/AI Edition are for.
  • Moving up later is easy: licence the API access, create the Service Principal, switch on the 3CX Receptionist, and leave the transfer tools in place for destinations outside the PBX.

Three ways to connect an agent to 3CX

Every agent chooses one of three ways to reach your PBX. They share the directory, the allow-list, availability, screening and the caller policies; they differ in where calls arrive and how a transfer reaches 3CX. Two settings pick the way: How calls reach this agent and, in phone-line mode, How transfers reach 3CX.

  • 1. Phone line + PBX trunk (trunk + pbx_trunk, the default). Calls reach the agent on any SIP trunk. To transfer, the dashboard dials the person back into 3CX over a second trunk that points at your PBX. Warm or blind transfers. Voicemail follows the person’s own 3CX status rules. Needs a PBX-type outbound trunk. Calls in progress survive a dashboard restart.
    Choose it when you want warm transfers (the agent briefs the person first) and already have a trunk between the dashboard and 3CX.
  • 2. Phone line + transfers through the agent’s extension (trunk + agent_extension). Calls reach the agent on any SIP trunk. To transfer, the agent’s own 3CX extension rings the person, queue or voicemail box inside 3CX and the dashboard connects the caller to that call. Blind transfers. Voicemail always reaches the person’s mailbox. No PBX trunk needed. The dashboard carries the audio for the rest of the call, so a dashboard restart ends it.
    Choose it when your numbers arrive on a carrier trunk and there is no trunk into 3CX, or you need voicemail to be dependable.
  • 3. Extension mode (extension). The agent is an extension inside 3CX. 3CX routes calls to it (a DID, an IVR option, a queue overflow), the audio flows over 3CX’s Call Control API, and transfers happen inside the PBX — after a transfer the dashboard is out of the call. Blind transfers. Voicemail always reaches the person’s mailbox. Callers hear ringing until the agent is ready. No trunk at all. A dashboard restart ends calls still talking to the agent.
    Choose it when your numbers already terminate on 3CX and you want the agent to sit inside 3CX’s own call flow (menus, queues, after-hours rules).
Setting each way up

Everything below is on the 3CX Receptionist panel — Per-Agent Settings on the agent. Fill the four connection fields first, the same for all three ways: PBX address, Service Principal Client ID, Service Principal API key, Verify the PBX certificate. Then tick who the agent may reach under Who the agent may put callers through to — nothing ticked means nobody is reachable. Then pick the way:

Way 1 — phone line + PBX trunk
  • How calls reach this agent: Phone line.
  • How transfers reach 3CX: Dial back into 3CX over a PBX trunk.
  • Phone system (PBX trunk): the trunk that points at your 3CX. Create it first under Telephony → SIP Trunks → Outbound, Trunk Type = PBX.
  • How to connect: Warm (the agent briefs the person first) or Blind (straight through).
  • In 3CX: allow the dashboard in — the same trunk set-up as SIP Direct above.
  • You ring: your dashboard’s own number.
Way 2 — phone line + transfers through the agent’s extension
  • How calls reach this agent: Phone line.
  • How transfers reach 3CX: Through the agent’s own 3CX extension. The PBX trunk field disappears — none is needed.
  • 3CX voicemail dial code: leave at *4 unless your PBX uses a different code.
  • In 3CX: nothing beyond the Service Principal.
  • You ring: your dashboard’s own number.
Way 3 — extension mode
  • How calls reach this agent: Extension. The transfer setting disappears — the agent is already inside the PBX.
  • If the agent cannot take the call: optional — a 3CX destination such as Queue.800. for when no agent picks up within 12 seconds. Leave empty to hang up.
  • Maximum simultaneous calls and Record calls: optional.
  • In 3CX: route something to the Service Principal — a number in its DID Number(s) field, a trunk inbound rule, or an IVR option, queue or ring group pointed at its Client ID.
  • You ring: the number 3CX routes to the agent — not your dashboard’s number.
⚠Extension mode only works for calls that arrive through 3CX. If you set an agent to Extension and then ring your dashboard’s own SIP number, the agent answers but cannot transfer — there is no 3CX call for it to move, and it tells the caller it cannot put them through. Either ring the number 3CX routes to the agent, or use way 2, which takes calls on your own line and still transfers into 3CX.

After saving ways 2 and 3, wait about 30 seconds for the connector to start; the agent’s panel shows its state. Then press Run Test, and use Call this extension to ring your own handset and talk to the agent.

ℹCalls that arrive through 3CX always transfer inside 3CX. If an agent in phone-line mode also has its 3CX extension routed to it (for example a DID on the Service Principal), those particular calls are transferred by 3CX itself, the same as in extension mode. Calls on the SIP trunk use the method you chose.

How a call works, step by step

  1. The call arrives. Phone-line modes: on the SIP trunk, through the dispatch rule like any other call. Extension mode: 3CX rings the agent’s extension; the dashboard joins the agent to a call room and only then answers, so the caller hears ringing rather than silence.
  2. Sign-in. The agent signs in to your PBX in the background with the login you created once in 3CX (a Service Principal). The greeting is never delayed by this.
  3. Lookup. When the caller asks for someone (“Can I speak to Sarah?”, “Sales please”, “someone who handles invoices”), the agent searches the live 3CX directory, reads back every match and lets the caller choose; it never guesses. Descriptive words the caller adds (“the support queue”) are dropped automatically if the full phrase finds nothing.
  4. Availability. For a person, the agent sees their 3CX status. Someone on a call, away or on Do Not Disturb is not available; the agent says so and offers voicemail. It checks again just before transferring, so a person who just picked up another call is not rung.
  5. Screening (optional). The agent asks for the caller’s name, company and reason first. On a warm transfer it tells the person privately who is holding; in extension mode the details are also attached to the call inside 3CX.
  6. Transfer. The way you chose moves the call: dialled over the PBX trunk (way 1), rung from the agent’s extension and bridged (way 2), or moved by 3CX (way 3). Queues, ring groups and IVR menus are transferred the same way; they have no availability, so they are always offered.
  7. Voicemail. Ways 2 and 3 send the caller straight into the person’s mailbox, whatever their status. Way 1 transfers to the extension and 3CX applies that person’s own status rules (see Phone-line settings).
  8. Difficult callers. Spam, abusive or non-cooperative callers can be hung up on, with the same goodbye and clean disconnect as the normal hang-up tool.
ℹThe agent never sees extension numbers. It works with names only; the tool resolves the number and dials it. It cannot reach anything you have not ticked in the allow-list, and callers are never told what is off-limits.

One-time setup in 3CX

The agent signs in to 3CX with its own application login, which 3CX calls a Service Principal. You create it once, in the 3CX admin console:

  1. Click Admin (bottom of the left-hand bar).
  2. Choose Integrations, then API.
  3. Click + Add. The Add Application Access (Service Principal) screen below opens.
  4. Fill it in as described under the screenshot, click Save, then Generate API Key and copy the key — 3CX shows it once.
3CX Add Application Access (Service Principal) screen
3CX — Admin → Integrations → API → + Add. Tick the Configuration API and Call Control boxes and set a department and a role that can read users. DID Number(s) is how outside callers reach the agent in extension mode.
  • Client ID: any name you will recognise, for example reception. This is also the agent’s extension inside 3CX (extension mode, transfers through the agent’s extension, and test calls). Use one Service Principal per agent.
  • Generate API Key: appears once the principal is saved. Copy the key straight into the tool — 3CX shows it once; if you lose it, generate a new one and update the tool.
  • Enable access to the 3CX Configuration API (XAPI): tick it. This is the directory and presence; without it nothing works.
  • Department: the department whose people the agent should reach. System Wide or DEFAULT covers everyone on a single-department PBX.
  • Role: a role that can read users in that department — that is what gives the agent presence. System Owner always works; try Manager or Owner first and press the tool’s Run Test: if it warns that presence is missing, raise the role.
  • Enable access to the 3CX Call Control API: tick it. Extension mode, transfers through the agent’s extension, the Call this extension button and the voicemail shortcut all use it.
  • DID Number(s): extension mode only — pick the number(s) outside callers dial to reach the agent. Leave empty for the phone-line ways. (You can instead route a number with a trunk inbound rule, or point an IVR option or queue at the Client ID; see Extension mode.)
  • Enable access to the 3CX Chat API: no effect today — 3CX has not published the endpoint behind it.
  • Extension(s): way 1 only, optional — extensions the agent may divert straight to voicemail on a trunk transfer (see Phone-line settings). Ways 2 and 3 do not need it.
⚠The mistake everyone makes: ticking Call Control but not the Configuration API, or ticking both but leaving the role too low to read users. Press Run Test after saving — it tells you in plain words if presence is missing.
ℹThe MCP Clients page in 3CX is a different login. That page creates a browser login for personal assistants such as ChatGPT or Claude, tied to your own 3CX user. The receptionist uses the Service Principal so it can run unattended; you do not need to add anything on the MCP Clients page.

Per-agent settings

  • Per-agent settings: Tools → Agent Tool Assignments → Configure on the agent’s row → switch on threecx_receptionist → Per-Agent Settings. Anything you change here overrides the default for that agent only; the panel shows a Customized badge, and Reset to Global throws the agent’s changes away.

Run Test and Call this extension are on the per-agent panel (a test call needs an agent to talk to).

Settings reference

Grouped as the panel shows them. Each group says when it is visible.

Connection — always shown
  • How calls reach this agent: trunk — phone line (ways 1 and 2). extension — the agent is a 3CX extension (way 3). Changing it ends any extension-mode call in progress on this agent. (default: trunk)
  • PBX address: the 3CX web address including the port, for example https://your-pbx.3cx.au:5001. Must start with https:// and have nothing after the port. (required)
  • Service Principal Client ID: the Client ID you created in 3CX — also the agent’s extension inside 3CX. (required)
  • Service Principal API key: the key 3CX generated. Stored on this agent only. (required)
  • Verify the PBX certificate: leave on. Turn off only for an on-premises PBX with a self-signed certificate. (default: on)
Phone-line block — shown when the agent connects by trunk
  • How transfers reach 3CX: pbx_trunk — dial the person back into 3CX over the PBX trunk (way 1). agent_extension — the agent’s 3CX extension rings the person, queue or mailbox and the dashboard bridges the call (way 2; see Transfers through the agent’s extension). (default: pbx_trunk)
  • Phone system (PBX trunk) — pbx_trunk only: the outbound trunk pointing at this 3CX (Telephony → Outbound Trunks). Must be a PBX-type trunk. The agent re-checks it just before every transfer and refuses to dial if it has been changed or removed.
  • 3CX voicemail dial code — agent_extension only: what the agent’s extension dials to reach a mailbox directly. 3CX’s default is *4, so *4101 reaches extension 101’s voicemail. Change it only if your PBX uses a different code. (default: *4)
  • How to connect — pbx_trunk only: warm — ring the person, tell them privately who is holding and why, then connect the two. blind — put the caller straight through. (default: warm)
ℹVoicemail on way 1. The agent transfers to the extension and 3CX applies that person’s own status rules: an Away or Do Not Disturb rule set to voicemail lands in voicemail; a rule that gives busy tone gives busy tone. If the extension is also listed under the Service Principal’s Extension(s), the agent additionally asks 3CX to divert the ringing call to voicemail; whether 3CX accepts that for a trunk call depends on the PBX. When voicemail must be dependable, use way 2 or way 3.
ℹRecording in phone-line mode is switched on the SIP dispatch rule that sends calls to the agent (Telephony → Dispatch Rules), as for any other agent.
Extension block — shown when the agent connects by extension
  • If the agent cannot take the call: where 3CX sends a caller when no agent has joined within 12 seconds, the agent drops out mid-call, or the call limit is reached. Written the 3CX way: Queue.800., IVR.802., RingGroup.801., Extension.101., External..+61…, or a plain extension number. Leave empty to hang up. Checked when you save. (default: empty = hang up)
  • Maximum simultaneous calls: calls beyond this go to the fallback above, or are hung up. 1–50. (default: 5)
  • Record calls: extension-mode calls do not pass through a SIP dispatch rule, so the recording switch lives here. (default: off)
Behaviour — always shown
  • Only transfer to people who are available: use 3CX presence. Busy or away people are offered as voicemail instead; presence is re-checked at the moment of transfer. Needs the Configuration API tick and a role that can read users. (default: on)
  • Ask who is calling first: collect the caller’s name, company and reason before putting them through, and pass them on (warm transfer briefing; attached to the call in 3CX in extension mode; on the call record under Screening in every way). (default: off)
  • Offer voicemail when the person is busy: on — the agent offers voicemail and sends the caller there if they agree (how, depends on the way; see above). Off — the agent offers to take a message instead. (default: on)
  • Who the agent may put callers through to: the allow-list — see Choosing who the agent may reach. (required)
  • Blocked extensions (extra): optional second guard, handy for ranges such as 100, 105-110. Anything listed here is refused even if ticked in the allow-list. Never revealed to callers. (default: empty)
  • Spam or sales calls: end_call — the agent says goodbye and hangs up. ignore — carry on normally. (default: end_call)
  • Abusive callers: end_call — the agent says it is ending the call and hangs up. ignore — carry on. (default: end_call)
  • Callers who will not say who they are: end_call or ignore. Only applies when screening is on and the caller refuses every ask. (default: end_call)
  • Allow on calls the agent makes: off by default — on an outbound call the other person did not ring you, so lookup and transfer rarely make sense. Test calls from Call this extension always behave as incoming calls. (default: off)

Choosing who the agent may reach

People often have colleagues who must never be put through to an AI — the managing director, a private line, a test extension. The allow-list makes that explicit. Press Load from 3CX and the tool pulls the whole directory from your PBX: every extension, queue, ring group and IVR menu, grouped, with a filter box and all/none links per group. Tick the entries this agent may reach and save.

  • Only ticked entries can ever be found or dialled. Someone added in 3CX later stays unreachable until you open the agent and tick them.
  • Unticked people never appear in what the caller hears, and the caller is never told why.
  • Each agent has its own list, so two agents on the same PBX can reach different people.
  • Nothing ticked yet: the agent tells callers it cannot put calls through on this line and offers to take a message, and Run Test warns you.
  • Deleted in 3CX: entries you ticked that no longer exist are shown as “no longer on the PBX” so you can untick them.
  • Loading uses the details typed in the form, so you can try a new login before saving it. Leave the key blank and it falls back to the saved one.

Testing: Run Test and Call this extension

Run Test checks this agent’s saved settings without placing a call and reports each step separately: signing in, the directory (Configuration API or 3CX’s MCP server), a phonebook search, presence, and then, depending on the way — the PBX trunk (way 1), or that 3CX sees the Client ID as an app-controlled extension and that the connector is listening (ways 2 and 3) — plus voicemail and the allow-list. Press Save first if you changed anything.

Call this extension, just below, places a real test call: type an extension number, press the button, and the agent rings that phone. Pick it up and you are talking to the agent, so you can try lookups, transfers and voicemail from your own desk. Way 1 dials the extension over the PBX trunk; ways 2 and 3 have 3CX ring it from the agent’s own extension.

  • The agent treats it as an incoming call, so lookups, transfers and voicemail work even though the agent dialled out.
  • Unknown extensions are refused before dialling, and only one test call per agent can be in progress at a time.
  • It costs a normal call (speech recognition, the model, the voice) and appears in Call History like any other call.
  • If your phone does not ring, check that your 3CX app is open and registered and that you are not on Do Not Disturb — 3CX then sends the call straight to your voicemail.

Transfers through the agent’s extension (way 2)

Calls arrive on your normal SIP trunk. When the agent transfers, the dashboard asks 3CX to place a call from the agent’s extension to the person (their extension number), the queue, ring group or menu (its number), or the voicemail box (the voicemail dial code plus the extension). When that call is answered — by the person, by the queue, or by the mailbox greeting — the dashboard connects the caller’s audio to it and the agent leaves the call.

  • No PBX trunk is needed on the dashboard. The connector (a small helper the dashboard starts by itself within about 30 seconds of saving) handles the 3CX side; its state is shown on the agent’s panel.
  • Blind transfers. The agent announces the transfer, then the target is rung for up to 25 seconds. If nobody answers and 3CX does not send the call to voicemail by the person’s own rules, the caller stays with the agent, who offers voicemail or a message.
  • The agent announces the transfer before dialling, and says nothing once the person answers. It goes silent the moment the call connects, so it can never talk over the person picking up.
  • While the target rings the caller hears silence (there is no ringback on a call placed from an extension).
  • The person’s phone shows the agent’s extension as the caller, not the outside caller’s number. Turn on screening if the person needs to know who is calling (the details are on the call record).
  • The dashboard stays in the audio path until the call ends; when either side hangs up, the other side is hung up too. A dashboard restart ends these calls.
  • One Service Principal per agent — the dashboard refuses to save a second agent using the same PBX and Client ID with the connector.

Extension mode in detail (way 3)

In extension mode the agent is an extension inside 3CX — the Service Principal’s Client ID is the extension. 3CX routes calls to it like any other extension, the voice audio flows between 3CX and the dashboard over the Call Control API (no SIP trunk involved), and transfers, queues and voicemail are done by the PBX. “Put me through to Alex’s voicemail” lands in Alex’s own mailbox even when Alex is on Do Not Disturb, and the caller hears Alex’s greeting.

Sending calls to the agent in 3CX
  • A direct number: Admin → Integrations → API → open the Service Principal → DID Number(s), pick the number. Or: Admin → Voice & Chat → open the trunk that owns the number → its inbound rule for that number → destination = the Client ID.
  • From inside 3CX: point an IVR option, a queue’s overflow or a ring group’s no-answer destination at the Client ID, so callers reach the agent after pressing a key or when nobody picks up.
  • Calls to the SIP trunk number do not use extension mode. A number that still arrives on the dashboard’s own SIP trunk reaches the agent as a phone-line call, and an extension-mode agent cannot transfer it (the agent says it cannot put calls through from this line). Route the number in 3CX as above, or use way 2 for that agent.
What is different on a call
  • The caller hears ringing until the agent is ready. The connector answers only once the agent has joined and is able to speak (about one to two seconds).
  • Blind transfers, done by 3CX. The agent announces the transfer and 3CX moves the call; the dashboard is then out of the call. If the person does not answer or declines, 3CX follows that person’s own no-answer or busy rule (usually their voicemail), exactly as for a transfer from a desk phone. Only when 3CX cannot complete the transfer at all (the number does not exist) does the caller come back to the agent.
  • Voicemail is a direct mailbox transfer — no status rules, no Extension(s) list needed.
  • The call record shows the caller’s number and name from 3CX and the number they dialled. The prompt can use {{caller_name}}, {{caller_number}}, {{called_did}} and {{referred_by}} (the queue or menu that sent the call).
  • Several calls at once are handled up to Maximum simultaneous calls; beyond that, and whenever no agent joins within 12 seconds, the caller goes to If the agent cannot take the call.
⚠A dashboard restart ends extension-mode calls still talking to the agent. Phone-line calls carry on through a dashboard restart because they live on the SIP trunk; extension-mode audio runs through the dashboard’s connector, so a restart hangs those callers up, or sends them to the fallback destination if you set one. Calls already transferred by 3CX are not affected.
ℹSwitching an agent back to phone-line mode is one setting, but 3CX keeps sending calls to the extension until you re-point the DID, IVR option or queue in 3CX. Do that first, then change the mode.

What the agent is told, and what to put in your prompt

Switching the tool on adds a block to the agent’s Tool Usage Instructions automatically. It tells the agent when to search, to read back every match, to act on availability (transfer / offer voicemail / say it cannot reach that person), how screening works, how departments come back as queues or menus, the difficult-caller rules, and to end the call when the caller is done. The block follows your settings: switch screening off and its paragraph disappears; switch voicemail off and the agent is told to offer a message instead; set a policy to ignore and that rule goes. In the blind-only ways (2 and 3) the warm-transfer steps are not offered to the agent at all. Switching the tool off removes the block again; if you had edited it, the dashboard leaves your text alone and tells you where to tidy it.

Your own prompt therefore only needs the persona and the business rules, for example:

You are Jess, the receptionist at Example Co. Keep every reply to one short sentence.
Connect callers to the right person, team or voicemail. Answer simple general questions
yourself; for anything about a caller's own account, order or support issue, offer to put
them through. If the caller names a problem rather than a person, ask who they'd like to
speak to. Match the caller's language. Never mention extension numbers or internal tools.

Worth stating in the prompt because they are business decisions, not tool mechanics: who to offer when the requested person is unavailable and voicemail is declined, whether to take a message (switch on the Take a Message tool alongside), and what “after hours” means if the agent answers overnight.

What happens automatically

  • Connecting to 3CX happens in the background as each call starts, so the greeting is never delayed. If the PBX cannot be reached, the agent says it cannot reach the directory just now and offers to take a message; the reason is recorded on the call record.
  • The connector starts by itself within about 30 seconds of saving an agent in extension mode or with transfers through the agent’s extension, stops when no agent needs it, reconnects to the PBX if the link drops, and restarts itself if it fails. It never runs on installs that do not use these ways.
  • Several matches (“Jon” finds John, Joan and Jonathan) are all read back and the caller chooses. More than eight matches — the agent asks for a surname or department instead of reading a list.
  • Unknown availability (the Service Principal cannot see that person’s department) — the agent says it cannot put them through to that person and asks if someone else can help. It does not guess.
  • The agent falls silent the instant a transfer connects (way 2), so it cannot talk over the person answering. Its last words to the caller are the announcement it makes before dialling. In way 3 the PBX moves the call away from the agent, and in way 1 the agent’s sign-off plays while the destination is still ringing, which is intended.
  • Screening details collected during the call appear on the call record under Screening.
  • Where the caller ended up is recorded. Call History shows the person, queue or mailbox under the number they dialled, and the call’s own page adds a Transferred to line with an exact label such as 3CX-testonly-391 — which 3CX, and which extension — plus whether it went over the PBX trunk, through the agent’s extension or inside 3CX. The To number itself stays the number the caller rang.
  • A PBX trunk that is changed or removed after setup (way 1) makes the agent refuse to dial rather than risk sending an extension out as an outside number.
  • Saving is checked: an invalid fallback destination, a call limit outside 1–50, a bad voicemail dial code, or a Service Principal already used by another connector agent is refused with a plain message.
  • Hidden fields keep their values when you switch between ways, so switching back restores the old trunk, fallback and limits.
  • Test tools (the Agent Tester) stand in for this tool rather than running it, so trying an agent out can never ring a real person.

Troubleshooting

  • The agent says it cannot put calls through / has technical issues when transferring (extension mode). The call arrived on the dashboard’s SIP trunk, not through 3CX. Route the number to the agent’s extension in 3CX (Sending calls to the agent), or switch the agent to phone-line mode with transfers through the agent’s extension.
  • The status line says the connector is not running. Save the tool again and wait 30 seconds; then press Run Test, which names the problem (wrong API key, Call Control API not ticked, PBX unreachable).
  • Every person comes back with unknown availability. The Service Principal’s role cannot read users, or the Configuration API is not ticked.
  • Voicemail gives busy tone or the company mailbox (way 1). 3CX applied the person’s own status rule. Fix the rule in 3CX, or use way 2 or 3 where voicemail goes straight to the person’s mailbox.
  • A transfer went to voicemail although the person was there. Their 3CX app did not ring (not registered, or Do Not Disturb), so 3CX used their no-answer rule.
  • Saving says another agent already uses this Service Principal. Create a second Service Principal in 3CX for this agent; two agents on one extension would both answer every call.

Using it with the other transfer tools

The receptionist covers “can I speak to someone”. Keep Blind Transfer or Attended Transfer on the same agent for fixed destinations that are not in the directory — a mobile, an after-hours number, an outside contractor — and Take a Message for when nobody can take the call. All can be on at once.

Webhooks

Connect your agents to anything with a web address — your CRM, booking system, spreadsheets or an automation platform like n8n.

Build a webhook tool by hand

The Webhooks tab. The n8n Wizard button is the guided route; Create Webhook Tool is the manual one.
The Webhooks tab. The n8n Wizard button is the guided route; Create Webhook Tool is the manual one.

Webhook tools are custom tools you create that call an external system — your CRM, your booking system, or an automation platform like n8n, Make, or Zapier. During a call, the agent gathers what it needs from the caller and fires the request; the answer comes back into the conversation.

The easy way — the n8n Wizard. If your automation lives in n8n, the blue n8n Wizard button on the Webhooks tab does the whole job in four steps: pick a recipe (capture a lead into your CRM, look up live information the agent speaks back, send the caller a follow-up message, log a support ticket and read back its reference, silently ping your team on Slack or Teams, append call details to a Google Sheet, a Cal.com calendar pair that checks availability and books appointments, a GoHighLevel pair that books appointments and manages your sales pipeline, or a custom one with your own fields), enter your n8n address, tick the agents that should use it, and click Create. The wizard builds the webhook tool and hands you a matching n8n workflow file to import — the address, security key, and field names are baked into both sides so they always fit. In n8n you just activate the imported workflow and swap the red REPLACE ME node for your real action (your CRM, your email sender, your database). You can re-download the file any time from the n8n button on the tool’s card. The manual form below is still there for everything else.

ℹBuilt-in guardrails (on by default): wizard tools are protected against the classic AI slip-ups without any setup. A booking tool refuses to book until an availability check has actually run in the same call; one-shot actions (booking a slot, sending a follow-up, saving a lead, logging a ticket) won’t silently fire twice with the same details — the agent is told it’s already handled; and if a required field is still blank the tool doesn’t fire at all — the agent is coached to ask the caller for it first. These guards apply to voice calls, website chats, and SMS alike. The blank-field guard is controlled by each parameter’s Required tickbox — required means enforced, so only tick it on fields the call genuinely can’t proceed without.
  • Function Name: what the agent calls the tool (e.g. lookup_order) — lowercase letters, numbers, and underscores. Keep it short and descriptive.
  • Description: a plain-English sentence about what the tool does — this is how the AI decides when to use it, so make it clear.
  • Webhook URL: the web address to call (an n8n, Make, or Zapier webhook, or your own API endpoint).
  • HTTP Method: POST, GET, PUT, PATCH, or DELETE — whichever your endpoint expects (your integration platform will tell you).
  • Custom Headers: extra request headers, typically for authentication keys.
  • Parameters: the pieces of information the agent should collect and pass along — each with a name, a type (String for text, Number, Boolean for yes/no, Array for a list, or Object for structured data), a description, and whether it’s required. The description is read by the AI every time it fills the tool in, so say exactly what you want and in what format (e.g. “Appointment date in YYYY-MM-DD format”) — good descriptions are the biggest single fix for wrongly filled tools. Required is enforced, not just a hint: if a required field is still blank, the tool won’t fire at all — the agent is coached to ask the caller for it and only sends once it has an answer. Leave fields the call can proceed without as not required, or the agent will hold the conversation until it collects them. Example: a required order_number guarantees the agent gets the caller’s order number before the request ever fires.
  • System Parameters: toggles that automatically attach call context to every request — the caller’s number (caller_phone), the number they dialled, call direction and duration, the agent’s name, the conversation transcript or just the last message, and the date/time. Turn on only what your endpoint actually needs.
  • Timeout (seconds) & the “Allow agent to speak while waiting for response” option: how long to wait for the endpoint before giving up (default 30), and whether the agent may keep talking naturally while it waits instead of going silent.

Webhook tools — the advanced sections

The rest of the webhook popup is optional polish. The defaults are fine to start with; come back when you want tighter control:

  • Response Handling: Response Path picks out just the useful part of the endpoint’s reply (e.g. $.data.message) instead of dumping the whole response on the agent; Error Message Path does the same for error replies; Success Condition defines what counts as success (e.g. $.status == 'success') so the agent knows whether the action worked.
  • Error Handling: Speak On Error is the exact sentence the agent says if the tool fails; Speak On Delay plus Delay Threshold (seconds) give the caller a “bear with me…” line when the endpoint is slow; Retry Count, Retry Delay (ms), and Retry On Status Codes quietly retry temporary failures before giving up.
  • Rate Limiting: Max Calls Per Minute (across all calls) and Max Calls Per Session (per call) stop a confused agent — or a malicious caller — from hammering your endpoint. Empty means no limit.
  • Authentication: the Auth Type dropdown handles the common login styles without you hand-crafting headers — Bearer Token (sends Authorization: Bearer …), Basic Auth (a username and password), or API Key (Header) (your key in a header you name, e.g. X-API-Key — leave Header Name blank to use that). The key box has three buttons: Show (the eye) reveals the key, Copy puts it on your clipboard, and Generate makes a strong random key — copy it into whatever checks it (for n8n: the Webhook node’s Header Auth credential, with the same header name), then Save. If a key is already there, Generate asks first, because whatever uses the old key will reject calls until you update it; for a tool made by the n8n Wizard, re-download and re-import its workflow after saving. The Test button and real calls send exactly the same authentication, so a passing Test means calls will authenticate too.
  • Availability: restrict when the tool exists at all — Available From / Until (Time) with a Timezone makes a tool office-hours-only (outside those hours the agent simply doesn’t have it), and Available When (Condition) can gate it on call context.
  • Testing / Mock Mode: tick Enable Mock Mode and fill in Mock Response (JSON) to have the tool return a canned answer instead of calling the real endpoint — perfect for testing the conversation before the real system is ready. The Test button at the bottom of the popup fires a real (or mock) request immediately so you can check the plumbing.
ℹWhat happens automatically with authentication:
  • If you also add a Custom Header with the same name as the auth header (any capitals), the Auth Type setting wins and the header is sent once.
  • If an Auth Type is chosen but no key, token or password is filled in, the request still goes out without one (your endpoint will usually refuse it) — the Test result shows an orange Authentication line saying why, and the agent log adds a warning on every call.
  • If a stored key or token contains characters a web request can’t carry (for example a curly quote or an accented letter pasted from a document), the tool doesn’t send the request at all: the call gets the Speak On Error line and the tool’s log says authentication is misconfigured. Re-paste the key as plain text to fix it. Basic Auth passwords are never affected.
  • API Key (Query Param) has been removed — it never sent a key for webhook tools. A tool still set to it (or to any other type the form doesn’t offer) opens showing None with an orange note; saving stores None, which is what it was effectively doing. Pick API Key (Header) if your endpoint needs a key.

Walkthrough: your first webhook tool (order lookup)

  • Step 1: in your automation platform (n8n, Make, Zapier) create a workflow that starts with a webhook and looks up an order in your system. Copy its webhook URL.
  • Step 2: Tools page → create a webhook tool: Function Name lookup_order, Description “Looks up the status of a customer’s order by order number”, paste the URL, method POST.
  • Step 3: add one Parameter: order_number, type String, required, description “the customer’s order number”. Turn on the caller_phone system parameter if your workflow wants it.
  • Step 4: set Speak On Error (“I’m having trouble reaching our order system…”) and click Test — fix any plumbing now, not during a live call.
  • Step 5: assign the tool to your agent, and add a line to its Tool Usage Instructions: “When a caller asks about an order, ask for their order number and use lookup_order.”
  • Step 6: prove it in the Agent Tester — ask about an order and watch the tool call and its response appear in the transcript.

The n8n Wizard

The n8n Wizard has its own tab on the Tools page (the blue button on the Webhooks tab opens the same thing). The tab shows every recipe as a tile; click one and the wizard opens with it chosen. It builds both halves of a connection in four steps: 1. Use case (pick one of the options below), 2. Details (the tool’s name, one sentence saying when the agent should use it, and your n8n address), 3. Agents (tick the agents that should get the tool — you can also do this later on the Agent Tool Assignments tab) and 4. Finish (click Create). The finished screen shows the address your workflow will answer at, a Download n8n workflow button and a Test connection button.

  • Tool name: lowercase letters, numbers and underscores, e.g. save_lead. The AI refers to the tool by this name.
  • What is it for, and when should the agent use it?: one sentence. This matters more than anything else in the wizard — the AI reads it to decide when to use the tool. The wizard turns it into a usage instruction and adds it to the Tool Usage Instructions of every agent you tick.
  • Your n8n address: the address you open n8n at, not a workflow URL. For n8n Cloud it looks like https://yourname.app.n8n.cloud.
ℹWhat happens automatically: the tool is live in the dashboard as soon as you click Create, but it does nothing on calls until you import and activate the downloaded workflow in n8n (n8n → new workflow → ⋯ menu top right → Import from File…, then the top-right Active toggle). The file contains the tool’s secret key — don’t share it. Every wizard tool sends the call’s details (caller number, date and time, transcript…) with each request; untick what your workflow doesn’t need on the tool card → Edit → System Parameters.
Step 1 of the n8n Wizard — pick the job, and it builds the tool and the matching workflow.
Step 1 of the n8n Wizard — pick the job, and it builds the tool and the matching workflow.

Caller lookup (who is calling)

The one recipe that creates no tool: it feeds the built-in lookup_caller tool, which sends the caller’s number to this workflow the moment a call connects so the agent can greet them by name with their booking or account details. Pick the agent, paste your n8n address, click Create: the workflow’s address and secret are saved into the tool’s settings and the tool is switched on for that agent. Then import the download, replace the Look up the caller (REPLACE ME) step with your own lookup, publish, and press Run Test on the Tools page. The full guide, including what the workflow receives and must send back, is under Tools → Know who is calling before you say hello.

Lead capture / CRM push

The agent collects the caller’s name and contact details and sends them to your CRM, a spreadsheet, or anywhere n8n can reach. Use it for callback requests, quote requests and new enquiries.

  • What the agent collects: name (required — the agent always asks for it first), phone, email and notes (one or two short sentences on what the caller wants), all optional. It reads phone numbers back digit by digit and confirms the spelling of email addresses, and never invents a detail the caller didn’t give.
  • What the agent says: “Just a moment while I save your details…” while it runs. If it fails: “I wasn’t able to save your details just now, but I’ve made a note to have someone follow up with you.” It never tells the caller the details are saved until the tool has succeeded.
  • In n8n: replace the red REPLACE ME node with your CRM node (HubSpot, Pipedrive, Google Sheets, an HTTP Request…).

Live data lookup

The agent asks your n8n a question mid-call — order status, opening hours, stock levels — and speaks the answer back to the caller.

  • What the agent sends: query (required) — what the caller wants to know, in plain words.
  • What comes back: your workflow returns a result; the agent speaks it as a natural sentence (never raw data or internal IDs). If the lookup fails it apologises and offers a follow-up — it never guesses an answer.
  • What the agent says: “One moment while I look that up for you…” while it runs. If it fails: “I’m sorry, I couldn’t look that up right now. Is there anything else I can help with?”
  • In n8n: replace REPLACE ME with your data source (a database node, an HTTP Request to your API, a Google Sheets lookup…) and return the answer as result.

Send follow-up message

The agent triggers an SMS or email to the caller — a booking confirmation, a price list, an information pack — through whichever sender you connect in n8n.

  • What the agent sends: info_requested (optional) — what the caller asked to be sent. The caller’s number comes with the call details automatically. The agent confirms what the caller wants before sending, and sends it once per call unless asked again.
  • Chatbots: not offered for chatbot agents in step 3 — it sends to the caller’s phone number, which website visitors don’t have.
  • What the agent says: “One moment while I arrange that for you…” while it runs. If it fails: “I couldn’t send that just now — I’ll make sure someone follows up with you instead.”
  • In n8n: replace REPLACE ME with your SMS or email node (Twilio, SendGrid, Gmail, an HTTP Request to your sender…).

Custom workflow

Define your own fields for the agent to collect and send to n8n — the flexible option for anything the other recipes don’t cover.

  • Fields the agent should collect: one row per field — a name (e.g. attendee_name), a type (text, number, yes/no) and a short description of what the AI should put there (this helps accuracy). Tick required only when the tool genuinely can’t run without it — a required field the caller won’t give stops the tool firing. Add field adds another row.
  • My workflow sends information back for the agent to speak: switch on if your workflow returns an answer (like a lookup); leave off for fire-and-forget actions (saving a record, sending a message).
  • What the agent says: “One moment please…” while it runs. If it fails: “I’m sorry, I couldn’t complete that just now.” Both can be reworded on the tool card → Edit.
  • In n8n: replace REPLACE ME with whatever node does the work (an HTTP Request, a database node, your app’s node…).

Create support ticket

The agent logs the caller’s problem in your help desk and reads them the ticket reference. For tracked issues that need follow-up — not for simple callback messages.

  • What the agent collects: issue_summary (required — one or two sentences on the problem), customer_name and urgency (one of low, normal, high, urgent — normal if unsure), both optional. It logs at most one ticket per call unless the caller reports a clearly separate second issue, then reads back the reference your help desk returns.
  • What the agent says: “One moment while I log that for you…” while it runs. If it fails: “I couldn’t log the ticket just now — I’ll make sure the team hears about this another way.”
  • In n8n: replace REPLACE ME with your ticketing node (Zendesk, Freshdesk, Jira, HubSpot Tickets, or an HTTP Request to your help desk) and return the ticket reference.

Notify the team

A silent ping to Slack, Teams or SMS mid-call — an upset caller, an important customer, an urgent problem. The caller never knows.

  • What the agent sends: message (required) — a one-sentence heads-up for your team about this call.
  • How it behaves: the agent says nothing before or after using it, never tells the caller it’s alerting anyone, and uses it at most once per call.
  • What the agent says: nothing — there’s no waiting line, so the conversation carries on uninterrupted. If the alert fails the agent simply continues and doesn’t mention it.
  • In n8n: replace REPLACE ME with your Slack, Microsoft Teams or SMS node.

Log to Google Sheets

Appends call details to a spreadsheet as a new row — the no-CRM option. Every field the tool sends becomes a column you can map.

  • What the agent sends: details (required — one short sentence in the caller’s own words) and category (optional — one of enquiry, order, complaint, feedback, other). It logs once per topic, not once per sentence, and doesn’t read the entry back unless asked.
  • What the agent says: “One moment…” while it runs. If it fails: “I couldn’t save that just now, but I’ve made a note of it.”
  • In n8n: replace REPLACE ME with a Google Sheets Append Row node and map each field to a column.

Calendar booking (Cal.com)

Creates two tools from one name — a check-availability tool (<name>_check) and a book-appointment tool (<name>_book) — wired to your Cal.com account through n8n, plus two matching workflow files.

  • Check availability: the agent sends booking_date (required, YYYY-MM-DD) and booking_time (optional, as the caller said it, e.g. “2pm”), and speaks the free times that come back.
  • Book: the agent sends name, email (spelling confirmed), booking_date and booking_time, all required — only after checking availability and after the caller has confirmed the exact date and time.
  • Built-in guard: the book tool refuses to book until the check tool has actually run in the same call.
  • What the agent says: “One moment while I check the calendar for you…” and “One moment while I book that in for you…”. If either fails, the agent offers to take the caller’s details and have the team confirm.
  • In n8n: import both files as two separate workflows and paste the same Cal.com API key and event type ID into each one’s Config node — if the event type IDs differ, the agent checks one calendar and books another. Then activate both.

GoHighLevel appointments & sales

The GoHighLevel appointments & sales tile creates two tools from one name prefix (e.g. ghl_check and ghl_book) and hands you two matching n8n workflow files. The check tool tells the caller which times are free in your GHL calendar; the book tool creates the contact, books the appointment, and creates a new sales opportunity in your pipeline — or advances an existing one to your “booked” stage.

  • Step 1 — run the wizard: Tools → Webhooks → n8n Wizard → GoHighLevel appointments & sales. Enter a name prefix (e.g. ghl), your n8n address, tick your agents, click Create, and download both workflow files.
  • Step 2 — import into n8n: import each file as its own workflow (three dots → Import from File…).
  • Step 3 — connect your GHL account: in each workflow, open the GoHighLevel nodes and pick (or create once) your HighLevel account credential. n8n’s HighLevel credential uses a GHL Marketplace app — n8n’s credential screen links to the exact setup steps.
  • Step 4 — paste your IDs: each workflow’s sticky note lists exactly which placeholders to replace and where to find each value in GHL — the Calendar ID (use the SAME calendar in both workflows), and in the booking workflow the Location ID (Settings → Business Profile), Pipeline ID and booked Stage ID (Opportunities → Pipelines).
  • Step 5 — activate both workflows (top-right toggle in n8n), then use the wizard’s Test connection buttons and make a test call: ask for a time, hear the real availability, and book it. Check the appointment and the opportunity appeared in GHL.

What happens automatically: appointments are booked for 30 minutes (the sticky note shows the one line to change for longer slots); every booking creates the opportunity under your pipeline’s booked stage, or advances an existing opportunity for that phone number; and the agent only ever says “booked” when GHL really returned an appointment — if anything is mis-configured the caller hears an honest “let me take your details and have the team finalise it” instead. The optional Customize Opportunity Fields node can also stamp your GHL custom fields on each opportunity; until you configure it (field IDs + a Private Integration Token credential) it is simply skipped and bookings still work.

Don’t rename the workflows’ nodes or the tools’ parameters — the pieces reference each other by name and renaming breaks every call. And keep the same Calendar ID in both workflows, or the agent will check one calendar and book into another.

SIP Trunks

The carrier connection your calls travel over.

A SIP trunk is the link between the phone network and your agents. Yours is already set up — it was created with your account, along with your phone number and dispatch rule. For most clients this page is just somewhere to confirm the connection exists.

SIP Trunks page showing the inbound trunk with the Setup Wizard and Create Trunk buttons
Your carrier connection, set up for you. The Setup Wizard button is top right.

Setup Wizard — bringing your own carrier

If you already have phone numbers with another provider and want to use them with your agents, you don’t have to move them. The Setup Wizard button walks you through connecting your existing carrier instead. It creates the inbound trunk, the outbound trunk and the dispatch rule for you in one go.

SIP Provider Setup Wizard step 1 showing provider choices including Tronic Cloud, Breeze Connect, Twilio, Telnyx, Vonage, Plivo, Cloudonix and Vobiz
Step 1 — pick your provider. Tronic Cloud is the recommended, pre-configured option.

The wizard has six steps:

  1. Provider — choose from Tronic Cloud, Breeze Connect, Twilio, Telnyx, Vonage, Plivo, Cloudonix or Vobiz, and give your trunks a name.
  2. Portal Setup — what to collect from your provider before continuing, with a link straight to their portal and a full setup guide.
  3. Credentials — the username and password your provider issued you.
  4. Allowed IPs — which addresses may send calls to you.
  5. Numbers — the phone numbers you want to bring across.
  6. Confirm — review, then create.

Breeze Connect

If you’re a Breeze Connect customer, choose Breeze Connect at step 1 to use your existing trunk and numbers. Most of the configuration is filled in for you — you only need the username and password Breeze Connect issued you, plus your assigned numbers. Step 2 gives you two links: Open Breeze Connect Portal to fetch those details, and Open full setup guide for the complete walkthrough.

Setup Wizard step 2 for Breeze Connect showing required credentials and the portal and setup guide links
Step 2 lists exactly what to collect, and links to the Breeze Connect portal and the full setup guide.
📚Full Breeze Connect instructions. For the complete step-by-step on connecting a Breeze Connect trunk to your dashboard — including what to set up at the Breeze Connect end — see troniccloud.com.au/breeze. That’s the same guide the Open full setup guide button opens from step 2 of the wizard.
⚠You don’t need this for your Tronic Cloud number. The wizard is only for connecting a carrier account you already hold elsewhere. Your Tronic Cloud number works out of the box.

Dispatch Rules

The routing that decides which agent answers which number.

A dispatch rule is the link between a phone number and an agent: “calls to this number are answered by that agent.” One was created for you when your account was set up — you just need to point it at the agent you want (see Step 6).

Dispatch Rules page listing rules with their numbers and assigned agents
Each rule connects a number to an agent. Click the pencil to change which agent answers.

In the edit dialog you’ll find:

  • Agent Name — which agent answers calls on this number.
  • Auto-Record Calls — whether calls on this number are recorded.

Changes take effect on the next call — there’s nothing to restart.

📞Number rings but nothing answers? The rule is almost certainly pointing at an agent that isn’t running, or at a different agent than you think. Open the rule, confirm the agent, then confirm that agent shows RUNNING on the Voice Agents page.

Phone Numbers

The number (or numbers) connected to your account.

Your Australian number was assigned when your account was created and appeared in your welcome email. This page is where to find it again, and the copy icon beside it puts it on your clipboard.

Phone Number Inventory page showing the assigned number
Your number(s). This is what callers ring to reach your agent.

Need another number, or one in a different area code? Email support@tronic.com.au and we’ll add it to your account. If you already own numbers with another carrier, the Setup Wizard can bring those across instead.

Campaigns

Outbound auto-dialing — give an agent a contact list and it calls everyone for you.

💰Campaign calls cost the same as any other call, and there are a lot of them. A hundred-person list is a hundred calls coming off your balance, and it will run until the list is finished or your credit runs out. Do a short test list first, check what it cost on Call Charges, then work out what the full run will come to before you start it.
⚖Read this before your first campaign. Ringing people who did not ask to be rung is regulated in Australia. Two things apply to almost everyone: you must not call numbers on the Do Not Call Register unless you have the person’s consent or an existing relationship with them, and there are rules about when you may call — broadly, weekdays between 9 am and 8 pm, Saturdays between 9 am and 5 pm, and not at all on Sundays or public holidays. Your agent must also say who is calling and why. The rules are set by ACMA and the penalties are real, so check your own obligations before you load a list. This page will happily ring whatever you give it — deciding that you’re allowed to is your job, not the software’s.

A campaign automatically dials a list of contacts using a chosen outbound trunk and agent. The system paces the calls, tracks the outcome of every number, and lets you retry the ones that didn’t answer. Typical uses: appointment reminders, follow-ups, surveys, and sales outreach.

The Campaigns page before you have made one.
The Campaigns page before you have made one.

1 Create the campaign

The Create Outbound Campaign form — who calls, how fast, when, and who gets called.
The Create Outbound Campaign form — who calls, how fast, when, and who gets called.
  • Campaign Name: a descriptive label (e.g. “March Reminder Calls”).
  • SIP Trunk: the outbound trunk to dial through. It must have a valid caller ID number configured.
  • Agent: the agent that handles every call in this campaign.
  • Concurrent Calls: how many calls run at once (choose 1, 2, 3, 5 or 10). More is faster but harder on your system and your carrier.
  • Delay Between Calls: the pause before each new call starts — anywhere from 3 seconds up to 15 minutes.
  • Operating Hours — Restrict calls to specific hours: tick this and set a Start Time, End Time, and Timezone (your contacts’ timezone, not yours!) and the campaign only dials inside that window — it pauses itself outside the hours and resumes the next day until the list is finished. Strongly recommended: it’s what stops a big campaign from ringing people at 9 pm.
💡Start small. Run your first campaign with 1–2 concurrent calls and a short test list. Listen to the first few calls in Call History, tune the agent, then scale up.

2 Add contacts — by hand or CSV

Manual entry: add contacts one at a time. Only the phone number is required — enter it with the country code and no + sign (e.g. 61412345678). A number must be 8 to 15 digits including the country code; anything shorter or longer is skipped and never dialled. On a PBX trunk the phone column holds extensions, queue numbers or names instead (for example 101, queue302, reception — letters, digits, dot, underscore and hyphen only). The optional fields (Name, Company, Description, Job Title, and two custom fields) feed the personalisation variables below.

CSV import: upload a .csv file (not Excel .xlsx) for big lists. With a header row, columns can be in any order using these exact names: phone, name, company_name, company_description, job_title, custom_field_1, custom_field_2. Without a header row, the columns must appear in exactly that left-to-right order. Only phone is required.

⬇ Download the CSV template — a ready-made file with the header row and three example contacts (one with only a phone number and name, to show that the other columns can be left blank). Open it in Excel, Google Sheets or Numbers, replace the example rows with your own contacts, save it as .csv and upload it. The same link sits under the upload box on the Campaigns page.

⚠Two things that trip people up. If you type the file by hand in a text editor, don’t put a comma inside a value (write Smith and Co, not Smith, Co) — an unquoted comma starts a new column. Files saved from Excel or Google Sheets quote such values for you, so they are fine. And in Excel, set the phone column to Text before typing or pasting numbers — otherwise Excel can show a long number as something like 6.14E+11 and save it that way, which breaks it.

3 Personalise every call with variables

Put these placeholders anywhere in the agent’s System Prompt and each call fills them with that contact’s real data:

  • {{Name}}: the contact’s name — “Hi {{Name}}, how are you?”
  • {{CompanyName}} and {{CompanyDescription}}: their company and a line of context about it.
  • {{JobTitle}}: their role.
  • {{CustomField1}} and {{CustomField2}}: anything you like — account numbers, appointment dates, product interest.
  • {{user_number}}: the number being dialled.

4 Schedule and run

  • Start Immediately: dialing begins as soon as you save.
  • Save as Draft: the campaign sits in Idle until you press Start.
  • Schedule for Later: pick a date and time; the campaign starts itself.

Status badges tell you where things stand: Idle (created, not started), Scheduled, Running, Paused (can resume), Completed, or Cancelled (permanently stopped).

5 Track results and retry

The progress bar colours each contact’s outcome: green (answered/completed), red (failed), yellow (no answer). Click the eye icon for the detailed per-contact call log. A number that rings out is marked No answer; a busy line, a declined call or one the carrier could not connect is marked Failed with the reason shown against it (for example “Line busy or call declined”). Both are redialled by Retry Failed. After a campaign finishes:

  • Retry Failed: redials only the numbers that failed or didn’t answer.
  • Export Results: downloads a CSV of every contact with the outcome of their call — see What’s in the export below.
  • Delete: removes a completed or cancelled campaign and its data.

What’s in the export

One row per contact, in this order:

  • Contact columns: phone, name, company_name, company_description, job_title, custom_field_1, custom_field_2 — exactly as you uploaded them.
  • Outcome columns: status (completed, no_answer, failed, voicemail, transferred…), called_at (when the call ended), duration in seconds, and error (why a call failed). The campaign’s operating hours follow if it has them.
  • One extracted_… column per Data Extraction field on the campaign’s agent (Voice Agent editor → Advanced tab → Data Extraction Fields). A field named vehicle becomes the column extracted_vehicle, filled with what the AI summary picked out of that call. A field that collected several answers lists them separated by ;.
  • summary — the short AI summary of the call.
  • transcription — the whole conversation, one line per turn. It is the last column on purpose: it is long, and everything you usually filter on sits to its left.
ℹOpens cleanly in Excel. The file is marked as UTF-8, so other languages (Hindi, Malayalam, Arabic, accented names) and symbols show correctly when you double-click it. Phone numbers are written so Excel and Google Sheets keep them as text — no 6.14E+10, no lost leading 0. In a plain text editor those numbers look like ="61412345678"; that is normal, and you can upload the file again as a new campaign without changing it.
⚠Extracted columns are empty for calls summarised before the field existed. Data Extraction runs when a call’s AI summary is made, so add your fields before starting the campaign. For a call that was already summarised, open it in Call History and press Regenerate on the summary (this costs one AI summary), then export again. A call with no summary yet (still being written, or AI Summary is off) has empty summary and extracted_… cells.
⚠Call responsibly. Schedule campaigns during appropriate hours for your region, and make sure your list and message comply with local telemarketing rules.

Agent Tester

Talk to your agents right in the browser — no phone call, no cost of a real line.

💰Test sessions are charged. A test uses the same AI services as a real call, so it draws on your credit the same way. The amounts are very small — typically a fraction of a cent for a short text test — but they do appear in your Call History and Call Charges, marked as tests.

The Agent Tester is the quickest way to try out an agent while you build it. Chat with it by text, or hold a full voice conversation through your computer’s microphone. It works for both voice agents and chatbot agents.

The Agent Tester — pick an agent, choose Text or Voice, then Connect.
The Agent Tester — pick an agent, choose Text or Voice, then Connect.
⚠Voice agents must be started first. The tester talks to the live agent, so a voice agent needs the green “Running” badge on the Voice Agents page before it will respond here. Chatbot agents need to be Enabled on the Chatbot Agents page. If you connect and hear nothing, that’s the first thing to check.

1 Select an agent

The Select Agent dropdown lists your agents in two groups — Voice Agents and Chatbot Agents. Pick the one you want to test.

2 Choose Text or Voice mode

  • Text Mode: type messages and read the agent’s replies. Fast, silent, and great for testing prompts, tools, and knowledge lookups without saying a word.
  • Voice Mode: a real spoken conversation through your microphone — the agent replies in its configured voice. Your browser will ask for microphone permission the first time. Voice mode is available for voice agents and full-voice chatbots; text-only chatbots test in Text mode only (the Voice toggle greys out for them).
⚠Text mode does not test your speech settings. When you test by typing, the agent never listens and never speaks — so your speech-to-text provider, voice, VAD, turn detection and noise cancellation are not used at all. This catches people out: if you have just switched to a new speech-to-text engine or a new voice, testing by typing will tell you nothing about it, and hearing no audio does not mean the new provider is broken. Switch to Voice Mode to test anything on the speech side. The tester shows a yellow reminder above the chat whenever you are in text mode.

3 Connect and talk

Click Connect. The connection status changes as the test session starts, and the agent greets you just like it would a real caller. Everything you say (or type) and every reply appears in the transcript, and every tool the agent uses shows up in the Debug panel (step 6) — so you can see exactly what it did and why. Click Disconnect when you’re done.

A few small controls on the left panel are worth knowing:

  • Connection status: the dot-and-text indicator below the Connect button — it moves from Disconnected through connecting to connected, so you can tell a slow start from a failed one.
  • Voice Settings — Microphone / Speaker: in Voice mode, pick which of your computer’s microphones and speakers the test uses (handy with headsets). Default uses whatever your browser prefers; your choice is remembered for next time.
  • Mute button & connection quality bars: while connected in Voice mode you can mute your own mic mid-test, and the signal bars show the connection quality between your browser and the server — if the agent sounds choppy but the bars say Excellent, the problem is the agent, not your network.
  • Connected to / Room: shows which agent you’re actually connected to and the internal session name.

4 The per-test LLM override (voice agents, Text mode)

When testing a voice agent in Text mode, a Text Chat Settings panel lets you pick which LLM Provider and Model processes your messages for this test only — without changing the agent’s saved configuration. It’s a cheap way to answer “would this agent behave better on a different brain?” before committing. The agent’s backup models are only used when the model you pick is the agent’s own main model (and its backup switch is on); any other model you pick is tested on its own. If the main model fails and a backup answers, the Debug panel shows a Backup model line saying so.

ℹChatbot agents are different: they always use the model configured in their own editor (including their fallbacks). Instead of an override, the tester simply shows you which model that is.

5 Testing chatbot agents

Chatbot test sessions run the exact same pipeline as the website widget — same prompt, tools, knowledge base, and welcome message — but in a throwaway session: nothing is saved to Chat History. Be aware that the chatbot’s tools (webhooks, SMS sends) do run for real during a test, exactly as they would for a website visitor.

6 The Debug Panel

The panel on the right shows a live feed of technical events — connection status, participants joining, audio tracks, data messages, and transcriptions. You can ignore it day to day, but when an agent misbehaves it’s a goldmine: it shows whether your words were heard correctly and whether the agent actually responded. Voice mode also shows a live Microphone level meter so you can confirm your mic is working.

Tool activity

Every time the agent uses one of its tools during a test — checking a calendar, booking an appointment, calling a webhook, searching the knowledge base — a line appears in the Debug panel. This works in both Text and Voice mode, for voice agents and chatbots.

  • 🔧 tool name ✓ (green): the tool ran and reported success. The line shows how long it took and the start of what came back.
  • 🔧 tool name ✗ failed (red): the tool reported a problem. The text after the dash is the reason the tool (or the service behind it) gave — the same message the agent received.
  • Details: click to expand what the agent sent to the tool (for example the name, email and time it tried to book) and the full result.
  • “no reply text — the tool ended the turn”: normal for tools such as hang up or a transfer, which finish the conversation rather than returning an answer.
ⓘExample. A Cal.com booking that keeps failing shows a red line such as “cal_book ✗ failed — Event type … requires attendee address as the location”. That message comes from Cal.com, and it tells you the fix is in your Cal.com event type settings (its Location), not in the agent.
⚠Good to know. Very long results are shortened (the first 1,500 characters are shown). Red relies on the tool reporting that it failed — a tool that only describes a problem in plain words can still show green, so read the result. These lines appear only in the Agent Tester: real callers and website visitors never receive them, and anyone allowed to use the Agent Tester can see them, just as they can see the conversation.

Which testing tool, when?

  • Agent Tester (this page): while you’re building — make a change in the editor, talk to the agent, adjust, repeat. Instant and interactive.
  • A real phone call: the final check — only a real call exercises your SIP trunk, caller ID, and true phone audio quality. Always make one before going live.

Analytics — your home page

The first page you see after logging in: charts and figures for everything your agents have been doing.

The Analytics page (click Analytics in the sidebar, or the logo) shows your call volumes, costs, response speeds, AI insights. Everything on the page respects the date range you pick at the top.

The Overview page. The highlighted tab strip switches between different views of the same period.
The Overview page. The highlighted tab strip switches between different views of the same period.

The controls at the top

  • Date Range dropdown: choose the period the whole page reports on — Today (the default, and the fastest to load), Last 2 days, or the last 7 / 14 / 30 / 60 / 90 days.
  • Custom range…: the last item in the dropdown. A small picker appears with From and To date boxes — pick any two dates up to 90 days apart and click Apply. Click Cancel, press Escape, or click outside the picker to close it without changing anything. Once applied, every chart and the Export button use exactly those dates. The picker opens already filled in with the range you were looking at, so switching from Last 7 days to Custom starts from those 7 days.
  • Auto-refresh toggle: turn this on to have the page update itself automatically every 30 seconds, 60 seconds or 2 minutes — handy on a wall screen in the office.
  • Export: downloads the data from whichever tab you’re currently on, for the selected date range, as a CSV file (opens in Excel) or JSON (for technical use). Works on every tab.

Overview tab

The at-a-glance summary. Key figures include Room Connection Rate, Estimated Cost, Answer Rate, Active Rooms, Calls Today and Running Agents, plus rolled-up numbers from the other tabs such as Trunk Status, SIP Success Rate, Total Calls, Total Minutes, Average Duration and Average Sentiment. Below the cards you’ll find a Success Status Breakdown pie chart — Success (the call connected and ended normally) against Failure (it failed, went unanswered or lasted 0 seconds) — and a Call Trends graph. If something looks off anywhere in the system, this tab usually shows it first.

Calls & Rooms tab

Everything about call volume and outcomes:

  • Volume & outcomes: total calls, answer rate, call volume trends, and outcomes (completed / transferred / missed / failed).
  • Direction: inbound vs outbound split.
  • When calls happen: hourly distribution, Busiest Day/Hour, and a Call Distribution Heatmap — a day-by-hour grid where darker squares mean more calls. Great for deciding staffing or opening hours.
  • Talk time: a Talk Time Breakdown chart (total vs average per day), plus your Longest and Shortest calls in the period.
  • Rooms: real-time room analytics and historical room trends, including the Room Connection Rate.

Latency tab

How quickly your agents respond. The key measure is TTFB (“time to first byte”) — in plain terms, the pause between the caller finishing a sentence and the agent starting to speak. The tab shows the average and the P50 / P90 / P99 percentiles, a breakdown of where the time goes (speech recognition, the AI “thinking”, and voice generation), an hourly trend, and a per-agent comparison.

  • Under 500 ms: feels natural — like talking to a person. This is the target.
  • 500–1000 ms: a noticeable but acceptable pause.
  • Over 1000 ms: feels slow — callers start saying “hello? are you there?”. Worth investigating (often the AI model choice — see the FAQ).

AI Insights tab

What the AI learned from your conversations: the average sentiment score (how happy callers sound), sentiment distribution (positive / neutral / negative), the top topics people call about, pending action items extracted from calls, the interruption rate, and AI-classified call outcomes. The Call End Reasons breakdown shows who hung up — three bars: Customer Ended, Agent Ended and Other — with a detailed reason table.

Agents tab

Per-agent performance: total agents, agents active today, average success rate and your top performer, plus a table comparing each agent’s calls, answered count, success rate, minutes and average duration, and a calls-by-agent chart. Use this to spot an agent that’s underperforming compared to its siblings.

Media tab

Recording and streaming statistics. The Recording & Storage section shows active recording jobs, the recording success rate, a chart of recording types and how much storage you’re using. The Ingress/Streaming section covers active streams, connection quality, stream types and average bitrate.

Telephony tab

Phone-line analytics: total trunks, connection success rate, trunk status, how many dispatch rules you have, and call volume over your trunks, with quick links to manage trunks and dispatch rules.

ℹNote: the Telephony tab only appears once SIP telephony is enabled on your system. If you don’t see it, telephony hasn’t been set up yet.

Walkthrough: a five-minute weekly health check

  • Step 1 — Overview tab, range set to 7 days. Call volume trending the right way? Any day with a sudden dip (an outage?) or spike (something viral, or abuse)?
  • Step 2 — Calls & Rooms tab. Scan end reasons: a rise in errors or abandoned calls is the earliest sign something changed for the worse.
  • Step 3 — Latency tab. Response speed still mostly green (<500ms)? If it drifted up, the breakdown shows whether hearing (S), thinking (L) or speaking (T) got slower — that tells you which provider or setting to look at.
  • Step 5 — Media. Done — anything odd, drill into Call History for the affected day and read a few calls.

Call History — every call, kept and analysed

The full record of every call your agents have handled, with AI summaries, transcripts and response-speed stats.

Open Call History in the sidebar. Every finished call appears here automatically — phone calls, browser test calls, everything — usually within a minute of hanging up, once the AI has written its summary.

Call History — every call with its duration, cost and health score. Click any row for the full detail.
Call History — every call with its duration, cost and health score. Click any row for the full detail.

Finding a call — the filters

  • From Date / To Date: limit the list to calls between two dates.
  • Agent: show only calls handled by one agent (or All Agents).
  • Direction: Inbound (someone called you), Outbound (your system called them), or All Directions.
  • Status: filter by the review status on each call — e.g. Needs Review, Reviewed, Resolved, Flagged, Escalated, Callback, Agent Issue or In Progress.
  • Health: filter by the call’s health score (Excellent / Good / Fair / Poor / Critical / Not Scored) — a quick way to jump straight to the calls that went badly.
  • LLM Model: show only calls answered using a particular AI model.
  • Sort by: Newest first (default), or by cost — high to low or low to high.
  • Search: type a phone number or Call ID to find a specific call.

What each row shows

  • Time / Duration: when the call started and how long it lasted.
  • Call ID: the call’s unique reference — click it to copy the full ID to your clipboard (handy when reporting a problem).
  • From / To / Direction: the two phone numbers and whether the call was inbound or outbound.
  • Agent: which agent answered, with a small badge underneath showing the AI model that was used. A purple Test badge marks browser test sessions (billed, but excluded from analytics totals). An orange warning triangle means the caller was heard speaking in two or more turns but nothing was transcribed — usually the speech-to-text provider stalled mid-call (see below).
  • Cost: the call’s estimated cost, with a small badge explaining how it was worked out — actual (computed from real usage figures), est. (estimated from per-minute averages), or Legacy pricing (an older call whose cost was stored under the previous pricing model and is preserved unchanged). Click the column’s arrows to sort by cost.
  • TTFB: the call’s average response speed (see the Latency Metrics card below).
  • Health: the call’s health rating — Excellent / Good / Fair / Poor / Critical — a quick quality score based on response speed and technical warning signs during the call.
  • Transcript / Summary: small indicator icons that light up when the call has a transcript and an AI summary.
  • Status: the review status badge you (or your team) have set on the call — new calls show Needs Review.

Bulk actions & export

  • Checkboxes: tick individual calls, or use the header checkbox to select everything visible on the page.
  • Delete Selected: permanently removes the ticked call records (any recordings are left in place). There is no undo, so double-check before confirming.
  • Delete with Recordings: removes the ticked call records and their audio recordings in one go — also permanent.
  • Export Selected / Export Recent (CSV / JSON): download the ticked calls, or your most recent 100, 200, 500 or 1000 calls, as a spreadsheet-friendly CSV or a JSON file. Export Recent follows the agent, direction and date filters you have set. Each row includes the call details, AI summary, cost, notes, latency figures and the full transcript. The file is built in the background, so the rest of the dashboard keeps working while a big export is prepared. If your call history lives in S3 or Google Cloud Storage, a 1000-call export can take a little while because every transcript is fetched from the cloud.

Exporting everything — “Export all”

For more than 1000 calls, open Export and choose All matching calls — CSV or — JSON. The file contains every call that matches the agent, direction, date range and search filters you have set on the page (the health, model and sort filters are not applied), with exactly the same columns as the other exports. Set the filters first, then start the export.

  • It runs in the background: the progress window shows how many calls have been written so far and which day of your history it is working through. You can close the window and carry on using the dashboard — a notice at the top of the page shows the progress, and turns into a View export button when the file is ready. The notice also comes back if you leave the page and return.
  • Download: click Download in the window (or open it from the notice). The file is kept for 24 hours; starting another “Export all” on this page replaces it. Only the person who started an export can download it.
  • One export at a time: only one “Export all” runs on the dashboard at once. If someone else’s is running you’ll be asked to try again in a minute.
  • Size limit: up to 50,000 calls per file. Above that the export stops and asks you to narrow the date range — export a few months at a time instead.
⚠When an export doesn’t finish. If the history can’t be read from storage part-way through (for example a cloud-storage hiccup), the export stops with “Couldn’t read the history from storage” rather than giving you a file with gaps — just start it again. If the dashboard restarts (for example during an update) while an export is running, it shows as interrupted; start it again. If the page has been open for more than an hour, you may be asked to refresh it before starting an export.

The Latency Metrics card

Near the top of the page is a collapsible Latency Metrics card — click it to expand (the data loads when you open it). It shows how fast your agents have been responding across all calls:

  • Avg TTFB: the average pause between the caller finishing a sentence and the agent starting to speak.
  • P50: the middle value — half your calls responded faster than this, half slower. A good “typical” number.
  • P90: 90% of calls were faster than this — shows what your slower calls look like.
  • P99: 99% of calls were faster than this — catches the worst-case outliers.

The card also includes a doughnut chart splitting the delay between speech recognition, the AI model and voice generation, an hourly trend chart (with 24-hour / 7-day / 30-day views), and a per-agent comparison table. If calls slower than 1000 ms are detected, a warning appears — the target is under 500 ms for natural conversation.

Call detail — inside a single call

Click any call in the list to open its detail page: summary, transcript, recording, costs and more.

The call detail view — recording, per-component cost breakdown and response-time metrics.
The call detail view — recording, per-component cost breakdown and response-time metrics.

The page is split into tabs: Overview (details, recording, costs, health, status and notes), Conversation (the full transcript, with a message count on the tab), Summary (the AI’s analysis — a “Not generated” badge appears if it hasn’t been written yet, with a button to generate it, and Generating… while an attempt is running right now).

What you’ll find on the page

  • Possible STT stall: a yellow notice above the transcript when the caller spoke in two or more turns that were never transcribed, with how many seconds of speech went missing. It usually means the speech-to-text provider stalled. If the agent does not have STT Stall Recovery switched on, the notice links to the agent so you can turn it on. A single missed turn shows only a small grey note.
  • AI Call Summary: a plain-English write-up of the conversation — what the caller wanted, what happened, the caller’s intent, key information captured, action items, and an outcome classification.
  • Key topics: the subjects discussed, extracted automatically.
  • Reasoning tokens: when the agent’s model does hidden “thinking” (reasoning models), the LLM cost line shows how many of the output tokens were spent on it. It is informational — those tokens are already inside the output line, so nothing is charged twice.
  • End reason: the badge next to the duration says how the call ended — Hangup (someone hung up normally), Transfer, Max Duration, a silence timeout, or Error. Outbound calls that were never picked up show No Answer (the phone rang out), Busy (the line was busy or the call was declined) or Not Connected (the carrier could not connect it, or the call ended before it was answered). The agent ends these calls on its own as soon as the phone stops ringing, so they are short.
  • Answered by: on outbound calls made by an agent whose Outbound Call Detection uses LiveKit answering-machine detection, a badge next to the direction says who picked up — Person, Voicemail, Mailbox unavailable, Phone menu or Unknown. Hover it for the detail: how the verdict was reached, how long after the answer it was decided, and which action the agent took. Calls that used the classic method, and inbound calls, have no badge.
  • Caller Sentiment Journey: a small sparkline chart tracking the caller’s mood from the start of the call to the end, with a trend indicator (improving / stable / declining). A call that starts angry and ends happy is a win.
  • Interruption Analysis: estimates how often people talked over each other — “User interrupted AI” vs “AI interrupted User” counts, with a warning if the rate is high.
  • Transcript: the full conversation with speaker labels and timestamps, colour-hinted by sentiment. Long calls can be expanded and collapsed.
  • Tool calls (purple): when the agent used a tool during the call — hanging up, transferring, sending an SMS, checking the time — it appears inline in the transcript with purple styling, showing the tool’s name, what it was asked to do, and the result.
  • Recording playback: if the call was recorded (Auto-Record on the dispatch rule), a player appears on the Conversation tab so you can listen right on the page. The speaker button and slider at the right of the play button set the playback volume, and it goes well beyond a normal player: 100% is as loud as the recording can be made. Each side of the call is levelled on its own, so a quiet caller is brought up toward the agent instead of staying faint, and loud passages are rounded off rather than crackling. It starts at 70% every time you open a call (the level is not remembered); the speaker button mutes and unmutes.
  • Latency Breakdown: this call’s own response-speed figures — a visual bar splitting the delay between speech recognition, the AI model and voice generation, with percentiles and turn count.
  • SIP codec: for phone calls, the audio codec negotiated with your phone provider (e.g. G.711 µ-law, G.722 HD) — useful when diagnosing audio quality.
  • Agent Configuration: the Voice Pipeline this call actually ran — which speech-recognition, AI-model and voice providers were in play, or for a Realtime call the realtime provider and model — taken from the call’s own record, so changing the agent afterwards doesn’t change how its past calls look. Details the call record doesn’t keep (a realtime agent’s voice and language) are shown only while the agent still uses the same realtime provider and model, marked (current setting). Very old calls that didn’t record any of this show the agent’s current settings with a note saying so. LLM Used appears only when a backup model took over from the agent’s main one.
  • Call Cost: what this call cost, broken down by service, including any auxiliary costs (the AI summary, knowledge-base lookups and so on). The Effective rate line shows the cost per minute, and View per-model breakdown opens an itemised list of every model the call used and what each one cost. Calls from before per-model pricing was introduced carry a Legacy pricing badge — their stored cost is preserved unchanged.
  • Call Health: a score out of 100 with a rating (Excellent / Good / Fair / Poor / Critical) and a table comparing each component — response speed and other technical checks — against its threshold, so you can see exactly which check dragged the score down. Warning flags (e.g. slow responses) appear as small badges.
  • Call Status: set a review status on the call — Needs Review, In Progress, Reviewed, Flagged, Agent Issue, Callback Requested (with fields for the phone number, preferred time and notes), Escalated or Resolved. The page records who set it and when, and the Status filter on the list page uses these values.
  • Notes: add your own notes to the call — e.g. “followed up by phone 2pm” — so the team knows it’s been dealt with.
  • Agent Observability: where enabled, a technical timeline of everything the agent did during the call — each listening, thinking and speaking step with its timing. Mostly useful when diagnosing a slow or misbehaving call.
💡Tip: the detail page is the best place to understand why an agent behaved the way it did. Read the transcript, check the tool calls, then adjust the agent’s System Prompt if needed.

Walkthrough: investigate a bad call in five minutes

Someone says “the agent messed up my call this morning”. Here’s the routine:

  • Step 1 — find it. Filter by the agent and this morning’s date, or search the caller’s number. A red/unusual End Reason often flags the right row instantly.
  • Step 2 — read the summary first. The AI summary and sentiment give you the 20-second version of what happened before you commit to the full transcript.
  • Step 3 — read the transcript at the failure point. Find the turn where it went wrong. Was the caller misheard (the transcript shows wrong words)? Did the agent say something wrong (prompt problem)? Did a tool fail (check the tool calls and their results)?
  • Step 4 — listen if it’s a hearing problem. Play the recording next to the transcript. If the caller clearly said “Broadbeach” and the transcript says “broad bench”, that’s a speech-recognition fix: add the word to the agent’s vocabulary.
  • Step 5 — fix in the right place. Wrong words → Speech Recognition tab (vocabulary). Wrong behaviour → System Prompt. Tool error → the tool’s configuration or the external system it calls. Slow replies → check the call’s latency numbers and consider a faster model.

Chat History — your chatbot conversations

Every conversation your Chatbot Agents have had — on your website widget — kept and searchable, just like Call History.

Open Chat History in the sidebar. While Call History covers voice calls, this page covers text conversations handled by your Chatbot Agents: chats from the website widget.

Chat History — conversations from your website chat agents.
Chat History — conversations from your website chat agents.

Finding a conversation — the filters

  • From Date / To Date: limit the list to conversations between two dates.
  • Agent: show only conversations handled by one chatbot agent (or All Agents).
  • Media: filter by channel — Web (the website widget), Voice, or All channels.
  • Search: type an agent name or phone number to find a specific conversation.

What each row shows

  • Time / Duration: when the conversation started and how long it ran from first to last message.
  • Media: the channel badge — Web (website widget), or Voice (widget voice sessions).
  • From: who the conversation was with — a visitor reference for the website widget.
  • Agent: which chatbot agent handled it.
  • End Reason: how the conversation finished (for example the visitor closing the chat, a timeout, or an error) — colour-coded so problem endings stand out.
  • Cost: the conversation’s estimated AI cost.
  • Transcript / Summary: indicator icons showing whether the full transcript and an AI summary are available.
  • Rows per page: below the table — show 10, 20, 50 or 100 conversations per page.

Opening a conversation

Click a row to read the whole exchange — every message from the visitor and every reply from the chatbot, in order. Small cards at the top show the Chat Details (channel, agent, timing), the LLM (which AI model and any fallbacks were used), the Cost breakdown, and Metrics (average AI response time and the number of conversation turns). Where the AI has analysed the conversation you’ll also see a summary and analysis, the same way voice calls get one in Call History.

Recordings of full-voice web chats

When a chatbot has Record full-voice sessions switched on (Chatbot Agents → Voice tab) and the visitor tapped Agree, the conversation’s page shows a Recording card: an inline player, a download link, and a consent receipt (“Consent given at …” plus the exact notice the visitor saw). Rows with a recording carry a small red dot next to the Web badge. A recording that is still uploading shows “still being processed” for up to ten minutes after the chat ends.

The list is remembered for a few minutes between visits and refreshes in the background, so a return visit opens instantly; a brand-new conversation can take a moment to appear. Deleting a conversation removes it from the list at once.

Two delete buttons. Delete removes the conversation and its transcript only. Delete with recording (shown when a recording exists) removes the audio from storage first and the conversation only once the audio is confirmed gone — the same honest path phone calls use — and erases the consent receipt.

Bulk actions & export

  • Checkboxes + Delete Selected: tick conversations and delete them in one go. Deletion is permanent.
  • Export Selected / Export Recent (CSV / JSON): download the ticked conversations, or your most recent 100, 500 or 1000, as CSV or JSON, following the agent and date filters. Exports cover voice and web-call chats; text widget conversations are not included. The file is built in the background, so the rest of the dashboard keeps working while it is prepared.

Exporting everything — “Export all”

For more than 1000 chats, open Export and choose All matching chats — CSV or — JSON. The file contains every voice and web-call chat that matches the agent and date range filters on the page, with the same columns as the other chat exports. Text-widget conversations are not included. It works exactly like Call History’s Export all (see the screenshots there):

  • It runs in the background: the progress window shows how many chats have been written so far and which day of your history it is working through. You can close the window and carry on using the dashboard — a notice at the top of the page shows the progress, and turns into a View export button when the file is ready. The notice also comes back if you leave the page and return.
  • Download: click Download in the window (or open it from the notice). The file is kept for 24 hours; starting another “Export all” on this page replaces it. Only the person who started an export can download it.
  • One export at a time: only one “Export all” runs on the dashboard at once. If someone else’s is running you’ll be asked to try again in a minute.
  • Size limit: up to 50,000 chats per file. Above that the export stops and asks you to narrow the date range — export a few months at a time instead.
⚠When an export doesn’t finish. If the history can’t be read from storage part-way through (for example a cloud-storage hiccup), the export stops with “Couldn’t read the history from storage” rather than giving you a file with gaps — just start it again. If the dashboard restarts (for example during an update) while an export is running, it shows as interrupted; start it again. If the page has been open for more than an hour, you may be asked to refresh it before starting an export.
💡Tip: reading real chat transcripts is the fastest way to improve a chatbot — when you spot a question it handled poorly, add the answer to its Knowledge Base or tighten its System Prompt.

Recording / Egress — your call recordings

Where every recorded call lives: listen, download, delete.

📅Recordings are kept indefinitely. We don’t delete them on a timer, so a call from two years ago is still there to play back. You can still download any recording to keep your own copy — useful for a dispute, a complaint or a big order — and you can delete individual recordings yourself if you’d rather not keep them. See the FAQ for how long everything else is kept.

Open Recording/Egress in the sidebar. (“Egress” is the technical word for getting audio out of a call — think of this simply as the Recordings page.)

The Recording & Storage page — your saved recordings, ready to play or download.
The Recording & Storage page — your saved recordings, ready to play or download.

How do calls get recorded in the first place?

Recording is switched on per dispatch rule. New rules have Auto-Record ticked by default; for an older rule go to Telephony → Dispatch Rules, edit the rule that routes your calls, and tick Auto-Record. From then on, every call handled by that rule is recorded automatically and appears on this page (and as a player on the call’s detail page in Call History).

Recording & Streaming Jobs (active)

The top of the page shows recordings currently in progress — the room being recorded, its status and duration. You can stop an active recording here if you need to.

Filters

  • Include chat sessions: recordings of full-voice website chat sessions (Chatbot Agents with Record full-voice sessions on) are hidden by default so phone recordings stay uncluttered. Switch it on to list them too — the choice is remembered in your browser. Chat recordings are also shown on each conversation’s page in Chat History.
  • Agent: show only recordings from calls handled by one agent.
  • From Date / To Date: limit the list to a date window.
  • Search: filter by filename.

Local Recordings

Recordings stored on the dashboard’s own server. Each row shows the filename, agent, date, duration and file size, with per-recording actions:

  • Play Recording: listen right in the browser — no download needed.
  • Download: save the audio file to your computer.
  • Upload to cloud: when cloud storage is configured, a cloud-upload button pushes an individual local recording to your bucket on demand.
  • Delete: remove the file permanently.
  • Bulk delete: tick multiple recordings (or the select-all box in the header), then click Delete Selected. Checkboxes only appear for users with delete permission.
  • “No call-history record” badge: shown in the Agent column when the call record this recording came from has since been deleted from Call History, so its agent can no longer be identified. The recording itself still plays fine.

Cloud Recordings

If cloud storage is configured (Amazon S3 or Google Cloud Storage), a second section lists the recordings in your cloud bucket. You can stream them for playback directly through the dashboard, download them, and bulk-delete them — the same as local ones. An extra Storage column shows which provider each file lives on (S3 or GCS). This section only appears once cloud storage is set up.

Reports — automatic emails about your calls

Have the system email you (or your team) automatically — after every call, or as a daily/weekly digest.

Open Reports in the sidebar. A report is a rule that says: when this happens, send an email (or webhook) with this information to these people. Once set up, it runs by itself.

The Reports page — your configured reports, and the button to create one.
The Reports page — your configured reports, and the button to create one.

The reports list

  • Name / Trigger / Agents / Recipients: what the report is, what sets it off, which agents it covers, and who receives it.
  • Delivery: whether it goes out by email or webhook.
  • Last Sent / Runs: when it last fired, and how many times it has run, so you can confirm it’s working.
  • Status: whether the report is active or paused.
  • Actions: ⏸ pause (or ▶ resume) a report without deleting it — handy for a noisy one; ▶ Run Now sends it straight away to test the delivery (a per-call report run this way has no call attached, so most details are blank); ✎ edit; { } download the n8n file (failsafe reports only); 🗑 delete — this cannot be undone.
  • Recent Executions: below the list, a log of every send attempt — the Report, its sent/failed Status, the Agent and Trigger involved, the Recipients, any Error message (why a send failed), and the Time. Your first stop when a report doesn’t arrive.
ℹYour reports are yours: report rules and their history belong to your account, and a report only ever covers your own agents — All Agents means every agent in your account.

Creating a report

The report editor — choose the type, which agents to include, when it sends and who receives it.
The report editor — choose the type, which agents to include, when it sends and who receives it.

Click New Report. The form is the same for every report type; the parts that don’t apply to the type you pick are hidden.

1 Name it and pick a trigger

  • Report Name: anything that helps you recognise it later, e.g. “Daily summary to management”.
  • Trigger Type: what makes the report send — after each call, once the AI has analysed a call, on a daily/weekly schedule, or when a particular event happens. The description under the box says what the chosen type does, and each type has its own page under Report types.

2 Choose which calls it covers

  • Agent Filter: All Agents, or Specific Agents — then tick the voice agents and/or chatbot agents to include. (Hold Ctrl, or Cmd on a Mac, to pick more than one.)
  • Direction Filter: All Directions, Inbound Only or Outbound Only. (Chatbot conversations count as inbound.) Hidden for the types where it means nothing, such as the Scheduled Summary.
ℹChatbots are included. Post-Call Summary and AI Conversation Analysis reports also fire for chatbot conversations on every channel: a website chat when it ends. Using webhook delivery with AI Conversation Analysis is the way to send a chatbot’s extracted data to a CRM automatically.

3 Set the schedule (Scheduled Summary only)

  • Frequency: Daily or Weekly.
  • Day of Week: for weekly reports, which day it goes out.
  • Time (UTC): the send time. Note this is in UTC (world time), not your local time zone — adjust accordingly.

4 Choose how it’s delivered

  • Delivery Method: Email (the usual choice) or Webhook (sends the report data as JSON to a web address — for connecting to other systems).
  • Recipients: the email addresses that receive the report — add as many as you like.
  • Email Template: which email design to use. When you pick a trigger and no template is chosen yet, the matching one is filled in for you, and a warning appears if the chosen template was built for a different type.
  • Attach call recording (Post-Call Summary and AI Conversation Analysis emails only — off until you switch it on): sends the call’s recording with the email as an audio file (call-recording-<date>-<time>.m4a) that plays on a phone or computer. Hover the ⓘ next to it for a reminder of how it works.
  • Webhook options: if you chose Webhook — the Webhook URL, the authentication type (None, Basic Auth, Bearer Token or API Key Header), any custom headers, and which fields to include in the payload (the panel on the right turns into a list of tick boxes). The Bearer Token and API Key boxes have three buttons: Show (the eye) reveals the key, Copy puts it on your clipboard, and Generate makes a strong random key for you — copy it into whatever receives the report (e.g. your n8n Header Auth credential), then Save. If a key is already there, Generate asks first, because the receiving side keeps expecting the old one until you update it.

Save the report and check its Status shows it as active. Done — it now sends itself.

Attaching the call recording

With Attach call recording switched on, each email carries that call’s recording. What happens automatically:

  • The email waits for the recording. A recording finishes saving 20–30 seconds after the caller hangs up, so these emails arrive a little later than usual — usually under a minute after the call, never more than 3 minutes. Reports without the switch send as quickly as before.
  • Long calls get a smaller copy. Email systems refuse big files, so a recording over about 6.5 MB is sent as a smaller copy that is still clear to listen to. Calls up to about 25 minutes fit.
  • When the recording can’t be attached the email still goes out, with one line at the bottom saying why, and a link to listen on the call’s page: the call wasn’t recorded, it was shorter than the minimum recording length, it was too long to fit, it was still saving after 3 minutes, or the mail service refused the file. If your email template already uses {{recording_note}}, the line goes there instead of the bottom.
  • Recent Executions shows a 📎 line for these reports: “Recording attached (2.1 MB)”, or the reason it wasn’t.
  • Webhooks never carry the recording — the switch only appears for email delivery.
⚠️Recordings contain the caller’s voice. Only switch this on for reports that go to people who are allowed to hear calls, and remember the email (with its recording) stays in their inbox.
💡How it works behind the scenes: when a call ends (or its AI analysis finishes), the system checks your report rules within about 30 seconds and sends any that match. Scheduled reports fire when their set time comes around. Test calls from the Agent Tester never trigger the per-call reports. If a report doesn’t arrive, check Recent Executions for a failed status.
📧Start with a per-call report to yourself. It’s the quickest way to see what your agent is actually saying to callers in the first week, without watching the dashboard.

Report types

Each type below has its own page: when it sends, what’s in it, which settings apply, and the fields you can pick for a webhook.

Post-Call Summary

One email (or webhook) after every call or chatbot conversation ends. Best sent to whoever follows up on calls.

  • When it sends: within about 30 seconds of a call ending. Chatbot conversations send too (see the chatbot note under Creating a report).
  • What’s in it: who called and which number they rang, the agent, the direction, start and end times, the duration, how the call ended, the number of turns and the agent’s average response time, the full transcript, the call’s cost (the total, plus the AI model, speech recognition, voice and phone-line parts where they’re known), a link to the call’s page, a link to listen to the recording (on the same call page) when the call was recorded, and the callback details if the call was marked for a callback. With Attach call recording on, the recording itself comes with the email.
  • What’s not in it: the AI summary and the agent’s Data Extraction Fields — they aren’t ready when the call ends. Use AI Conversation Analysis for those.
  • Settings that apply: Agent Filter, Direction Filter, delivery, Attach call recording (email only).
  • Webhook extras: a webhook also receives the transcript as a list of speaker/text lines, and can include tool_calls — every tool the agent used, with its result. Tick tool_call_http_details as well to include what each webhook tool sent and got back.
  • Fields (webhook payload): call_id, agent_name, caller_number, called_number, direction, duration, duration_seconds, started_at, ended_at, end_reason, turn_count, avg_latency_ms, transcription, total_cost, llm_cost, stt_cost, tts_cost, sip_cost, recording_url, dashboard_link, callback_requested, callback_phone, callback_time, callback_notes. Email only: recording_attached (“yes” when the recording is attached) and recording_note (the sentence about it).

AI Conversation Analysis

Arrives a little after the call, once the AI has analysed it. Usually the more useful per-call email, and the one to use for sending call results to a CRM.

  • When it sends: as soon as the call’s AI summary is ready. If the summary isn’t ready after 5 minutes, the report goes out without it — unless the dashboard is still retrying the summary, in which case it waits (up to an hour) and then sends either way.
  • What’s in it: everything in the Post-Call Summary, plus the short and detailed AI summary, what the caller wanted, the sentiment and its score, key topics, the outcome and its details, action items, whether follow-up is needed, the caller’s name, email and phone if they gave them, and every Data Extraction Field set on the agent (the booking date, the order number…).
  • Settings that apply: Agent Filter, Direction Filter, delivery, Attach call recording (email only — by the time the summary is ready the recording usually is too).
  • Fields (in addition to the Post-Call Summary’s): summary, detailed_summary, caller_intent, sentiment, sentiment_score, key_topics, outcome, outcome_details, action_items, follow_up_needed, extracted_name, extracted_email, extracted_phone, extracted_data (all the Data Extraction Fields as one JSON object — the one to use for a webhook).

Scheduled Summary

The digest — call volumes, durations and cost totals for the period. Best for managers who want the shape of the day, not every call.

  • When it sends: daily, or weekly on the chosen day, at the chosen time (UTC). A daily report covers the 24 hours before it sends; a weekly one the 7 days before. It never sends for a time slot from before the report was created. If a send fails it tries again every 5 minutes, up to 3 times, then waits for the next slot.
  • What’s in it: the period and dates, total calls and minutes, the average call length, inbound and outbound counts, completed and missed calls, the total cost and the average cost per call, the five busiest agents, and the busiest hour (UTC). Test calls are left out.
  • Settings that apply: the schedule, the Agent Filter and delivery. With Specific Agents, every figure — the call counts, minutes, cost, busiest agents and busiest hour — covers only the calls and chats of the agents you ticked.
  • Fields: period, date_range, total_calls, total_minutes, avg_duration, inbound_count, outbound_count, completed_count, missed_count, total_cost, avg_cost_per_call, top_agents, busiest_hour, dashboard_link.

Campaign Completion Report

One email when an outbound campaign has called everyone on its list, with how each call went.

  • When it sends: once the campaign has no numbers left to call. It then waits up to 5 minutes for the calls’ AI summaries (longer while a summary is being retried, up to an hour) so they can go in the email.
  • What’s in it: the campaign name, the agent, how many calls completed, failed, weren’t answered or are still pending, the success rate, when it started and finished and how long it took, and a table of every contact — status, number, name and company, call length and the AI summary of the call.
  • Settings that apply: Agent Filter (the campaign’s agent), delivery.
  • Fields: campaign_name, campaign_id, agent_name, total_calls, completed_count, failed_count, no_answer_count, pending_count, success_rate, started_at, completed_at, duration, contacts_table, dashboard_link.

Widget Abuse — Daily Limit Reached

A warning that a chatbot’s website widget has reached its daily session limit and has paused for the rest of the day — normal busy traffic, or someone trying to run up your AI costs.

  • When it sends: the moment a chatbot reaches its Max sessions per day (the chatbot editor’s Daily Limit (Abuse Protection) setting). Once per chatbot per day (UTC).
  • What’s in it: the chatbot, the limit it reached, when, and a link to the chatbot’s settings so you can raise the limit.
  • Settings that apply: Agent Filter (tick chatbots), delivery. The matching email template is System-Widget Abuse Alert — pick it yourself.
  • Fields: agent_name, agent_id, cap, hit_at, dashboard_link.

Walkthrough: a daily management digest in two minutes

  • Step 2: Reports → New Report → name it “Daily summary”, Trigger Type Scheduled Summary.
  • Step 3: Frequency Daily, pick a Time (remember it’s UTC — e.g. 21:00 UTC for a 7am AEST inbox).
  • Step 4: Delivery Email, add the recipients, save, check its Status shows it as active.
  • Step 5: next morning, confirm it arrived; if not, the Recent Executions log’s Error column tells you why.

Walkthrough: feed call results into another system (webhook)

  • Step 1: in your other system (CRM, n8n, Make, Zapier, a spreadsheet automation), create an incoming-webhook and copy its URL.
  • Step 2: New Report → Trigger AI Conversation Analysis (so the payload includes the summary and extracted data), pick the agents it covers.
  • Step 3: Delivery Webhook → paste the URL, set the authentication your endpoint expects (None / Basic / Bearer / API Key Header), and tick which fields to include in the payload — fewer fields = simpler to handle on the other side. Report webhooks authenticate exactly like webhook tools. If the stored key contains characters a web request can’t carry (for example a curly quote pasted from a document), nothing is sent and the run shows as failed in Recent Executions with “Authentication is misconfigured” — re-paste the key as plain text, or click Generate.
  • Step 4: save, make a test call to the agent, and watch the Recent Executions log — a green sent status means your other system received the data; a failed one shows the exact error the endpoint returned.

n8n Failsafe Wizard

The most expensive call is the one that nearly worked: the caller was halfway through booking, the line dropped, and the enquiry vanished. The n8n Failsafe Wizard button (top of the Reports page) builds a safety net for those lost leads.

The Failsafe Wizard — pick how a lost call is detected, choose the agents to watch, and say who gets alerted.
The Failsafe Wizard — pick how a lost call is detected, choose the agents to watch, and say who gets alerted.

When a caller hangs up before their booking or enquiry is completed — the line drops, they give up mid-way, the tool never runs — an n8n workflow emails your team the caller’s details so someone can ring them back. If the booking or cancellation tool did run successfully, or the caller was transferred to a person, nothing is sent. The wizard creates both sides in one pass: a post-call report with webhook delivery already configured (address, security key, field list), and a matching n8n workflow file you download and import — guaranteed to fit together.

  • Failsafe (tool check): rule-based. You tick which of your tools mean “the call was handled” (your booking / cancellation / enquiry tools). An alert goes out only when none of them completed successfully — a tool that ran but failed still alerts, because that lead is still lost. Optionally, AI reads the transcript and puts the caller’s name, spoken phone number and request into the email.
  • Failsafe (AI classify): an AI reads each missed call and decides whether the request was completed before emailing. When in doubt it emails — better a duplicate alert than a lost lead. Needs an AI (OpenRouter) credential in n8n.
  • Enquiry keywords: optional comma-separated words (booking, quote, hire …). If set, only calls mentioning one of them alert — keeps wrong numbers out of your inbox.
  • Handoffs: by default a hand-over to another AI agent does NOT count as handled — the second agent still has to complete the booking, so the alert still fires if it doesn’t. A checkbox flips this if you prefer. Transfers to a human always count as handled.
  • Withheld numbers: a caller with a hidden caller ID who says their number out loud is still alerted on — the AI pulls the spoken number from the transcript.
What happens automatically: the report is enabled the moment you click Create, so until you import and activate the workflow in n8n, Recent Executions shows failed rows — that’s expected, not broken. Once active, alerts arrive about 1–2 minutes after a call ends (the dashboard checks for finished calls every 30 seconds). Use the Send test event button on the wizard’s finish page, then look at n8n → Executions.
Changing things later: alert recipients live in the workflow’s Config node — edit them directly in n8n. To rotate the security key, edit the report’s API Key value, save, then re-download the file (the { } button on the report’s row) and re-import it in n8n. To change the wizard’s other settings (tools, keywords, thresholds), re-run the wizard — then delete the old report here and deactivate the old workflow in n8n, or you’ll get two alert emails per missed call. Renaming the report renames the workflow in the next downloaded file. Leave the report’s webhook field list as the wizard set it — the workflow reads exactly those fields.
Privacy: with AI extraction on, the call transcript is sent to OpenRouter through your own n8n credential. The downloaded file contains only the values you typed into the wizard plus the report’s security key — treat the file itself as confidential.
🔔Set one up in your first week. Point it at your main agent and send the alerts to yourself. It tells you more about where your agent is losing callers than almost anything else in the dashboard.
ℹYour n8n address: for the Failsafe Wizard it must start with https:// and be reachable from the internet — not an address on your own network. An n8n cloud account works straight away; a self-hosted one needs a real domain name with a certificate.

Billing Overview

Your balance, this month’s usage, and recent activity.

Tronic Cloud is pre-paid. You hold a credit balance, and calls draw it down as they happen — so there’s no end-of-month invoice to be surprised by, but there is a balance to keep an eye on.

Billing Overview showing available credit, a low credit warning, usage this month and recent activity
Your credit balance sits at the top, with the Top Up Account button beside it.
⚠What happens if you run out. When your credit runs too low, incoming calls are refused — callers won’t reach your agent. The amber Low credit warning on this page names the exact cut-off amount that applies to your account, and we email you a warning before you reach it. Nothing is deleted and no data is lost; topping up restores service straight away.

The page also shows Usage This Month (calls placed, total minutes and spend) and Recent Activity — the last handful of charges, so you can see at a glance what’s been drawing your balance down.

Call Charges

An itemised cost for each call.

Call Charges page listing calls with their individual costs
What each call cost. Click any row for the full breakdown.

How a call is priced

Each call is made up of several separately-metered pieces:

  • Speech recognition — turning what the caller says into text, charged by the minute.
  • The AI model — the thinking, charged by the amount of text processed.
  • The voice — turning the agent’s words into speech, charged by the amount spoken.
  • Telephone minutes — the call itself.

They’re added together into the figure you see. Short, efficient calls cost very little; the surest way to reduce your spend is an agent that gets to the point.

Transactions

Your money-in, money-out history.

Transactions page showing the ledger of payments and charges
Every top-up, credit and charge, newest first.

You’ll see top-ups (card payments you’ve made), credits (amounts we’ve added, including your $10 starting credit) and charges (usage drawn down). This is the page to reconcile against your card statement.

Need a tax invoice or receipt for your accountant? Email support@tronic.com.au with the date and amount and we’ll issue it.

Spend Analytics

Where your money actually goes.

Spend Analytics page showing spend totals with breakdowns by agent and model
Totals for the period, split by agent and by AI model.

Set the date range, then read the two breakdowns. By agent tells you which agent is costing you money — useful if one is unexpectedly expensive. By model shows which AI services are driving it, which is what to look at if you’re considering switching an agent to a cheaper model.

Top Up Balance

Add credit securely by card.

$ Add credit

Open Billing › Top Ups, enter an amount, and pay by card through our secure checkout. Payments are handled by Stripe — Tronic Cloud never sees or stores your card number. Your balance updates automatically once the payment clears, usually within seconds.

Top Up page with the amount field and secure checkout button
Enter an amount and pay by card. Your balance updates automatically.

Your bank may ask you to confirm the payment in its app or by SMS — that’s standard card security, not something we control. If a payment is declined, nothing is charged and your balance is unchanged; try again or use a different card.

💳Top up before you need to. Because calls stop being answered once your credit runs too low, it’s worth keeping a comfortable buffer rather than topping up at the last minute — especially over a weekend.

Account Settings

Your company details and contact information.

Account page showing account details and contact information
Your account details. The Account name is what appears in the dashboard header.

Account details (read-only) shows your login email, your assigned phone number, your account status and when you signed up.

Contact is editable:

  • Account name — what shows in the dashboard header.
  • Legal full name — as it appears on official documents, used for invoicing.
  • Day-to-day contact name — who we’ll call or email about account matters.
  • Phone — your contact number (not your agent’s number).

Click Save changes when you’re done.

👤Logins for colleagues. Additional logins for your team can be set up for you — contact support with the names and email addresses and we’ll arrange it.

Troubleshooting & FAQ

The questions that come up most, and what to check first.

My phone isn’t being answered — the four checks

Work down this list in order. One of these four is the answer almost every time, and you can do all of them in about two minutes.

  1. Is the agent running? Open Voice Agents. The agent must show RUNNING. If it says stopped, press the green Start button — that’s the whole fix.
  2. Does the dispatch rule point at that agent? Open Dispatch Rules and click the pencil. If the rule names a different agent — or one you’ve since deleted — calls go nowhere. Pick the right one and save.
  3. Is your credit above the cut-off? Open Billing. Below the cut-off shown there, incoming calls are refused before they reach your agent. A top-up restores service within seconds.
  4. Are you ringing the right number? Confirm it on Phone Numbers. It’s also in your welcome email.

If all four are fine, the call should be in Call History. If it isn’t there at all, the call never reached us — email support with the time you rang and the number you rang from, and we’ll trace it.

My campaign stopped on its own halfway through.

Almost always one of two things, and they behave differently.

Operating hours. If you ticked Restrict calls to specific hours, the campaign pauses itself at the end of the window and the badge reads Paused. Nothing is wrong. It starts again on its own at the next opening and carries on down the list — you don’t need to touch it.

Money. If your balance has run low it stops making calls, but what happens to the untried numbers depends on how low. If the account has been suspended, the remaining numbers simply wait, and the campaign carries on by itself once you top up. If there is still some credit but not enough to start a call safely, the numbers it tries get marked failed instead — so after you top up, use Retry Failed to go back over them.

My calls have no recording.

Recording is off unless you turn it on. Telephony → Dispatch Rules → edit your rule → tick Auto-Record Calls. It applies to calls from that point on — earlier calls can’t be recovered.

The agent is slow to respond — there’s a long pause before it speaks.

Check the Latency tab on the Overview page and the metrics on an individual call. Common causes: a “thinking” AI model chosen on the Behavior tab instead of a fast one, or a very long system prompt. Shortening the prompt often helps more than people expect.

The agent keeps mishearing names, products or suburbs.

Two fixes, best used together: set the correct language on the Speech Recognition tab, and list the troublesome words in the System Prompt so the agent knows to expect them.

My calls cut off after a set time.

Check Resource Limits on the agent’s Advanced tab — there may be a maximum call length set. Raise it if your calls legitimately run longer.

Who ended the call — the caller or the agent?

Open the call in Call History. The detail page records how the call ended.

How do I make the agent transfer callers to a real person?

Tools → assign the transfer tool to your agent, then tell the agent in its System Prompt when to use it: “If the caller asks for a human, or is upset, transfer the call.”

The chat widget doesn’t appear on my website.

Check the Domains tab of the chatbot editor first — your site’s address must be allowed. Then confirm the embed snippet actually saved on your site and that you’re looking at the live page rather than a cached copy.

How much are my calls costing me?

Billing → Call Charges for individual calls, or Spend Analytics for the pattern over time. Every call also shows its own cost on its detail page.

Why was I charged for a browser test?

Because a test uses the same AI services as a real call. The amounts are tiny, and test sessions are marked as tests in your Call History.

Do I need a phone number to try an agent?

No — use the Agent Tester to talk to an agent entirely in your browser.

What happens if the AI provider I’m using has an outage?

Set fallback models on the agent’s Behavior tab and calls will automatically continue on a backup provider instead of failing.

What happens if I delete something?

Deleting an agent, a collection or a rule is permanent and there’s no undo. Call history is unaffected by deleting an agent. If you’re unsure, stop the agent instead of deleting it — a stopped agent costs nothing.

Why does it say “Sub-User” next to my name?

It’s just a label on the account menu — it doesn’t limit anything you do. Every login on a Tronic Cloud account carries it, including the main one. Ignore it.

Can my website chatbot talk out loud?

Yes. On the chatbot’s Voice tab, change Chat Mode. The friendliest option for a website is Voice with avatar — visitors still type, but the answers are spoken, and the browser never asks for microphone permission. See Letting your chatbot talk.

How do I get a real person to take over a website chat?

Turn on Human Handoff on the chatbot’s own tab, and point it at a web address your team watches — usually an n8n workflow that posts into Slack, Teams or your help desk. Your team member replies from there and the visitor sees it in the chat. See Handing a chat to a real person.

How do I get the agent to book appointments?

Tools → Webhooks → n8n Wizard, and pick Calendar booking (Cal.com) or GoHighLevel appointments & sales. The wizard builds both the tool and the matching workflow so they fit together. See The n8n Wizard.

It won’t accept my n8n web address.

Two rules. It must start with https://, and it must be an address reachable from the internet — not one on your own network like http://192.168.1.50:5678 or localhost. An n8n cloud account works straight away; a self-hosted one needs a real domain name with a certificate.

Where do I put the number the agent transfers callers to?

Tools → Agent Tool Assignments → Configure next to the agent → switch on the transfer tool, and the destination fields appear underneath it. Each agent can transfer somewhere different.

I set up a handoff between agents and nothing happens.

Check the AI model. Handoffs aren’t supported on every model — the editor shows an orange warning above the handoff switch when the one you’ve chosen can’t do them, and in that case your handoffs are silently ignored on calls. Switch to a model the warning names.

My agent shows a red “Config Error” badge.

That badge means one of the AI services your agent uses isn’t responding to us. It isn’t something you can fix from your side — those connections are ours. If the agent is also failing to answer calls, email support and quote the agent name.

I can’t see a page this guide mentions.

Some features are enabled per account. If something in this guide isn’t in your menu, it isn’t switched on for you — contact support and ask.

How long is my data kept?

Indefinitely. Your call records, transcripts, summaries and recordings are not deleted on a timer — a call from two years ago is still in Call History, and its recording still plays. The same goes for your website chat conversations.

That means you don’t have to race a deadline to save anything. It also means the record stays there until somebody removes it, so:

  • You can delete things yourself — individual recordings from the Recording / Egress page, and calls from Call History. Deleting is permanent.
  • Keep your own copies of anything critical anyway. Use the download button on a recording, and Export on Call History for transcripts. Your own archive is the one you control.
  • Tell callers what you do with recordings. If you record calls, your privacy policy should say so and say you keep them. Obligations vary by industry and state, so check what applies to your business.
📧Want your data removed? Email support@tronic.com.au and tell us what to delete — a date range, an agent, or the whole account. We’ll confirm before anything goes.

Glossary

Plain-English translations of the terms in the dashboard.

  • Agent — the AI that answers your calls or chats.
  • System prompt — the standing instructions that tell the agent who it is and how to behave.
  • Greeting — the first thing the agent says when it answers.
  • Dispatch rule — the setting that says “calls to this number are answered by that agent”.
  • SIP trunk — the connection between the phone network and your agents. Yours is set up for you.
  • Knowledge base — documents you upload so the agent can answer from your own information.
  • Tool — something the agent can do as well as say: transfer a call, hang up, or send details to another system.
  • Webhook — a tool that sends information to another system over the internet.
  • Campaign — a list of phone numbers your agent rings, instead of waiting to be rung. See Campaigns.
  • Egress — the dashboard’s word for call recording.
  • LLM — “large language model”: the AI that does the thinking.
  • Speech recognition (STT) — turning the caller’s speech into text.
  • Text to speech (TTS) — turning the agent’s words into a voice.
  • Latency — the delay before the agent replies. Lower is better.
  • Credit / balance — your pre-paid funds. Calls draw this down.
  • Inbound / outbound — a call to you, or a call from you.
  • Handoff — passing a conversation from one agent to another. A transfer is one the caller is told about; a transition is one they don’t notice.
  • Human handoff — on a website chat, passing the conversation from the chatbot to one of your team.
  • n8n — an automation tool that connects your agent to other software (your CRM, calendar, spreadsheets). The wizards in the dashboard build ready-made n8n workflows for you.
  • Data extraction field — a detail you’ve asked the agent to pull out of every call, such as a callback number, shown on the call record.
  • Health score — a 0–100 rating of how technically smooth a call was. It measures responsiveness, not whether the agent gave good answers.
  • TTFB — “time to first byte”. How quickly the agent started replying. A rough speed indicator on each call.

Getting help

When something isn’t right, here’s how to get it sorted quickly.

Start with Troubleshooting & FAQ above — it covers the great majority of questions. If that doesn’t resolve it, email support@tronic.com.au — or simply reply to any email we’ve sent you about your account.

What to include when reporting a problem

Including these turns a day of back-and-forth into a single reply:

  • The Call ID from Call History, if it’s about a specific call — this is the single most useful thing you can give us.
  • The date and time it happened, and the number that was rung.
  • Which agent was involved.
  • What you expected to happen, and what happened instead.
🔔Urgent: calls not being answered? Check your credit balance first (Billing → Overview). Calls stop once credit falls below the cut-off shown there, and a top-up restores service immediately — faster than waiting for a reply from us.