> ## Documentation Index
> Fetch the complete documentation index at: https://docs.routera.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create voice agents

> Configure voice agents, global prompts with dynamic fields and tools, and go live on phone numbers.

Voice agents automate inbound and outbound calls for qualification, scheduling, support, and follow-up. Each agent has four tabs: **Agent Settings** (voice, LLM, and **global prompt**), **Transcription Settings**, **Tools**, and **Test**.

## Create a voice agent

1. Open **Voice Agents** in the sidebar.
2. Click **Create Voice Agent**.
3. Configure each tab, then **Save**. Use **Publish** when the agent is ready to take calls (**Unpublish** pauses live use without deleting the agent).

<img src="https://mintcdn.com/routera/xpRN17vkViYjn8XR/images/voice-agent-list.png?fit=max&auto=format&n=xpRN17vkViYjn8XR&q=85&s=ac2619aba21b366439b67a85b6574f30" alt="Voice Agents list with Create Voice Agent" style={{ width: "100%" }} width="3042" height="1694" data-path="images/voice-agent-list.png" />

<Note>
  Use the in-app **Help** option (bottom right) for the tutorial video and guided tour.
</Note>

***

## Agent Settings

### Voice and language

1. Select **language**.
2. Choose a **voice** (Google or ElevenLabs) and use the play button to preview.
3. For **ElevenLabs** voices, open the gear icon next to the voice selector to pick a model (for example `flash_v2`, `flash_v2_5`, `turbo_v2`, `turbo_v2_5`). Lower-latency models can improve real-time conversations.
4. Select the primary **LLM model** (and optional backup model). Open the gear icons to tune temperature and related settings when available.

<img src="https://mintcdn.com/routera/xpRN17vkViYjn8XR/images/voice-agent-settings-voice.png?fit=max&auto=format&n=xpRN17vkViYjn8XR&q=85&s=94452d6df3880232e84d3f66fe584808" alt="Language, voice, and LLM selection on Agent Settings" style={{ width: "100%" }} width="3040" height="1690" data-path="images/voice-agent-settings-voice.png" />

### Who speaks first

* **Customer** — the caller speaks first (typical for inbound).
* **Agent** — the agent opens with a **Welcome greeting** you write in the editor. You can use **Insert Field** and **Default Values** on the greeting the same way as the global prompt.

Optional: enable **Interruption sensitivity** so the caller can interrupt the agent, then choose **Low**, **Medium**, or **High**.

***

## Global prompt

The **global prompt** is the main instruction set for your agent on every call. It defines tone, goals, what to ask, when to transfer, and how to use enabled tools. Routera ships a default prompt you can edit or replace.

Treat the global prompt as the single source of truth for agent behavior—voice and LLM settings support it, but the prompt drives what the agent actually does.

<img src="https://mintcdn.com/routera/xpRN17vkViYjn8XR/images/voice-agent-global-prompt.png?fit=max&auto=format&n=xpRN17vkViYjn8XR&q=85&s=792398fddb29abdabf77adccee81610d" alt="Global Prompt editor with Insert Field and Insert Tool" style={{ width: "100%" }} width="2436" height="1166" data-path="images/voice-agent-global-prompt.png" />

### Write and refine the prompt

* Edit directly in the prompt editor.
* Click **AI Assistant** for help expanding or restructuring your instructions.
* Click **Save** on the agent after changes (the prompt is stored with the rest of Agent Settings).

### Insert dynamic fields

Dynamic fields inject **live contact data** into the prompt at call time (and in **Test** when you pick a contact).

1. Click **Insert Field** above the global prompt.
2. Choose a field (contact fields from Routera, plus built-ins such as **Current Date and Time**).
3. Routera inserts a token like `{{email}}` or `{{first_name}}` in the editor (shown as a chip in the UI).

On a call, each `{{field_name}}` is replaced with that contact’s value. If the field is empty or the caller is unknown, Routera uses fallbacks from **Default Values** (see below).

Example instruction line in your prompt:

```text theme={null}
The caller's name is {{first_name}} {{last_name}}. Their company is {{company_name}}. Email on file: {{email}}.
```

<Note>
  Map HubSpot properties to Routera fields under **Settings** → **Integrations** → HubSpot (gear icon) so CRM data fills the same tokens on synced contacts. See [Integrate HubSpot](/kb/integrate-hubspot).
</Note>

### Insert tools into the global prompt

**Tools** are actions the agent can take during a call (transfer, end call, update a contact, assign an owner, and more). Enabling a tool on the **Tools** tab is not enough—the model also needs to know **when** and **how** to use it. That guidance belongs in the **global prompt**.

