#does eleven labs retry post-conversation webhooks if the response fails?
1 messages · Page 1 of 1 (latest)
No. Post-conversation (post-call) webhooks are delivered once and must return HTTP 200 to be considered successful; for HIPAA compliance, failed deliveries are not retried. Repeated failures can cause the webhook to be auto‑disabled after 10 consecutive failures if the last success was more than 7 days ago or never succeeded. (elevenlabs.io)
The general webhook documentation also notes that each webhook event is dispatched only once; if you miss an event, use the API to poll for product-specific data. (elevenlabs.io)
Sources:
Post-call webhooks | ElevenLabs Documentation
Webhooks | ElevenLabs Documentation
how can i get the key to verify incoming webhooks with HMAC in my backend?
Short answer: you get it when you create the webhook.
Two ways:
- Dashboard: Go to Administration -> Workspaces -> Webhooks, create a webhook with auth type HMAC, and copy the shared secret that’s generated at creation. Store it securely; you’ll use it to verify the ElevenLabs-Signature on incoming requests. (elevenlabs.io)
- API: Create a workspace webhook via POST /v1/workspace/webhooks with auth_type=hmac. The response returns { "webhook_id": "...", "webhook_secret": "..." }. Persist webhook_secret on your side for HMAC verification. (elevenlabs.io)
Reference for using the secret to verify requests (or via the SDK’s construct_event helper) is in the Webhooks docs under Authentication. (elevenlabs.io)
Sources:
Webhooks | ElevenLabs Documentation
Create Workspace Webhook | ElevenLabs Documentation
Webhooks | ElevenLabs Documentation
what am i doing wrong when trying to verify the incoming webhook signature? Im getting this error: ElevenLabs signature verification failed: WebhooksClient.construct_event() got an unexpected keyword argument 'payload'
I think im following the docs though, this is my code:
async def verify_elevenlabs_signature(request: Request) -> dict:
"""Verify ElevenLabs post-call webhook HMAC signature and return parsed event data."""
body = await request.body()
signature = request.headers.get("elevenlabs-signature", "")
try:
event = _elevenlabs_client.webhooks.construct_event(
payload=body.decode("utf-8"),
signature=signature,
secret=settings.ELEVENLABS_WEBHOOK_SECRET,
)
except Exception as e:
logging.getLogger(__name__).error("ElevenLabs signature verification failed: %s", e)
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid webhook signature")
return event.data
Your error means the Python SDK you have installed doesn’t accept keyword arguments for webhooks.construct_event. The current docs show a signature that accepts payload, signature, and secret; if your local SDK is older, passing them by keyword will raise “unexpected keyword argument 'payload'.”
Two ways to fix it:
- Call with positional arguments (same three values, in order):
event = _elevenlabs_client.webhooks.construct_event(body.decode("utf-8"), signature, settings.ELEVENLABS_WEBHOOK_SECRET) - Or update to a Python SDK version that matches the docs, which allow the keyword form shown below:
event = elevenlabs.webhooks.construct_event(payload=payload.decode("utf-8"), signature=signature, secret=WEBHOOK_SECRET)
Reference implementation and required header/secret are in the official docs, which also note construct_event performs signature verification, timestamp validation, and payload parsing. Ensure you’re passing the raw request body decoded as UTF‑8 and the ElevenLabs-Signature header value, using the webhook’s shared secret from your settings. (elevenlabs.io)
Sources:
Webhooks | ElevenLabs Documentation
where can i find descriptions of what each field in the post-call webhook means?
-
Post-call webhooks page – “Webhook response structure” lists every event type and its top-level/data fields, plus example payloads. https://elevenlabs.io/docs/eleven-agents/workflows/post-call-webhooks
-
Get conversation details API reference – the post_call_transcription data object follows this schema; expand Transcript, Metadata, Analysis, and Conversation Initiation Client Data to see field-by-field definitions, types, and enums. https://elevenlabs.io/docs/eleven-agents/api-reference/conversations/get
that only includes descriptions of top-level items. not nested fields
You’re right—the Post‑call Webhooks page only documents the top‑level fields. For the nested fields, use these canonical docs:
-
post_call_transcription payload: Its data object uses the same schema as the GET Conversation response. Open “Response” and expand transcript (list of objects), metadata (object), analysis (object), and conversation_initiation_client_data (object) to see all nested fields. (elevenlabs.io)
-
Confirmation that post_call_transcription maps to the Conversation model: See “Conversation data using the ConversationHistoryCommonModel” and the note about aligning the webhook to the GET Conversation response. (elevenlabs.io)
-
conversation_initiation_client_data structure (field‑by‑field examples for overrides, dynamic_variables, custom_llm_extra_body, etc.): See Personalization (Conversation Initiation Client Data Structure). (elevenlabs.io)
-
call_initiation_failure nested metadata (provider‑specific SIP/Twilio fields): See the “Metadata object structure” section with SIP and Twilio subsections. (elevenlabs.io)
Optional: There’s also an example webhook payload showing many nested fields (deletion_settings, feedback, charging, conversation_turn_metrics), useful for orientation alongside the formal schema above. (elevenlabs.io)
Sources:
Get conversation details | ElevenLabs Documentation
Post-call webhooks | ElevenLabs Documentation
Personalization | ElevenLabs Documentation
Post-call webhooks | ElevenLabs Documentation
Webhooks | ElevenLabs Documentation
there's a file_input field in the transcript array. are file uploads supported for text conversations like whatsapp/text message?