I have a quick architecture question regarding phone numbers and agents in Retell.
If I create 5 different agents, do I strictly need to purchase 5 separate phone numbers for each of them? Or is it possible to use 1 single phone number and dynamically map/switch it between different agents?
For example, can I remove a phone number from one agent and assign it to another when needed, or route the incoming call to different agents based on conditions using the same number?
I would love to know the best practice for managing numbers across multiple test/production agents. Thanks!
A/B Testing / Traffic Split — Enable A/B testing on a number to bind multiple agents simultaneously and split traffic by percentage (e.g., 50/50). No conditions, but great for testing.
Agent Transfer mid-call — Route to different agents during a call based on logic using the Agent Transfer feature.
For test/prod workflows, the simplest approach is to use the Update Phone Number API to dynamically reassign the agent bound to the number as needed.
Short answer: no, you don’t need a number per agent. One number can cover all five.
A couple of ways to handle it, depending on what you’re after.
Manual swap. A number binds to one inbound agent at a time (and optionally a separate outbound agent). You can change which agent is bound whenever you like with the Update Phone Number API, just set inbound_agent_id. So you can pull a number off one agent and put it on another without buying more. Fine for flipping between test and prod.
Dynamic routing (the one you actually want). Set up an Inbound Call Webhook on the number. Every inbound call hits your webhook first, before it connects. You get the from_number and to_number, and you respond with override_agent_id to pick which agent answers that specific call. Same number, different agent, based on whatever logic you want: caller, time of day, whatever. You can also pass dynamic variables and even reject unwanted calls from there.
For test vs prod specifically, I’d keep prod on its own number and test agents with web calls or outbound via the API, so you’re not constantly rebinding a live line.
Best practice in one line: one number plus an inbound webhook for routing beats one number per agent, unless an agent genuinely needs its own public line.
If you have a way to determine which agent you want it to go to (ie CRM or something like that) then you can use an inbound webhook on the number and then you can build the logic to send to whatever agent you want it to.