Manage templates
Build and edit conversation templates in the merchant dashboard. Preview in-browser before connecting real phone numbers.
A template is the step-by-step description of what your agent says and does on a call. Most teams start with two or three templates (one per campaign or intent) and grow from there.
Prerequisites
- A merchant or admin role — see Manage users.
- A rough script for the conversation you want (greeting, questions, farewell).
- A Daily.co-compatible browser (Chrome or Safari) for in-browser preview.
Create a template
- Open Templates in the dashboard and click New template.
- Give it a name matching the campaign intent (e.g.
appointment-reminder-v1). - Add your first conversation step — the initial node. Write the system prompt for what the agent should say first, and specify any variables you’ll pass in (customer name, appointment date, etc.).
- Add follow-up nodes and connect them with transitions. The agent uses the LLM to decide which transition to take based on what the caller says.
- Save and open Preview to test the flow in-browser.
What the JSON looks like
Every template is stored as JSON. The dashboard hides the JSON from you by default — you can open a “raw view” toggle if you’re curious or if your team wants to version-control templates in a Git repo.
{
"name": "appointment-reminder",
"flow": {
"initial_node": "greeting",
"nodes": [
{
"node_name": "greeting",
"task_messages": [
{ "role": "system", "content": "Greet the customer and confirm their appointment on {appointment_date}." }
],
"functions": [
{ "name": "confirmed", "transition_to": "farewell" },
{ "name": "rescheduled", "transition_to": "farewell" }
]
},
{ "node_name": "farewell", "task_messages": [ { "role": "system", "content": "Thank and say goodbye." } ] }
]
}
} For the full schema and the API to manage templates programmatically, see Templates (developer docs).
Variables
Variables let one template handle many callers. Wrap a placeholder in braces anywhere the agent speaks — Hello {customer_name}, I'm calling about your appointment on {appointment_date}. — and the value is substituted per call from the lead payload.
Preview before using real calls
Every template has a Preview button. It launches the agent in a browser tab so you can speak to it as if it were on a phone call. No phone number, no cost. Iterate here until the conversation feels right, then wire the template to a phone number.
Warm transfer to a human
Add the built-in “transfer to live agent” step to any node. When the LLM decides the caller needs a person, Breeze Buddy bridges a human in. Set the transfer number under Call settings → Transfer number.
How transfer looks on the API side
Transfer uses the connect_to_live_agent built-in global function and the transfer_number field in configurations. See Enable warm transfer for the developer walkthrough.
Best practices
- One template per intent. Appointment reminders, order confirmations, and cold outreach each deserve their own template.
- Keep node prompts short. Long system prompts confuse the LLM. Break long flows into multiple nodes.
- Test with realistic variables. Don’t test with
{customer_name}= “Test” — use a real name; it catches phrasing bugs. - Use the playground. Every change is live on the next call. Don’t test changes on production campaigns.
Publishing vs. editing
Saving a template updates it immediately — every new call uses the new version. There is no staged publish step. Use a separate “staging” template while iterating, then copy the JSON across when ready.