#In conversational AI the phone agent works correctly, it overrides the initial call data, but when
1 messages · Page 1 of 1 (latest)
Most likely because the web widget is blocked by one of the widget‑specific requirements:
- Authentication is enabled on the agent. Widgets currently require public agents with authentication disabled; otherwise the widget will show as unavailable. Disable auth in the agent’s Advanced settings. (elevenlabs.io)
- The widget’s host isn’t allowed. If you’ve set an allowlist, the site’s domain must be added (or remove the allowlist while testing) or you’ll see a connection failure. (elevenlabs.io)
- Required runtime inputs aren’t being passed. If your agent requires dynamic variables or you’re providing overrides, they must be supplied via the widget attributes and the corresponding override fields must be enabled in the agent’s Security settings; otherwise calls fail with errors like “Missing required dynamic variables” or “Override is not allowed.” (elevenlabs.io)
What to do:
- Make the agent public (disable authentication) and republish the site. (elevenlabs.io)
- Ensure your domain is in the agent’s Allowlist or turn the allowlist off for testing. (elevenlabs.io)
- If you rely on per‑session data, pass it in the embed, for example using dynamic-variables and override-* attributes, and enable those overrides in Security. (elevenlabs.io)
If it still fails, check Call History for the exact failure reason surfaced by the platform. (help.elevenlabs.io)
Sources:
Widget customization | ElevenLabs Documentation
Widget customization | ElevenLabs Documentation
Widget customization | ElevenLabs Documentation
Widget customization | ElevenLabs Documentation
Widget customization | ElevenLabs Documentation
Widget customization | ElevenLabs Documentation
Where can I locate the reason for my call failing? – ElevenLabs
I already disabled authentication. There are now entries in allowlist. The widget is not fetching my overrides at all but the telephone agent is, why?
Short answer: the web widget won’t call your Twilio “conversation initiation” webhook. That webhook-based override flow applies to inbound Twilio phone calls only. For the widget, you must pass personalization at runtime (attributes/SDK), and the relevant override fields must be enabled on the agent. (elevenlabs.io)
What to check/fix:
- Pass overrides via the widget attributes (e.g., override-prompt, override-first-message, override-language, override-voice-id) or supply data using dynamic-variables. SDK/runtime overrides take precedence over UI settings. (elevenlabs.io)
- Prefer dynamic variables for per-user context; use the dynamic-variables attribute in the embed, or URL parameters on the public talk-to page. (elevenlabs.io)
- In the agent Security settings, ensure the specific override fields you want to change are enabled; otherwise the platform rejects/ignores those overrides. Check your browser console for the error if they aren’t enabled. (elevenlabs.io)
- If you keep an allowlist, confirm the site’s origin domain is on it; non-allowlisted origins are blocked. (Widgets also require the agent to be public with authentication disabled.) (elevenlabs.io)
In practice: keep your Twilio webhook for phone calls, and separately pass the same data to the widget via dynamic-variables/override-* attributes when rendering the embed. (elevenlabs.io)
Sources:
Twilio personalization | ElevenLabs Documentation
Widget customization | ElevenLabs Documentation
Dynamic variables | ElevenLabs Documentation
Overrides | ElevenLabs Documentation
Authentication | ElevenLabs Documentation
Widget customization | ElevenLabs Documentation
does widget also call the post call webhook?
Yes. Post-call webhooks fire for Agents Platform conversations started via the web widget. You’ll receive post_call_transcription (and, if enabled, post_call_audio) when the widget session ends. Only call_initiation_failure is telephony-specific and won’t fire for widget sessions. Configure these webhooks in Agents Platform settings; the widget is an Agents Platform integration. (elevenlabs.io)
how will widget handle the transfer to a telephone number?
Short answer: it won’t. The “Transfer to Human” system tool (transfer_to_number) is only available for phone calls; it is not exposed in web widget sessions, so the widget cannot bridge a browser conversation into the PSTN. (elevenlabs.io)
What you can do instead from the widget:
- Use a Client Tool to open a tel: link or redirect the user to a “call us” URL (or any UI flow you control). (elevenlabs.io)
- Collect a callback number, then trigger an outbound call programmatically via the API (Twilio or SIP trunk). Note this starts a separate phone call; it does not join the web user into that call. (elevenlabs.io)
References:
- Transfer to Human (phone-only) system tool. (elevenlabs.io)
- Widget customization and Client Tools (redirects, external URLs). (elevenlabs.io)
- Outbound call APIs (Twilio, SIP trunk). (elevenlabs.io)
Sources:
Transfer to human | ElevenLabs Documentation
Widget customization | ElevenLabs Documentation
Outbound call via twilio | ElevenLabs Documentation
Transfer to human | ElevenLabs Documentation
Widget customization | ElevenLabs Documentation
Outbound call via twilio | ElevenLabs Documentation
Inside the Agent settings -> Security -> Post-Call webhook I added my URL so the agent can send the call finished data. It works with telephone calls but it does not work with web widget calls. Why?
Short answer: you’re likely listening for the wrong webhook type (or the conversation isn’t being ended on the web).
Details:
-
ElevenLabs has three post-call webhook types:
- post_call_transcription: full transcript + analysis + metadata
- post_call_audio: base64 MP3 of the conversation audio only
- call_initiation_failure: telephony call setup failures only (Twilio/SIP)
If you only enabled post_call_audio, it will fire for telephone calls (voice) but not for a chat-only web widget session, which has no audio. Enable post_call_transcription to receive web widget completions. (elevenlabs.io)
-
Audio webhooks are optional and controlled by the “Send audio data” toggle. They contain only audio and no transcript; they won’t be sent for text-only sessions. (elevenlabs.io)
-
Post-call webhooks are dispatched only after the conversation ends and analysis completes. On the web, if users just close the widget, your agent may not explicitly end the call; ensure the agent invokes the End Call system tool (or you programmatically end the session) so analysis and the webhook trigger. (elevenlabs.io)
-
The call_initiation_failure webhook is telephony-specific and won’t ever fire for web widget sessions. (elevenlabs.io)
Also confirm you’ve enabled the post_call_transcription event in Agents Platform settings/webhooks at the workspace or agent override level. (elevenlabs.io)
Sources:
Post-call webhooks | ElevenLabs Documentation
Post-call webhooks | ElevenLabs Documentation
Post-call webhooks | ElevenLabs Documentation
Post-call webhooks | ElevenLabs Documentation
Post-call webhooks | ElevenLabs Documentation
web widget is not ending the conversation, it takes several minutes to end the conversation on its own, even if the user says goodbye
Likely cause: the web widget session only ends when either
- the agent explicitly calls the End Call system tool, or
- the user clicks the widget’s End call button.
If your agent can’t or doesn’t call the End Call tool when a user says “goodbye,” the widget session stays open and your post‑call webhook won’t fire until the call actually ends. ElevenLabs documents the End Call tool (added by default only for agents created in the dashboard; if you created the agent via API/SDK you must add it yourself) and shows example prompts like “End the call when the user says goodbye.” (elevenlabs.io)
What to do
- Ensure the End Call tool is present in your agent configuration. If you created the agent via API/SDK, add the system tool named end_call. (elevenlabs.io)
- Add a brief instruction so the LLM knows when to trigger it, e.g., “End the call when the user says goodbye or has no more questions.” (See Example prompts on the End Call page.) (elevenlabs.io)
- Alternatively, have users click the widget’s End call button; the widget exposes this control (customizable via the end-call-text attribute). (elevenlabs.io)
- Remember: post‑call webhooks are only sent after a call ends (analysis complete). If the widget call never ends, no webhook is delivered. (elevenlabs.io)
Related settings: “Turn Timeout” affects silence handling within a turn, not call termination; use End Call for ending logic. (elevenlabs.io)
Sources:
End call | ElevenLabs Documentation
End call | ElevenLabs Documentation
End call | ElevenLabs Documentation
Widget customization | ElevenLabs Documentation
Post-call webhooks | ElevenLabs Documentation
Conversation flow | ElevenLabs Documentation
if the user closes the window, will the post-call webhook be called?