Learn
→
Resources
→
Use Cases
→
IVR and Call Routing
— IVR and Call Routing
IVR and call routing where every caller lands in the right place.
Define the call flow in your code and route on live caller data to a queue, an agent, or an AI. The platform owns the call's state so your app never rebuilds context on a transfer.

The hard part
Routing breaks when the call can't hold its own state.
Traditional platforms treat a call as a one-off transaction. The moment you route it, the caller's identity, their authentication, and everything they've told you disappears.
So your app becomes the memory, rebuilding call state from webhook events that arrive late, out of order, or not at all, always a step behind a call moving in real time. On SignalWire’s control plane, the call carries its own state. Identity, authentication, and context stay with it through every handoff, to a human, a queue, or an AI. Route it as many times as you want; nothing gets rebuilt and no one starts over.
How it works
Follow one call’s state through every handoff
The call arrives as a single stateful object and carries everything it learns. Click any step to inspect it.
Build it
Route your first call in a few lines
Define the flow in code, route on live data, and hand off to a human or an AI. The control plane owns the call's state so identity and context arrive with the call.
The platform behind it
The SignalWire products behind IVR & Call Routing
Define the flow in code, route on live data, and hand off to a human or an AI. The control plane owns the call's state so identity and context arrive with the call.
The hard parts
The hard parts and how SignalWire handles them.
In production
Built by teams that route at scale
FAQ
Frequently asked questions
Everything you might want to know about call routing, from migrating off Twilio to handling AI handoffs.
How is this different from Twilio or other CPaaS platforms?
On a CPaaS, the platform fires events and your application holds the call's state, so you rebuild identity, context, and transfer logic yourself. SignalWire owns the call as a stateful object. Identity, authentication, and context stay with the call through every transfer, so you write the routing logic, not the plumbing that keeps state in sync.
Can I migrate from Twilio without rewriting everything?
Yes. SignalWire supports cXML, a compatibility layer that runs TwiML-style scripts, so much of your existing code works by changing the endpoint. You can migrate incrementally and move to SWML for the flows where you want the control plane's state handling.
Can I route calls to an AI agent?
Yes. An AI voice agent is a native routing destination, the same as a queue or a human. You define what the agent can do with your own rules, and the call keeps its full context when it hands off, so the agent starts with everything the caller already gave.
Do I need to write different code for phone, SIP, and WebRTC callers?
No. A call is the same object whatever protocol it arrives on, so one flow handles phone numbers, SIP, and WebRTC callers, and routes them to the same destinations with the same logic.
How is call routing priced?
Routing runs on standard per-minute call pricing, with capabilities like AI, recording, and queuing billed as you use them. There are no per-feature platform minimums, and you can find current rates on the pricing page.
Can I change or reroute a call while it's in progress?
Yes. Every call is addressable by its ID for its whole life, so you can transfer it, reroute it, or update it in real time, without rebuilding the call or losing its state.


