| name | elevenlabs-webhooks-events |
| description | Implement ElevenLabs webhook HMAC signature verification and event handling.
Use when setting up webhook endpoints for transcription completion, call
recording, or agent conversation events from ElevenLabs.
Trigger with "elevenlabs webhook", "elevenlabs events",
"elevenlabs webhook signature", "handle elevenlabs notifications",
"elevenlabs post-call webhook", "elevenlabs transcription webhook".
|
| allowed-tools | Read, Write, Edit, Bash(curl:*) |
| version | 1.6.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","voice","ai","elevenlabs","webhooks","events"] |
| compatibility | Designed for Claude Code |
ElevenLabs Webhooks & Events
Overview
ElevenLabs webhooks send HTTP POST notifications when async operations complete: transcription completion, post-call data from Conversational AI agents, and call initiation failures. Every delivery is signed with an HMAC-SHA256 signature you must verify before processing. This skill builds a secure endpoint that verifies signatures, routes events by type, and acks fast to avoid auto-disable.
Prerequisites
- ElevenLabs account (webhooks configured in Settings > Webhooks)
- HTTPS endpoint accessible from the internet
- Webhook secret (generated during webhook creation in dashboard)
Instructions
The full, copy-ready code for each step lives in references/implementation.md; per-event handlers live in references/examples.md. The high-level workflow:
- Know the event types — subscribe only to what you handle (table below).
- Create the webhook in the dashboard (Settings > Webhooks) and copy the HMAC secret.
- Verify the signature with HMAC-SHA256 over
"<timestamp>.<raw_body>", using a timing-safe compare and a 5-minute replay window. See the full verifier.
- Handle the request with a raw body parser, ack
200 immediately, then process asynchronously. See the Express handler.
- Route events to per-type handlers. See handler examples.
- Guard against duplicates with idempotency keyed on the event ID. See idempotency.
- Test locally by tunneling with ngrok. See local testing.
Webhook event types
| Event Type | Payload | When Triggered |
|---|
post_call_transcription | Full conversation transcript, analysis, metadata | After Conversational AI call ends |
post_call_audio | Base64-encoded call audio, minimal metadata | After call ends (if audio recording enabled) |
call_initiation_failure | Failure reason, metadata | When an outbound call fails to connect |