Skip to content

Diagnose a failed post-call webhook

  1. Confirm PUBLIC_URL is the URL ElevenLabs can reach (Render URL in deploy).
  2. Confirm the dashboard webhook is POST $PUBLIC_URL/api/webhooks/elevenlabs.
  3. If ELEVENLABS_WEBHOOK_SECRET is set, the handler verifies HMAC against the raw body. A 401 is a signature mismatch (wrong secret, or a proxy that re-serialises JSON).
  4. The session row is keyed by elevenlabs_conversation_id. The client must call POST /api/sessions/:id/conversation on connect. If that never ran, the webhook returns session not found.
  5. Open Manager → Sessions → the session inspector. Transcript, duration, eval scores, and tool log should be present after a successful webhook.
  6. end_session_summary is not sufficient if the rep closes the tab. The webhook is the close path.

TODO: exact ElevenLabs signature header format if a future dashboard change breaks verification (elevenlabs-signature t and v0 today).