- Actualizar el deal en tu CRM con el resultado de la llamada.
- Disparar un follow-up automatizado si la llamada falló.
- Loggear el resumen de cada conversación en tu data warehouse.
Configurar tu webhook
- Entra a app.ryvo.so/developers.
- En la sección Webhook, agrega tu URL pública (HTTPS obligatorio).
- Copia el signing secret que generamos. Solo se muestra una vez: guárdalo en un secret manager. Lo necesitas para verificar la firma de cada evento.
Eventos disponibles
Por cada ocurrencia recibes un solo evento: el canónico (
conversation.*) si te suscribiste a él, o su alias (call.*) si no. Nunca los dos.
Las suscripciones creadas con el comodín
* reciben únicamente la familia call.*. Para recibir conversation.* o analysis.ready hay que nombrarlos explícitamente en la lista de eventos del webhook. Desde el portal hoy sólo se eligen los call.*; si necesitas los otros, escríbenos a team@ryvo.so y los activamos en tu webhook.Los agentes construidos con el Constructor (Ryvo Engine) emiten por ahora únicamente
analysis.ready. Los eventos de inicio y fin de llamada del Engine llegarán cuando se abra el marcado por API.Shape de un evento
Todos los eventos comparten esta estructura:data, dos identificadores distintos:
call_id: el handlecall_…que te devolvióPOST /v1/calls. Úsalo para casar el evento con la llamada que tú disparaste.id: el identificador de la conversación en Ryvo. Esnullenconversation.startedporque en ese momento la conversación todavía no existe.
conversation.started / call.initiated
conversation.ended / call.completed
status puede ser completed, failure o unknown según el resultado del análisis de la llamada. El resumen nunca incluye la transcripción completa.
conversation.ended / call.failed (no se pudo iniciar)
analysis.ready
evaluation_results y data_collection son los identificadores que definiste en el Constructor (Análisis después de cada conversación).
Headers de cada delivery
Reintentos automáticos
Si tu endpoint responde con un código que no es2xx o se cuelga más de 10 segundos, reintentamos automáticamente con backoff exponencial:
Después del 4to intento fallido, marcamos la entrega como
exhausted y no volvemos a intentar. Puedes ver el historial en app.ryvo.so/developers.
Idempotencia del lado del receptor
Aunque hagamos retry solo en errores, un mismo evento puede llegarte 2 veces (ej. tu endpoint procesó OK pero la respuesta200 se perdió en la red). Por eso te mandamos X-Ryvo-Event-Id: guarda los IDs procesados y descarta duplicados.
Responde rápido
Tu endpoint debe responder200 en menos de 10 segundos. Si necesitas hacer trabajo lento (LLM call, sync a una API externa), responde 200 inmediato y procesa async (cola, background job).
Próximos pasos
Verificar firmas
Cómo validar que el evento viene de Ryvo y no de un atacante.
Probar tu webhook
Desde el portal puedes mandarte un evento de prueba.

