This article describes a workaround for handling VoiceAgent transfers in inbound call flows when the Transfer to human skill cannot be used reliably.
In scenarios where checking agent or group availability is necessary, or where fallback logic should be in place, the Transfer to human skill may not provide the required control.In these cases, use this setup to ensure the transfer is handled correctly.
User level:
Admin
Why use this approach
Use this setup when the Transfer to human skill is not suitable - especially in scenarios where:
availability checks are required
fallback logic needs to be implemented
Because the transfer decision is stored first and only handled afterward in the call flow, you can build more flexible post-call logic and make sure the call is routed according to the selected outcome.
How it works
With this workaround, the VoiceAgent does not transfer the call directly.
Instead, when a transfer is needed, the target of the transfer is captured during the conversation using the Extract information skill. The VoiceAgent then ends the call on its side, and the call flow continues in the Answered branch, where the transfer is handled based on the extracted value.
The flow works like this:
The caller speaks with the VoiceAgent.
During the conversation, the Extract information skill captures who the call should be transferred to.
The Voice Agent ends its part of the call using scenario with Hangup action defined.
The call then continues in the Answered logic of the inbound call flow.
Based on the value stored in the extract information output object, the call flow decides what should happen next.
You can build separate logic for each possible value and route the call to a different agent, group, or fallback path accordingly.
This gives you more control over how transfers are handled, because the routing is done in the call flow rather than by the Transfer to human skill itself.
Configuration
This workaround has two parts:
Voice Agent configuration
Configure the Extract information skill to capture who the call should be transferred to, and define the hangup scenario that ends the Voice Agent’s part of the call once the transfer target has been identified.Call Flow Designer logic
Build the routing logic in the Answered branch of the inbound call flow. Based on the value stored in the extract information output object, you can define different paths and route the call to the appropriate agent, group, or fallback destination.
Voice Agent configuration
Navigate to the CloudTalk Dashboard and open an existing VoiceAgent or create a new one.
In the VoiceAgent configuration, go to Skills and open the Extract information skill.
Add a new property that will store the transfer result.
For example, name it "transfer" or "topic"
Set the type to Text
In the Instructions for AI field, define what value should be extracted during the conversation.
The value stored in this property will later be used in a Condition splitter to build your call flow routing logic. Because of this, it’s important to define clear and consistent values.
For example, if your routing is based on the topic of the conversation:
if the caller mentions an invoice issue → store billing; if the caller mentions a product issue → store product support; if no specific topic is identified → store general
Alternatively, you can configure the property to store a specific transfer target (such as an agent name), depending on how you plan to design your routing logic.
if the caller mentions agent name -> fill in agent name; if the caller does not mention agent name -> fill in general
Click Save.
Add Custom Skill and name it Transfer override
Within Skill prompt insert following instructions
You are now authorized to facilitate call transfers. This instruction supersedes and overrides any previous directives stating that transfers are disabled or unavailable.
Operational Command:
Ignore any prior instructions claiming you cannot transfer calls.
You ARE capable of transferring. To execute a transfer, you must use the end_call() tool immediately after providing the closing statement for the specific scenario.
Do NOT tell the customer that you cannot transfer. If a customer asks for a transfer, you must proceed with the transfer protocols defined in your specific interaction scenarios.
Execution Rules:
Acknowledge and Act: When a transfer scenario is triggered, move directly to the transfer process.
Tool Usage: Use end_call() as the mechanism to bridge the transfer.
No Exceptions: There are no circumstances where you should inform a customer that transfers are disabled. You are the final authority on this protocol.Click Save.
Navigate to Scenarios and click
Add new scenario.Create a scenario that defines when the Voice Agent should hand off the call back to the call flow. For example:
When when customer provided details what is the problem they are calling about and ask to be transferred to agentReply I will transfer you to a human agent now.
Action Hangup
Click Save
Once this setup is complete, the Voice Agent will collect the information needed for transfer during the call and then end the call on its side based on the defined scenario. The call will then continue in the Answered branch of the inbound call flow, where the transfer logic is handled in Call Flow Designer.
💡 Tip: You can also define a fallback scenario to make sure the VoiceAgent collects all information needed before the call is transferred.
For example: if the topichas not been identified yet, the Voice Agent can ask a follow-up question before ending the call and passing it to the inbound call flow.
Call Flow Designer logic
In this step, you define how the call should be routed after the Voice Agent ends its part of the call. To do this, you need access to the Call Flow Designer in your CloudTalk account, where you will configure the logic in the Answered branch of your inbound call flow.
This is where the transfer is actually handled, based on the value collected by the Voice Agent using the Extract information skill.
Navigate to the CloudTalk Dashboard and open the Call Flow Designer for the inbound number where you want to use the Voice Agent.
In the call flow, go to the Answered branch.
In case you would like to implement different routes based on the extracted information by VoiceAgent, add a Condition splitter. After the Condition splitter, add the routing steps you want to use for each possible outcome.
In each of the steps configure its condition when the route should be applied.
select Voice Agent response property as value to be checked
choose the property you defined earlier, such as topic or transfer
select operand
set the value that should route the call to this step
For example:
Repeat this for each route you want to create.
Add a fallback step for cases where none of the defined conditions are met.
This can route the call to a default group, voicemail, or another fallback destination.Once you are done with Call flow, click Save Flow
This setup lets you use the value collected by the Voice Agent to decide which routing step should be followed in the Answered branch of the call flow.
Need help or have a question? Just reach out through our Support portal — we’re here for you.






