# Templates (/docs/agents/voice-agents/templates)

> For the complete documentation index, see [llms.txt](https://docs.tandemcx.ai/llms.txt). Any page on this site can be fetched as Markdown by appending `.md` to its URL.

A template is a voice agent's configuration with every reference to your organization's own
resources (a workflow, an integration, a knowledge base) pulled out and replaced with a named
**requirement** you bind when you create an agent from it. Everything else (the prompt, the
channels, the voice, the model, the dispositions, the turn-taking and idle settings) travels
as-is.

Templates come from two places: **curated** templates Tandem ships for common use cases, and
**your organization's own**, saved from an agent you've already built. Both work the same way
once you're creating an agent from one.

## Start an agent from a template

<Steps>
<Step>
### Open the template picker

Select **Automations → Agents** in the left navigation, click **Create Agent**, and choose
**Use a Template**. A list opens of the voice-agent templates available to you, each showing
the template's name, description, and category.

</Step>

<Step>
### Narrow the list

The search box above the list matches a template's name, description, and category.

</Step>

<Step>
### Pick one and name your agent

Click a card to select it, then set a name for the new agent.

</Step>

<Step>
### Fill in each requirement

Below the name, the template lists one picker per requirement it declares — a workflow picker
for a requirement that needs a workflow, an integration picker for one that needs an
integration, a knowledge-base picker for one that needs a knowledge base. A template saved
from one of your organization's own agents records which of your resources each requirement
came from, so its pickers open with that resource pre-selected; you can change it. A curated
template carries no such record, so its pickers open empty.

<Callout type="info">
    A requirement marked optional can be left unbound. Doing so doesn't block creation — it drops
    the tool (or the knowledge base) that requirement fed, and the agent is created without it.
    Whatever was dropped is listed on the summary you land on after creating, so nothing goes
    missing quietly. A required requirement left unbound does block creation; it's listed so you
    know which picker still needs an answer.
</Callout>

</Step>

<Step>
### Create the agent

Click **Create Agent**. If everything you picked is directly usable, the agent is created
exactly as the template described. If something the template asked for isn't available to your
organization — a model whose vendor integration isn't connected, an ElevenLabs voice without
the ElevenLabs integration — you'll see a **substitution notice** naming what was swapped and
why, and the agent is created with the substitute in place.

On a template whose [Channels](/docs/agents/voice-agents/persona#channels) leave **Voice** off,
a voice that had to change is **dropped** rather than replaced: a chat-only agent needs none.
The notice says so.

</Step>
</Steps>

The new agent opens in the editor like any other. Nothing about it is locked because it came
from a template — edit it the same way you would an agent you built from scratch.

## Save one of your own agents as a template

Any configured agent can become a template for the next one.

<Steps>
<Step>
### Start from the agent

On the **Voice Agents** list, find the agent you want to save and choose **Save as Template**
from its row actions.

</Step>

<Step>
### Name and categorize the template

The form opens with **Template Name**, **Description**, **Category**, and **Tags**. Name and
Category are required — **Save Template** stays disabled until both are filled. The name is
prefilled with the agent's own name followed by "template", so Category is usually the one you
have to supply.

</Step>

<Step>
### Review the free text

Below the metadata, under **Review before sharing**, the agent's free-text fields are shown back
to you: the **system prompt**, the **greeting**, the **returning-caller greeting**, any
**steering rules**, the description and instructions of any **custom skill**, the
instructions behind each [post-call analysis](/docs/agents/voice-agents/post-call-analysis)
judgment and field, and the two lines from
[Timeouts & Limits](/docs/agents/voice-agents/conversation) the agent speaks on its own — the
reprompt to a caller who's gone quiet, and the warning before a call hits its time limit.
Read through
them and edit anything that names your organization, a specific person, or anything else that
wouldn't make sense — or shouldn't be seen — on someone else's agent.

<Callout type="warn">
    Nothing here is redacted for you. If your prompt says "you work for Acme Corp" or a steering
    rule references an internal policy by name, it stays in the template exactly as written until
    you change it.
</Callout>

</Step>

<Step>
### Confirm the requirements

Last on the form, under **Requirements**, every workflow, integration, MCP server, and knowledge
base the agent used is listed as a requirement. A workflow or integration tool's requirement
carries the name and description you gave that tool, so the next person knows what it's for. An
MCP tool's requirement and a knowledge base's requirement get a generic label ("MCP tool server",
"Knowledge base") instead, since neither one has a name of its own to carry forward. You don't
need to do anything here unless you want to reword a label.

</Step>

<Step>
### Save it

Click **Save Template**. It's added to your organization's own templates, alongside any curated
ones.

</Step>
</Steps>

## What a template carries, and what it never does

A template saved from one of your own agents records, for each requirement, which of your
resources the source agent used — that record is what makes its pickers open pre-selected, as
described in "Fill in each requirement" above, and it stays within the organization that saved
the template. A curated template Tandem ships records nothing of the kind, so its pickers always
open empty. A template also carries the agent's
[Data Collection](/docs/agents/voice-agents/data-collection) fields as you left them.

Beyond that, a template is safe to hand to anyone in your organization, because it never carries:

- **A phone number.** Numbers assigned to the source agent are dropped: they belong to the
  organization that owns them, and the agent created from the template starts with none.
  Assign numbers on the new agent's **Phone Numbers** card.
- **An audio thinking cue.** A thinking cue that plays one of your own uploaded sound files is
  dropped when you save a template — that file lives in your organization only. A spoken-text
  thinking cue travels normally, since it's just a phrase, not a file.
- **The value of any agent variable.** Each variable's name and description travel, so the agent
  created from the template still declares what it expects, but every value is blank and waiting
  to be filled in. The value in one is yours — an account number, or a credential you typed in
  place of a secret reference.
- **A transfer destination.** The destinations you named under **Transfer to an outside number**
  and **Transfer to another voice agent** are dropped: the first is a phone number your
  organization owns, and the second names agents that exist nowhere else. Every other built-in
  tool setting travels as you left it, so the tools stay switched on and you re-add the
  destinations.
- **Credentials, or any value of any kind that only your organization could use.** A requirement
  carries a name, and at most a pointer to the resource it came from — never a workflow's
  contents, an integration's connection details, or anything with a real value behind it.

## Templates are snapshots

Creating an agent from a template copies its configuration once, at that moment. There's no
link back afterward: editing the template later doesn't change any agent already created from
it, and there's no "update from template" action to pull later changes in. If you want an
existing agent to pick up a change you made to the template it came from, make that change on
the agent directly.

## Next steps

<Cards>
    <Card
        title="Getting Started"
        href="/docs/agents/voice-agents/getting-started"
        description="Build a voice agent from an empty form instead."
    />
    <Card
        title="Tools"
        href="/docs/agents/voice-agents/tools"
        description="What a workflow, integration, and MCP tool each need to run."
    />
    <Card
        title="Using an Agent in a Workflow"
        href="/docs/agents/voice-agents/using-in-workflows"
        description="Hand a call to the agent you created."
    />
</Cards>
