contact.created, un contacto nuevo produce tres entregas, y cada una se sigue y se reintenta por separado.
Qué cuenta como entregado
Ciarem envía el evento en el momento en que ocurre, normalmente en unos segundos, y espera hasta 10 segundos a que tu servidor responda.
Una entrega fallida se reintenta automáticamente.
Reintentos
Después de un fallo, Ciarem espera y vuelve a intentar, con una espera más larga cada vez:
Los reintentos continúan hasta que la entrega tiene 3 días. Después de eso Ciarem la abandona y la marca como Fallido. En la práctica son unos 14 intentos. Los reintentos se ejecutan una vez por minuto, así que un intento puede empezar hasta un minuto después de su hora programada.
Cada intento envía el mismo cuerpo con el mismo
id de evento. Solo cambia el encabezado Ciarem-Signature, porque cada intento se firma con una marca de tiempo nueva.
Estados de entrega
Cuando un endpoint sigue fallando
Si todas las entregas a un endpoint fallan durante 3 días seguidos, Ciarem apaga el endpoint. En el panel muestra Desactivado por fallos repetidos; en la API,enabled es false y disabled_reason es auto_failures.
Una sola entrega exitosa reinicia la cuenta, así que un endpoint con fallos ocasionales nunca se desactiva.
Mientras un endpoint está desactivado:
- No se le envía nada, y los eventos que ocurren mientras tanto no se guardan para después.
- Las entregas que esperaban un reintento se marcan como Fallido.
PATCH /v1/webhook-endpoints/{id} con {"enabled": true}. Las entregas se reanudan con los eventos nuevos a partir de ese momento. Para recuperar lo que te perdiste, consulta Recuperar eventos perdidos.
Pausar un endpoint por tu cuenta
Elige Desactivar en el menú del endpoint, o envía{"enabled": false}, para detener las entregas sin eliminar el endpoint. Se comporta igual que el caso automático: no se envía nada mientras está apagado, los reintentos en espera se descartan, y activarlo más tarde no reenvía los eventos antiguos. disabled_reason es user.
Eliminar un endpoint también elimina su registro de entregas.
Si tu plan cambia
Los webhooks son parte del acceso a la API. Si tu organización pasa a un plan que no lo incluye, o una prueba termina sin una suscripción, Ciarem deja de enviar eventos de inmediato. Tus endpoints se conservan, y las entregas se reanudan solas cuando vuelves a Growth o Scale. Los eventos que ocurrieron en ese intervalo no se envían después.Duplicados y orden
Construye tu handler en torno a dos hechos: El mismo evento puede llegar más de una vez. Ciarem garantiza que cada evento se entrega al menos una vez, no exactamente una vez. La causa habitual es un reintento después de que tu servidor procesó el evento pero respondió demasiado lento. Haz que procesar un evento sea seguro de repetir:- Guarda el
idde cada evento que procesas y sáltate cualquieridque ya hayas visto. Conservar los ids unos días es suficiente, porque los reintentos terminan a los 3 días. - O haz que la acción misma sea repetible, por ejemplo “pon la etapa del contacto en X” en vez de “avanza el contacto una etapa”.
- Compara
created_atdel sobre, oupdated_atdel contacto, con lo que ya tienes guardado, e ignora los datos más antiguos. - En las conversaciones, espera que
messages.inboundpueda llegar antes que elconversation.createdde la misma conversación. - Cuando el orden importa, trata el evento como una señal y lee el estado actual desde la API.
El registro de entregas
Cada entrega de los últimos 30 días queda registrada, con el cuerpo exacto que se envió. En el panel: abre Configuración → Webhooks y haz clic en un endpoint. La tabla Entregas muestra cada evento, su estado, el código de respuesta de tu servidor y el número de intentos. Haz clic en una fila para ver el cuerpo que se envió, el id del evento, la respuesta de tu servidor o el error, y el último y el próximo intento. Con la API:response_status es null cuando tu servidor nunca respondió (un timeout o un error de conexión); en ese caso error dice qué salió mal.
Dos cosas no están en el registro: los eventos de prueba, y las entregas sobre un contacto que después se borró de forma permanente, que se eliminan junto con los datos del contacto.
Enviar una entrega de nuevo
Puedes reenviar cualquier entrega del registro, sea cual sea su estado, por ejemplo después de corregir un error en tu handler.- En el panel: haz clic en la entrega para abrirla y luego haz clic en Enviar de nuevo.
- Con la API:
POST /v1/webhook-deliveries/{delivery_id}/redeliver.
id de evento. Como el id no cambia, un handler que deduplica la va a saltar: borra primero ese id de tu lado si quieres que se procese otra vez.
Enviar de nuevo se rechaza con 409 endpoint_disabled mientras el endpoint está apagado. Actívalo primero.
Recuperar eventos perdidos
Los reintentos cubren caídas de hasta 3 días. Para algo más largo, o para el tiempo en que un endpoint estuvo desactivado, reconcilia desde la API:- Contactos: lístalos con
GET /v1/contactsy comparaupdated_atcon lo que tienes. - Conversaciones: lístalas con
GET /v1/conversationsy lee los mensajes de las que cambiaron.
Gestionar endpoints con la API
Todo lo que hay en el panel también está disponible para una clave de API. Los detalles completos de solicitudes y respuestas están en la referencia de la API, en Webhooks.
Errores específicos de los webhooks, además de los generales:
Estas llamadas cuentan para tu límite de uso como cualquier otra solicitud a la API. Los eventos que Ciarem te envía no cuentan.