Interactive Demo
See the Transfer Call feature in action:Overview
It is common in call operations to transfer calls to another human agent or AI agent. OpenMic provides flexible transfer options through two modes:- Static Mode: Configure transfers directly in the dashboard with warm/cold transfer options, human detection, agent confirmation, and custom handoff messages
 - Webhook Mode: Dynamically route calls using your own backend logic for real-time destination determination with fallback support
 
Configuration Steps
1. Add Transfer Call Function
In your bot settings, navigate to the custom functions section and add a new “Transfer Call” function.
2. Configure Basic Settings

- Define the function name using snake_case (e.g., 
transfer_call) - This name will be used by the AI to trigger the transfer
 
- Static: Configure transfer settings directly in the dashboard
 - Webhook: Use dynamic routing via webhook to determine transfer destination at runtime
 
Static Mode Configuration
When using Static mode: Transfer To Select your transfer destination type:- Static Number: Specify a fixed phone number (E.164 format)
 - Dynamic Routing: Use a prompt to handle dynamic call transfer routing
 
Webhook Mode Configuration
When using Webhook mode, you can dynamically determine the transfer destination at runtime using your webhook endpoint. Transfer Number- Enter a phone number in E.164 format (e.g., +1234567890)
 - This number can be used as a fallback or default destination
 
Use this to validate or enrich data before the transfer happens.
- Dynamically determine the transfer destination based on real-time data
 - Validate the transfer conditions
 - Enrich the call data with additional context from external systems (CRM, availability APIs, etc.)
 
- 
Use the pre-call webhook URL: Reuse the webhook URL configured in your agent settings
If no pre-call webhook URL is configured in agent settings, this option cannot be used. Configure it first in your bot’s main settings.
 - 
Custom webhook URL: Provide a specific webhook URL for this transfer function
- Example: 
https://your-domain.com/webhook/pre-tool - This URL will receive the transfer request data and can return dynamic variables including the transfer destination
 
 - Example: 
 
- OpenMic sends a POST request to your webhook with call details
 - Your webhook returns dynamic variables, including the 
transfer_number - The call is transferred to the number specified in your webhook response
 
Graceful Degradation: If your webhook fails or times out (3 seconds), the fallback transfer number you configured will be used.
3. Configure Transfer Type
Warm and Cold transfer types are only available for Static mode as of now. Webhook mode support for these transfer type configurations will be available soon.
- Cold Transfer
 - Warm Transfer
 
Cold Transfer: AI transfers the call without a debrief.The call is immediately transferred to the destination number. The AI agent disconnects after completing the transfer.
4. Configure Transfer Behavior Settings
These settings are only available when using Static mode with warm transfer enabled.

On-hold Music
Select the audio played to the caller while they are on hold during the transfer process. The default is a standard ringtone.Navigate IVR
Toggle this setting if the transfer destination is an IVR system
Human Detection
When enabled, the AI will only debrief if a real human is detected. It will not transfer if it detects a voicemail or non-human response.
Whisper Message
If checked: spoken only to the transfer agent
- Prompt: Dynamic message generated by AI based on call context
 - Static Sentence: Fixed message you define
 
Human Agent Confirmation
When enabled, the AI will ask the human agent for confirmation before transferring the call. This ensures the agent is ready and available to take the call. If the agent declines or is unavailable, the transfer will be cancelled and the original caller will remain connected to the AI agent.Three-way Message
If checked: spoken after transfer successful, both parties can hear
- Prompt: Dynamic message based on call context
 - Static Sentence: Fixed message
 
Best Practices
Update Your Agent Prompt
Enhance the agent’s understanding by incorporating transfer conditions into your bot’s main prompt:When to Use Webhook Mode
Webhook mode is ideal for advanced routing scenarios: Static Mode is best for:- Fixed transfer destinations that don’t change
 - Simple routing rules you can configure in the dashboard
 - Quick setup without backend development
 - Using built-in warm/cold transfer features with human detection and whisper messages
 - Configuring transfer behavior directly in the OpenMic UI
 
- Dynamic routing based on real-time data (e.g., agent availability, time of day, customer priority)
 - Integration with external systems (CRM, scheduling tools, queue management)
 - Complex routing logic that requires backend processing
 - A/B testing different transfer strategies
 - Load balancing across multiple agents or departments
 - Custom transfer logic implemented in your backend (you handle warm/cold transfer behavior in your code)
 
