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

# How transfers work

> Who can receive a transfer, the limits, the topic check, reverts, the notes in Conversations and what it costs

## What happens in one transfer

<Steps>
  <Step title="The agent picks a destination" icon="route">
    On each customer message, the agent is offered only the destinations that are valid **right now** for this conversation. It picks one by reading each destination's "when".
  </Step>

  <Step title="Dialtu checks the destination again" icon="list-check">
    Same line, active, not deleted, not itself, the right direction, the client's tags, and the limits. Anything can have changed since the turn started.
  </Step>

  <Step title="The topic check" icon="shield-check">
    A small AI check reads the customer's latest messages and the destination's "when". If they don't match, there's no transfer.
  </Step>

  <Step title="The conversation moves" icon="arrow-right-arrow-left">
    The conversation now belongs to the new agent, and a note is written.
  </Step>

  <Step title="The new agent answers the same message" icon="comment">
    In the same turn, without a greeting and without mentioning any transfer. The customer receives **one** reply.
  </Step>
</Steps>

## Who can receive a transfer

Every destination must be **active**, **not deleted**, **not the agent that's transferring**, and in the **same workspace**. On top of that, per channel:

| Channel | Same… | Direction | Audience |
| - | - | - | - |
| **WhatsApp** | WhatsApp line as the conversation | An **inbound** conversation needs an agent that answers inbound (**Inbound** or **Inbound & outbound**). An **outbound** one accepts any agent | The destination's client tag audience applies: a customer outside it isn't offered to that agent |
| **SMS (Lumina)** | SMS number, and the destination runs on Lumina | An **inbound** conversation needs a destination with an **inbound** binding on that number. An outbound one accepts any binding | — (SMS has no tag audiences) |
| **Messenger** | Facebook Page | The destination must answer incoming messages | — |

<Note>
  **Invalid destinations are simply not offered.** If a destination is switched off, on another line or outside the customer's tags, the agent doesn't see it that turn — so there's usually no note, just no transfer. A failure note only appears when something changes between the offer and the transfer, or when a limit or the topic check stops it.
</Note>

## Limits

| Limit | Value | What happens when it's reached |
| - | - | - |
| **Per customer message** | 1 transfer | A second attempt in the same turn fails with *only one transfer is allowed per customer message* |
| **Per conversation** | 5 transfers | The tool is no longer offered for the rest of the conversation, and a note is written once |

<Warning>
  **Reverted transfers count toward the 5.** A transfer that was undone still spent the budget.
</Warning>

## The topic check

Before anything is committed, a small AI check answers one question: *is what the customer asked for in their latest messages covered by the destination's "when"?* It reads up to the last 6 messages of the conversation and judges the customer's words, not the agent's reason.

* **It matches** → the transfer goes ahead.
* **It doesn't match** → no transfer. The current agent answers the customer itself. A note says *the customer's topic does not match that agent's scope*.
* **The check fails or times out** → the transfer goes ahead anyway. A broken check never blocks a legitimate transfer.

<Tip>
  The topic check is only as good as your "when" texts. A destination described as *"other questions"* matches almost nothing — and almost everything.
</Tip>

## Silent handover

The receiving agent gets a hidden instruction: it's continuing a conversation that was handed to it internally, it must not greet or introduce itself again, must not mention any transfer or other agent, and must answer the customer's latest message directly.

What the customer sees: one reply, from the new agent, to the message they just sent.

## When the new agent fails: revert

If the receiving agent errors — or finishes its turn without sending the customer anything — **before** replying:

1. The conversation goes back to the original agent.
2. The original agent answers the customer.
3. A red note says the transfer was undone.

If the new agent had already sent something, there's no revert: the customer would otherwise hear from both agents.

## Topics nobody handles

When the agent can't transfer — no valid destination this turn, the limit was reached, or the topic check said no — Dialtu tells it to:

1. Try to help with what it can.
2. If it genuinely can't, say so and **ask** whether the customer wants to talk to a human advisor.
3. Hand off to a person (with its **Handoff** tool, if it has one) **only if the customer says yes**.

The [Alcance block](/en/agent-transfer/transfer-tool#write-the-alcance-block-in-each-agents-prompt) in the prompt reinforces this.

## There's no automatic return

The conversation stays with the new agent until something else moves it: another transfer, a person taking over, or the session closing. To let agents send customers back, attach the same transfer tool to all of them.

## The notes in Conversations

<Frame caption="A failed transfer: amber note, and the current agent keeps answering">
  <img src="https://mintcdn.com/dialtu-0be120d3/tksmwmFP8pONiCuz/images/en/agent-transfer/conversation-failed.png?fit=max&auto=format&n=tksmwmFP8pONiCuz&q=85&s=9dfafc11e6fc03b3baefbfb0f7959e85" alt="A WhatsApp conversation in Conversations where the customer asks about SOAT insurance; the transferir_al_especialista tool bubble is marked Failed, an amber centred note reads Couldn't transfer to Asistencia en vía — the customer's topic does not match that agent's scope. The current agent kept the conversation., and the current agent then offers to put the customer in touch with a human advisor." width="2880" height="1800" data-path="images/en/agent-transfer/conversation-failed.png" />
</Frame>

Every transfer attempt that reaches the transfer step leaves a centred note on the thread. The tool call itself also appears as a tool bubble.

| Note | Colour | What it means |
| - | - | - |
| *Transferred from X to Y* (sometimes *· reason*) | Neutral | The transfer happened. Y answered the message |
| *Couldn't transfer to Y — reason. The current agent kept the conversation.* | Amber; red for an internal error | Nothing changed. The current agent answered |
| *Transfer to Y was undone — reason. X kept the conversation.* | Red | Y failed before replying; X answered instead |
| *Transfer limit reached (5) — the current agent keeps the conversation* | Neutral | No more transfers in this conversation |

The reason in a failure note is one of these:

| Code | Text in the note |
| - | - |
| `destination_unavailable` | *that agent is not available for this conversation* |
| `inactive` | *that agent is switched off* |
| `deleted` | *that agent no longer exists* |
| `wrong_line` | *that agent does not answer on this WhatsApp line* (SMS: *…on this SMS number*) |
| `wrong_page` | *that agent does not answer on this Facebook Page* |
| `wrong_direction` | *that agent does not handle this kind of conversation (inbound/outbound)* |
| `tag_excluded` | *this customer's tags are outside that agent's audience* |
| `turn_limit` | *only one transfer is allowed per customer message* |
| `session_limit` | *this conversation reached its transfer limit* |
| `same_agent` | *the agent tried to transfer to itself* |
| `topic_mismatch` | *the customer's topic does not match that agent's scope* |
| `internal_error` | *an internal error occurred* — the only red one |

## What it costs

**One billed AI message per customer message**, however many steps the turn took. The transferring agent's decision, the topic check and the new agent's reply are folded into the single message the customer receives. A reverted transfer is billed the same way: one message, from the agent that actually answered.

The transfer tool itself has no extra price.

## What doesn't exist

* **A transfer across lines**, numbers or Pages.
* **A per-agent limit** — the limits are per message and per conversation.
* **Changing the limits** — 1 and 5 are fixed.
* **Automatic return** to the first agent.

## Next step

<Card title="Transfers in Salesflow" icon="diagram-project" href="/en/agent-transfer/salesflow">
  React to a transfer in a pipeline.
</Card>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.