Webhooks
Recibe avisos firmados en tu servidor: cómo crear el endpoint, verificar la firma y manejar reintentos.
Un webhook es una dirección de tu servidor a la que BannerMotion envía una petición POST firmada cuando pasa algo importante. Hay 13 eventos y los 13 se emiten hoy. Los webhooks están en los planes Equipo, Agencia y Empresa.
Crear un webhook
- En Integraciones y API, pulsa Agregar endpoint y escribe la Dirección (URL) de tu servidor (solo el Propietario y las personas Admin).
- Marca los Eventos que quieres recibir y pulsa Crear endpoint.
- Copia el secreto (
whsec_…) y pulsa Ya lo guardé. Solo se muestra una vez. - En el menú del endpoint, elige Enviar evento de prueba para comprobar que llega. Recibirás un
webhook.testfirmado que no cuenta para la pausa.
Puedes tener hasta 10 webhooks por workspace.
Direcciones permitidas
Por seguridad solo se aceptan direcciones http o https públicas, sin usuario ni contraseña. Se rechazan las que apuntan a redes privadas, locales o de metadatos, y se vuelve a comprobar al conectar.
Qué recibe tu servidor
Cada evento llega como un POST con cuerpo JSON { id, event, createdAt, data }. El id es el del evento (evt_…) y es el mismo en todos los reintentos de esa entrega.
webhook-idevt_…), igual en los reintentos.webhook-timestampwebhook-signaturev1, seguido del HMAC-SHA256 en base64. Durante una rotación del secreto llegan dos firmas separadas por un espacio.X-BM-Eventbanner.generated.X-BM-Deliverydlv_…).X-BM-Signaturesha256= y el HMAC en hexadecimal. Se mantiene un tiempo; en integraciones nuevas usa webhook-signature.Verificar la firma
Firmamos con el estándar Standard Webhooks (standardwebhooks.com), así que sirve cualquiera de sus librerías. La firma es v1, y el HMAC-SHA256, en base64, de webhook-id, un punto, webhook-timestamp, un punto y el cuerpo exacto que recibes. La clave son los bytes del base64 que sigue a whsec_ en el secreto de tu webhook.
- Toma el cuerpo tal cual, antes de convertirlo a JSON.
- Rechaza la petición si
webhook-timestampdifiere más de5minutos de tu reloj. - Calcula la firma esperada y compárala en tiempo constante con cada firma
v1,…del encabezado. - Descarta los eventos repetidos por su
id.
Los SDK traen verifyWebhook / verify_webhook listos. Sin SDK, usa el código de la derecha.
Rotar el secreto
En el menú del endpoint, Rotar secreto crea uno nuevo (se muestra una sola vez). Durante 24 horas cada entrega lleva dos firmas, la del secreto nuevo y la del anterior, para que cambies tu servidor sin perder eventos. Pasa los dos secretos al verificar mientras dure la rotación.
Reintentos y pausa
- Hasta
3intentos por envío. - Esperas de
5y30segundos entre intentos. - Cada intento espera tu respuesta hasta
8segundos. - Una redirección (
3xx) cuenta como fallo: no se siguen. - Tras
5fallos seguidos, el webhook se pausa solo y deja de recibir eventos hasta que lo reactives.
2xx lo antes posible y procesa el evento después. Como una entrega puede repetirse, identifica cada evento por su id y trata los repetidos como ya procesados.Las entregas que agotaron los intentos se pueden reintentar a mano con Reintentar, en Entregas recientes.