Webhooks posteriores a la llamada
Recibe notificaciones cuando terminen las llamadas y se complete el análisis mediante webhooks.
Resumen
Los webhooks posteriores a la llamada te permiten recibir información detallada sobre una llamada cuando se complete el análisis. Cuando están activados, ElevenLabs enviará una solicitud POST a la ruta que especifiques con datos completos de la llamada.
ElevenLabs admite tres tipos de webhooks posteriores a la llamada:
- Webhooks de transcripción (
post_call_transcription): incluyen todos los datos de la conversación, como transcripciones, resultados de análisis y metadatos. - Webhooks de audio (
post_call_audio): incluyen datos mínimos con el audio de toda la conversación codificado en base64. - Webhooks de error al iniciar la llamada (
call_initiation_failure): incluyen información sobre intentos fallidos de iniciar llamadas, como los motivos del error y metadatos.
Activar webhooks posteriores a la llamada
Puedes activar los webhooks posteriores a la llamada para todos los agentes de tu espacio de trabajo desde la página de configuración de ElevenAgents.

Los webhooks posteriores a la llamada deben devolver un código de estado 200 para considerarse correctos. Los webhooks que fallan repetidamente se desactivan automáticamente si acumulan 10 o más errores consecutivos y la última entrega correcta fue hace más de 7 días o nunca se han entregado correctamente.
Los webhooks posteriores a la llamada pueden reintentarse automáticamente si fallan. Consulta los reintentos de webhooks.
Autenticación
Es importante que el listener valide todos los webhooks entrantes. Actualmente, los webhooks admiten autenticación mediante firmas HMAC. Configura la autenticación HMAC de esta forma:
- Almacena de forma segura el secreto compartido generado al crear el webhook
- Verifica la cabecera ElevenLabs-Signature en tu ruta de API mediante el SDK
El SDK de JavaScript incluye constructEvent; el SDK de Python incluye construct_event con rawBody, sig_header y secret (en Python no se llaman payload / signature). Ambos verifican la firma, validan la marca de tiempo y analizan la carga útil JSON.
Python
JavaScript
Ejemplo de controlador de webhook con FastAPI:
Lista de direcciones IP permitidas
Para mayor seguridad, puedes añadir las IP de salida estáticas de ElevenLabs a tu lista de direcciones permitidas. Consulta la lista de direcciones IP permitidas para ver la lista completa de direcciones IP.
Usar una lista de direcciones IP permitidas junto con la validación de firmas HMAC proporciona varias capas de seguridad.
Estructura de la respuesta del webhook
ElevenLabs envía tres tipos distintos de webhooks posteriores a la llamada, cada uno con estructuras de datos diferentes:
Webhooks de transcripción (post_call_transcription)
Incluyen datos completos de la conversación, como transcripciones completas, resultados de análisis y metadatos.
Campos de nivel superior
Estructura del objeto de datos
El objeto data contiene:
Webhooks de audio (post_call_audio)
Incluyen datos mínimos con el audio completo de la conversación como MP3 codificado en base64.
Campos de nivel superior
Estructura del objeto de datos
El objeto data contiene únicamente:
Los webhooks de audio solo contienen los tres campos indicados anteriormente. NO incluyen datos de transcripción, metadatos, resultados de análisis ni ningún otro detalle de la conversación.
Webhooks de error al iniciar la llamada (call_initiation_failure)
Incluyen información sobre intentos de iniciar llamadas telefónicas, como los motivos del error y los metadatos del proveedor de telefonía.
Los eventos del webhook de error al iniciar la llamada se envían cuando una llamada no puede iniciarse por errores de conexión, porque el usuario rechaza la llamada o porque no responde. Si una llamada va al buzón de voz o la responde un servicio automatizado, no se envía ningún webhook de error al iniciar la llamada, ya que la llamada se inició correctamente.
Campos de nivel superior
Estructura del objeto de datos
El objeto data contiene:
Estructura del objeto de metadatos
La estructura del objeto metadata varía según si la llamada saliente se realizó mediante Twilio o mediante trunking SIP. El objeto incluye un campo type que distingue entre ambos y un campo body con detalles específicos del proveedor.
Metadatos de SIP (type: "sip"):
El objeto body de los metadatos de SIP contiene:
Metadatos de Twilio (type: "twilio"):
Ejemplos de cargas útiles de webhook
Ejemplo de webhook de transcripción
Ejemplo de webhook de audio
Ejemplos de webhook de error al iniciar la llamada
Ejemplo de metadatos de Twilio
Ejemplo de metadatos de SIP
Entrega de webhooks de audio
Los webhooks de audio se envían por separado de los webhooks de transcripción y solo contienen los campos esenciales para identificar la conversación, junto con los datos de audio codificados en base64.
Puedes activar o desactivar los webhooks de audio con el interruptor “Enviar datos de audio” en la configuración de webhooks. Puedes configurar este ajuste tanto a nivel de espacio de trabajo (en la configuración de ElevenAgents) como a nivel de agente (en las anulaciones de webhook de cada agente).
Entrega por streaming
Los webhooks de audio se envían como solicitudes HTTP en streaming con la cabecera transfer-encoding: chunked para gestionar archivos de audio grandes de forma eficiente.
Procesar webhooks de audio
Como los webhooks de audio se envían mediante codificación de transferencia por bloques, tendrás que gestionar correctamente los datos en streaming:
Los webhooks de audio pueden ser archivos grandes, así que asegúrate de que tu ruta de webhook pueda gestionar solicitudes en streaming y tenga suficiente capacidad de memoria y almacenamiento. El audio se envía en formato MP3.
Casos de uso
Seguimientos automatizados de llamadas
Los webhooks posteriores a la llamada te permiten crear workflows automatizados que se activan inmediatamente cuando termina una llamada. Estas son algunas aplicaciones prácticas:
Integración con CRM
Actualiza tu sistema de gestión de relaciones con clientes con los datos de la conversación en cuanto termine una llamada:
Conversaciones con estado
Mantén el contexto de la conversación entre varias interacciones almacenando y recuperando el estado:
- Cuando comience una llamada, incluye el ID de usuario como variable dinámica.
- Cuando termine una llamada, configura tu ruta de webhook para almacenar los datos de la conversación en tu base de datos a partir del ID de usuario extraído de dynamic_variables.
- Cuando el usuario vuelva a llamar, podrás recuperar este contexto y pasarlo a la nueva conversación mediante una variable dinámica {{previous_topics}}.
- Esto crea una experiencia fluida en la que el agente “recuerda” interacciones anteriores.