Contact Sales

All fields are required

Intelligent Escalation: Warm Transfers With Full Context | SignalWire
Context-Preserving Transfers

Transfers Should Carry the Conversation.

Cold transfers lose everything. Callers repeat themselves. Agents start from scratch. SignalWire transfers carry context, authentication state, and a machine-written summary with the call.

100%
context preserved on transfer
< 1.2s
typical AI response latency
2,000+
companies in production
$0.16
per minute, AI processing
The Transfer Problem

Every Transfer Is a Chance to Lose the Customer

Lost Authentication

The caller verified their identity with the AI. On transfer, the receiving agent asks them to verify again. Authentication state was not carried.

Lost Conversation History

The caller explained their problem for three minutes. On transfer, the receiving agent asks: "How can I help you?" The conversation restarted from zero.

Lost Tool Results

The AI looked up the caller's order, checked their account balance, and confirmed their address. None of that context made it to the human agent.

Lost Patience

65% of customer experience frustration comes from bot loops and transfers that forget the conversation. Each repetition increases the chance the caller hangs up.

Cold Transfer vs. Platform-Native Transfer

Cold Transfer (Industry Default)

  • Authentication state lost, re-verification required
  • No conversation summary passed to receiving agent
  • Prior tool results discarded
  • Receiving party gets a ringing phone and nothing else
  • Your application must serialize and pass context out-of-band

SignalWire Warm Transfer

  • Authentication state preserved across transfer
  • Machine-written conversation summary delivered
  • All tool results and context included
  • Receiving agent or AI starts with full context loaded
  • Context is a platform property, not an application concern

Build a Voice AI Agent

from signalwire_agents import AgentBase
from signalwire_agents.core.function_result import SwaigFunctionResult

class SupportAgent(AgentBase):
    def __init__(self):
        super().__init__(name="Support Agent", route="/support")
        self.prompt_add_section("Instructions",
            body="You are a customer support agent. "
                 "Greet the caller and resolve their issue.")
        self.add_language("English", "en-US", "rime.spore:mistv2")

    @AgentBase.tool(name="check_order")
    def check_order(self, order_id: str):
        """Check the status of a customer order.

        Args:
            order_id: The order ID to look up
        """
        return SwaigFunctionResult(f"Order {order_id}: shipped, ETA April 2nd")

agent = SupportAgent()
agent.run()

What Travels With the Transfer

DataAutomatically IncludedConfigurable
Caller phone numberYesN/A
Call UUIDYesN/A
Authentication stateYesN/A
Current step positionYesN/A
Conversation transcriptYesInclude or exclude
Tool call historyYesInclude or exclude
Machine-written summaryConfigurableTemplate
Hidden data layer (PII, tokens)ConfigurableSelect fields

Transfer Patterns

AI to Human

The AI handles intake, verifies identity, and classifies the issue. On transfer, the human sees a screen pop with caller identity, conversation summary, and recommended actions.

AI to AI

A general intake agent hands off to a billing agent, scheduling agent, or technical support agent. Each has its own prompts, tools, and governance. The receiving AI starts with the caller's context loaded.

AI-Briefed Handoff

The AI places the caller on hold, dials the human specialist, and a second AI briefs them on the caller's issue. The specialist accepts or declines. If declined, the AI returns to the caller with alternatives.

💡
The AI-briefed handoff runs inside one declarative document. Hold, outbound dial, briefing, acceptance, and bridging all happen within a single call. The platform coordinates everything.

Secure Context Passing

The hidden data layer contains information that never enters the AI model's context window. Authentication tokens, session IDs, and internal identifiers pass to the receiving agent's tool handlers without being visible to the AI.

You control which fields travel with transfers. Sensitive data stays in the secure layer. Business context reaches the next agent or human.

Platform Comparison

CapabilityTypical Bolt-On StackSignalWire
Transfer mechanismHard cut (SIP REFER or new call leg)Platform-native with context
Context preservationSerialize to your state storeAutomatic (platform property)
Authentication stateLost on transferPreserved
Conversation historyYour app passes it out-of-bandPlatform carries it
Briefing patternBuild multi-call orchestration yourselfSingle declarative document
Transfer analyticsCorrelate multiple call recordsNative, single interaction trace

FAQ

Can I transfer from an AI agent to a human and back to AI?

Yes. Context is preserved across all transfers regardless of direction. A call can move between AI and human agents multiple times. Each handoff carries the full conversation state.

What happens if the transfer target does not answer?

You define the fallback behavior. The AI can return to the caller with alternatives, place them in a queue, offer a callback, or take a message. The platform tracks the outcome either way.

Does the hidden data layer work across AI-to-AI transfers?

Yes. Data in the hidden layer passes to the receiving agent's tool handlers. The receiving AI model never sees it. Only your backend code has access to protected fields.

How does pricing work for transfers?

$0.16 per minute for AI processing. Transport billed separately at carrier rates. Transfers within the platform do not incur additional per-transfer fees. You pay for AI processing time, not transfer events.

Trusted by

Stop Losing Context on Every Transfer

Build warm transfers where every handoff carries the full conversation.