#I have a case: agent initiates outbound call, the end-user didn't accept the call and call goes ove
1 messages · Page 1 of 1 (latest)
Short answer:
- If the call goes to voicemail (i.e., an automated system answers), the call is considered successfully initiated. During any active conversation, the agent can invoke configured tools—including MCP tools—subject to your tool-approval settings. The built‑in Voicemail Detection system tool can detect voicemail, optionally play your message, and then end the call. (elevenlabs.io)
- If the user does not answer and the call never connects (declined/no answer and no voicemail), there is no conversation, so the agent will not execute any tools. You can handle these cases via the call_initiation_failure webhook on your side. (elevenlabs.io)
Notes:
- MCP tool usage is controlled by approval modes (Always Ask, Fine‑Grained per tool, or No Approval). If approval is required and not granted, the agent will be blocked from executing that MCP tool. (elevenlabs.io)
- Outbound calling behavior (Twilio) is standard: once the called party answers, the agent begins the conversation—voicemail qualifies as “answered.” Configure an initial message and voicemail handling as needed. (elevenlabs.io)
Sources:
Post-call webhooks | ElevenLabs Documentation
Post-call webhooks | ElevenLabs Documentation
Model Context Protocol | ElevenLabs Documentation
Twilio native integration | ElevenLabs Documentation
Is there a way to determine that call was success and caught voicemail? Because in 11labs & Twilio terms call was successful, but not from other business logic perspective, we have to call back when call was caught on voicemail
Yes. Use ElevenLabs’ built-in Voicemail Detection and post-call analysis to distinguish “connected but voicemail” from a successful human conversation:
- Enable the Voicemail Detection system tool. When a call is answered by voicemail, the agent can detect it, optionally leave a configured message, and end the call. The detection is logged in conversation history and batch call results. (elevenlabs.io)
- Programmatically identify voicemail via post-call webhooks:
- The post_call_transcription webhook delivers the full transcript plus analysis/metadata. Voicemail detections are emitted as a tool call (name: voicemail_detection), which you can look for in the transcript to mark the call for a callback. (elevenlabs.io)
- You can also define custom Success Evaluation criteria (e.g., “consider failure if voicemail was detected or no human turn occurred”). Results are exposed in conversation history and via post-call webhooks (analysis.evaluation_criteria_results and the call_successful field). (elevenlabs.io)
- Important nuance: ElevenLabs treats calls that reach voicemail as “successfully initiated,” so no call_initiation_failure webhook is sent in that case. Use the voicemail detection signal or your evaluation criteria to trigger a callback workflow. (elevenlabs.io)
References:
- Voicemail Detection tool: overview, behavior, and API config. (elevenlabs.io)
- Post-call webhooks: payload structure, analysis fields, and examples. (elevenlabs.io)
- Success Evaluation: custom criteria and webhook availability. (elevenlabs.io)
Sources:
Voicemail detection | ElevenLabs Documentation
Voicemail detection | ElevenLabs Documentation
Success Evaluation | ElevenLabs Documentation
Post-call webhooks | ElevenLabs Documentation
Voicemail detection | ElevenLabs Documentation
Post-call webhooks | ElevenLabs Documentation
Success Evaluation | ElevenLabs Documentation
How can I intercept 'voicemail_detection' tool call? It is system Elevenlabs tool, so I can't just intercept on my MCP server it. Where I can pull information that voicemail_detection tool was applied? Probably somehow from metadata? Maybe I need to add 'transcript' event to post call webhook... I dunno