Define Clear Transfer Conditions
Be specific about when transfers should occur:- User explicitly requests human assistance
 - User expresses frustration or dissatisfaction
 - Query is outside the AI’s capabilities
 - High-value or sensitive situations requiring human judgment
 
Use Warm Transfer for Better Experience
Warm transfers provide context to the receiving agent, resulting in:- Better customer experience (no need to repeat information)
 - More efficient handling by human agents
 - Higher first-call resolution rates
 
Configure Appropriate Timeouts
Set detection timeouts based on your team’s typical response patterns:- Fast-paced teams: 15-20 seconds
 - Standard operations: 30 seconds (default)
 - High-volume periods: 45-60 seconds
 
Example Use Cases
Customer Escalation
Customer Escalation
When a customer is upset or dissatisfied, automatically detect sentiment and transfer to a human agent with context about the issue.Setup:
- Use warm transfer to provide context
 - Enable human detection to ensure an agent answers
 - Set whisper message: “Customer escalation - they are frustrated about billing issue”
 - This allows the human agent to prepare before taking the call
 
Sales Handoff
Sales Handoff
When a prospect shows interest in purchasing, transfer to sales team with qualification details.Setup:
- Configure warm transfer to sales team number
 - Enable human agent confirmation to ensure availability
 - Whisper message: “Qualified lead interested in enterprise plan”
 - Three-way message: “I’m connecting you with our sales team now”
 - This creates a smooth handoff with full context
 
Department Routing
Department Routing
Route calls to different departments based on customer intent.Setup:
- Use dynamic routing with prompt-based destination
 - Cold transfer for quick routing without AI intervention
 - Routing logic: “Route to billing for payment issues, support for technical issues, sales for upgrades”
 - Update your agent prompt to identify the correct department based on customer needs
 
Smart Agent Availability (Webhook Mode)
Smart Agent Availability (Webhook Mode)
Use webhook mode to route calls only to available agents in real-time.Setup:
- Select Webhook mode
 - Enable “Call a webhook before running this tool”
 - Configure custom webhook URL pointing to your agent availability system
 - Your webhook receives call data and returns the phone number of an available agent
 - If no agents available, webhook can return an alternative action (e.g., voicemail, callback scheduling)
 - This ensures customers are only transferred when an agent is ready to help
 
Troubleshooting
Transfer fails or drops
Transfer fails or drops
Possible causes:
- Invalid destination phone number format (use E.164 format: +[country code][number])
 - Detection timeout too short for agent to respond
 - Human detection enabled but voicemail or IVR answered
 
- Verify phone number format
 - Increase detection timeout
 - Disable human detection if transferring to known IVR systems
 
Agent doesn't hear whisper message
Agent doesn't hear whisper message
Possible causes:
- Whisper message not enabled
 - Agent answered but was placed on hold by their system
 
- Verify whisper message is enabled in settings
 
Human detection not working properly
Human detection not working properly
Possible causes:
- Detection timeout too short
 - Background noise causing false positives
 - Auto-greet disabled, resulting in silence
 
- Enable auto-greet to encourage response
 - Increase detection timeout to 45-60 seconds
 - Test in quiet environment first
 
Webhook not responding or timing out
Webhook not responding or timing out
Possible causes:
- Webhook URL is incorrect or unreachable
 - Webhook server is down or slow to respond (timeout is 3 seconds)
 - Pre-call webhook URL not configured in agent settings
 
- Verify the webhook URL is correct and accessible
 - Optimize your webhook to respond within 3 seconds (OpenMic retries up to 3 times)
 - If using “Use the pre-call webhook URL”, ensure it’s configured in your bot’s main settings
 - Check webhook logs for errors or timeouts
 - Use custom webhook URL as an alternative if pre-call webhook is having issues
 - If webhook fails, OpenMic will use the fallback transfer number you configured
 
Webhook returns wrong transfer destination
Webhook returns wrong transfer destination
Possible causes:
- Webhook logic not properly handling call context
 - Missing or incorrect data in webhook payload
 - Response format doesn’t match expected structure
 
- Ensure your webhook returns 
transfer_numberin thedynamic_variablesobject - Review the Pre-tool Webhook request/response format
 - Add logging to your webhook to debug what data is being received
 - Verify the transfer number is in E.164 format (e.g., +1234567890)
 - Test with different call scenarios to ensure routing logic covers all cases