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

# Call transfers and conference

> Cold transfer, warm transfer, and conference for telephone calls.

Transfers and conference are agent actions that move a live phone call to a human or another number. The agent runs them as part of an ability, the same way it runs a workflow or knowledge-base lookup. There are three action types: `cold_transfer` hands the caller off blind, `warm_transfer` briefs a human supervisor first and then bridges the call, and `conference` dials another number into the existing room.

<Warning>
  These actions run only on the **telephone** channel. The async text and email engine skips any voice-only action and logs `Skipping voice-only action '<type>' on async text channel`. Configure them on telephone agents only; they have no effect on chat or email.
</Warning>

## When to use each

| Type            | What it does                                                                                    | Use when                                                                       |
| --------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| `cold_transfer` | Transfers the caller to another number and the agent leaves. No handoff conversation.           | You want a fast, unattended handoff (for example, route to a department line). |
| `warm_transfer` | Holds the caller, dials a human supervisor, the AI briefs them, then merges both into one call. | A human needs context before taking the caller.                                |
| `conference`    | Dials another number into the current room so everyone is on one call.                          | You want to add a participant without removing the agent.                      |

Add these as actions on an ability. See [Abilities and actions](/agents/abilities-and-actions) for how actions attach to abilities, and [Agent assist](/agent-assist/overview) for live human-in-the-loop monitoring.

## Cold transfer

The agent transfers the caller to `transfer_number` and the call status becomes `transferred`. Conversation history is saved at transfer time.

| Field              | Type   | Default             | Description                                                                        |
| ------------------ | ------ | ------------------- | ---------------------------------------------------------------------------------- |
| `transfer_number`  | string | required            | The number to transfer the caller to. Supports template variables.                 |
| `displayed_number` | enum   | `transferee_number` | Which caller ID the transferee sees. One of `transferee_number` or `agent_number`. |
| `condition`        | string | none                | Optional expression; the action runs only when it evaluates true.                  |

## Warm transfer

The agent places the caller on hold with music, creates a separate supervisor room, dials the human at `transfer_number`, and briefs them using `supervisor_instructions` plus the prior conversation. When the supervisor accepts, the agent merges them into the caller's room (bridge) and resumes audio. If anything fails or the supervisor declines, the caller is taken off hold and the agent speaks the matching message.

```
caller ──┐
         │  on hold + music         supervisor room
         ▼                          ┌──────────────┐
   [ AI agent ] ── dials supervisor ─► human joins  │
         │                          │ AI briefs them│
         │  on accept: merge ◄──────┴──────────────┘
         ▼
   caller + supervisor bridged in one call
```

| Field                              | Type   | Default    | Description                                                                       |
| ---------------------------------- | ------ | ---------- | --------------------------------------------------------------------------------- |
| `transfer_number`                  | string | required   | The supervisor number to dial. Supports template variables.                       |
| `queue_timeout`                    | int    | `30`       | Seconds to wait for the supervisor to join and be connected to the customer.      |
| `hold_music_url`                   | string | sample mp3 | Hold music file/URL (`.wav`/`.mp3`). Falls back to a tone if it cannot be played. |
| `supervisor_instructions`          | string | see below  | How the AI briefs the supervisor before connecting them to the caller.            |
| `on_transfer_failed_message`       | string | see below  | Spoken to the caller when the transfer fails.                                     |
| `on_successful_transfer_message`   | string | see below  | Spoken when the supervisor is connected.                                          |
| `on_customer_disconnected_message` | string | see below  | Spoken to the supervisor when the caller has hung up.                             |
| `on_supervisor_declined_message`   | string | see below  | Spoken to the caller when the supervisor declines or is unavailable.              |
| `condition`                        | string | none       | Optional expression; the action runs only when it evaluates true.                 |

### Default messages

These defaults ship with every warm transfer. Override any of them per action.

| Field                              | Default text                                                                                        |
| ---------------------------------- | --------------------------------------------------------------------------------------------------- |
| `supervisor_instructions`          | "Brief the supervisor on who the caller is, the context of the conversation, and the handoff goal." |
| `on_transfer_failed_message`       | "Sorry, I couldn't connect you right now. Can I take a message or try another number?"              |
| `on_successful_transfer_message`   | "Connecting you now. Please stay on the line."                                                      |
| `on_customer_disconnected_message` | "The caller has disconnected."                                                                      |
| `on_supervisor_declined_message`   | "They're unavailable right now. Would you like me to take a message or schedule a callback?"        |

<Note>
  The `supervisor_instructions` and the caller-facing messages are all rendered as templates, so you can reference conversation variables in them.
</Note>

## Conference

The agent dials `conference_number` into the current room and waits for it to answer, keeping the agent and existing participants on the call.

| Field               | Type   | Default  | Description                                                          |
| ------------------- | ------ | -------- | -------------------------------------------------------------------- |
| `conference_number` | string | required | The number to dial into the conference. Supports template variables. |
| `condition`         | string | none     | Optional expression; the action runs only when it evaluates true.    |

## Related

<CardGroup cols={3}>
  <Card title="Abilities and actions" icon="bolt" href="/agents/abilities-and-actions">
    How actions attach to agent abilities.
  </Card>

  <Card title="Telephony overview" icon="phone" href="/telephony/overview">
    Phone numbers, trunks, and call routing.
  </Card>

  <Card title="Agent assist" icon="headset" href="/agent-assist/overview">
    Live human-in-the-loop monitoring and takeover.
  </Card>
</CardGroup>