**Workflow:**

1. Open the **Tools** tab and turn on the tools this agent should use. Configure any required settings (gear icon), then save.
2. Return to **Agent Settings** → **Global prompt**.
3. Click **Insert Tool**. The menu lists only **enabled** tools for this agent.
4. Select a tool. Routera inserts the tool’s internal name into the prompt (as a chip, not `{{braces}}`).
5. In the surrounding text, tell the agent when to invoke that tool.

Example:

```text theme={null}
If the caller asks for a human or you cannot resolve their issue, use transfer_to_number.
If they ask to be removed from calling lists, use do_not_call.
When you have confirmed their email, use update_contact to save it.
```

| Control            | Purpose                                                          |
| ------------------ | ---------------------------------------------------------------- |
| **Insert Field**   | Contact (and built-in) data → `{{internal_name}}`                |
| **Insert Tool**    | Enabled tools → tool `internal_name` (reference in instructions) |
| **Default Values** | Fallback text when a `{{field}}` is missing on the contact       |
| **AI Assistant**   | Generate or improve prompt copy                                  |

<Note>
  If **Insert Tool** says no tools are available, enable tools on the **Tools** tab first, then return to the global prompt.
</Note>

### Default Values for variables

Click **Default Values** above the global prompt when your text includes `{{fields}}`. Set what the agent should assume when:

* No matching contact exists in Routera, or
* A field on the contact is empty.

Tool names and built-in variables are managed separately; this dialog is for **field** placeholders. An amber badge on **Default Values** means some field tokens still need a fallback.

***

## Transcription Settings

Choose how speech-to-text runs for the agent:

* **Optimize for Speed** — lower latency, faster turn-taking.
* **Optimize for Quality** — more accurate transcription when clarity matters more than speed.

<img src="https://mintcdn.com/routera/xpRN17vkViYjn8XR/images/voice-agent-transcription.png?fit=max&auto=format&n=xpRN17vkViYjn8XR&q=85&s=ca36ceb6b44938ee9713abc99da03243" alt="Transcription speed vs quality setting" style={{ width: "100%" }} width="3038" height="1696" data-path="images/voice-agent-transcription.png" />

***

## Tools

On the **Tools** tab, enable capabilities for this agent. Each tool has a short description; some open a **settings** drawer when enabled (transfer numbers, router for assign owner, fields to update on a contact, and so on).

Common system tools include:

* **End call** — end the conversation when criteria in your global prompt are met.
* **Transfer to number** — transfer to a configured number with optional pre-transfer and whisper messages (supports **Insert Field** in those messages).
* **Do not call (DNC)** — honor explicit opt-out from future calls.
* **Assign owner to contact** — run a published router to assign an owner during the call.
* **Update contact** — write extracted values back to contact fields you configure.
* **Check calendar availability** — calendar-related flows tied to a published router.

<img src="https://mintcdn.com/routera/xpRN17vkViYjn8XR/images/voice-agent-tools.png?fit=max&auto=format&n=xpRN17vkViYjn8XR&q=85&s=8ca17ec3531ffbd878e3121f02a897e1" alt="Tools tab with toggles and settings" style={{ width: "100%" }} width="3038" height="1690" data-path="images/voice-agent-tools.png" />

Enable a tool, complete its settings if prompted, then document its use in the **global prompt** via **Insert Tool** and plain-language rules.

***

## Test

Use the **Test** tab to chat with the agent using your current global prompt, tools, and LLM settings:

1. Optionally look up or select a **contact** so `{{field}}` tokens resolve to real values.
2. Send messages and confirm tone, tool behavior, and field context before going live.

<img src="https://mintcdn.com/routera/xpRN17vkViYjn8XR/images/voice-agent-test.png?fit=max&auto=format&n=xpRN17vkViYjn8XR&q=85&s=dcc217efd6a8bb028819de62f3553d87" alt="Test tab with contact lookup and chat" style={{ width: "100%" }} width="3040" height="1696" data-path="images/voice-agent-test.png" />

***

## Go live

1. **Save**, then **Publish** the voice agent.
2. Attach the agent to a **phone number** so inbound and outbound calls use it.

For purchasing a number and linking an agent, see [Create a phone number](/kb/create-phone-number).

<Tip>
  Configure **Tools** first, then build the **global prompt** with **Insert Field** and **Insert Tool**, set **Default Values**, and run **Test** with a real contact before publishing.
</Tip>
