Skip to main content

Handoffs configure SIP call transfers for voice agents. They define how and where a call should be transferred, or whether it should be ended.

Handoffs are used when an agent needs to escalate, transfer, or terminate a voice interaction in a controlled way.
Handoffs are ADK-onlyThe Agent Studio UI does not currently expose an editor for config/handoffs.yaml. Define handoffs through the ADK and push them with poly push. Template references of the form {{ho:handoff_name}} only resolve inside ADK-managed files (rules.txt, topic actions, flow prompts) — pasting them into a UI-editable field does not work at runtime.

Location

Handoffs are defined in:
They are listed under the handoffs key.

What a handoff contains

Each handoff includes the following fields:

SIP config types

A handoff uses one of three SIP methods:

Notes

  • phone_number should use E.164 format
  • outbound_encryption can be TLS/SRTP or UDP/RTP

Example

How handoffs are used

In code

Call a handoff directly with conv.call_handoff(...).

In rules

Refer to a handoff using {{ho:handoff_name}}.

In topics and flows

Instruct the model to call a function that performs the handoff.

In code

You can trigger a handoff directly in code:

In rules

A handoff can be referenced in rules.txt using:
This is useful when rules need to explain when escalation or transfer should happen.

In topics and flows

Topics and flows should generally not perform raw transfer logic directly in prompt text. Instead, they should guide the model toward calling a function that performs the handoff. For example:

Round-trip behavior

After a push and pull, sip_headers: [] may be added to handoff entries that did not originally define it. This is injected by the platform and does not affect runtime behavior — the empty list is equivalent to no SIP headers. Expect this field to appear on round-trip if you did not include it yourself.

Best practices

  • use clear, descriptive handoff names
  • use E.164 format for phone numbers
  • create one handoff definition per transfer purpose
  • keep sip_headers minimal
  • only add custom SIP headers when the receiving system actually requires them
One purpose per handoffAvoid reusing a single handoff for multiple destinations or business cases. Clear handoff names make rules and code easier to understand.

Functions

See how handoffs are typically triggered from deterministic logic.

Agent settings

Learn how handoffs are referenced in rules.

Conversation object reference (platform)

Full reference for conv.call_handoff — destination, reason, utterance, and SIP header overrides.
Last modified on July 9, 2026