Saltar al contenido principal
Los webhooks envían una notificación HTTP cuando ocurre un evento en Bold. Úsalos para que un sistema de gestión, una herramienta de análisis, una automatización interna o un servicio intermedio reaccionen sin consultar la API continuamente.
Los webhooks complementan la API. Usa la API para consultar o corregir el estado final, y usa webhooks para enterarte de que algo cambió.

Qué configura una suscripción

CampoDescripción
EventoNombre completo del evento que quieres recibir, por ejemplo Planning.SalesOrder.LineConfirmed.
VersiónVersión mayor del contrato del evento.
URL de recepciónDirección pública donde tu sistema recibe la notificación.
{
  "endpoint": "https://integraciones.example.com/bold/webhooks",
  "eventName": "Planning.SalesOrder.LineConfirmed",
  "eventVersion": 1
}

Flujo

1

Crea el receptor

Publica una URL que acepte peticiones JSON y responda rápido. Bold acepta http y https; usa https en producción.
2

Crea la suscripción

Registra endpoint, eventName y eventVersion en Bold.
3

Procesa los datos enviados

Guarda el identificador del evento para evitar duplicados y usa la API si necesitas más datos.
4

Devuelve una respuesta correcta

Responde con un código 2xx cuando el evento se acepte para procesamiento.

Rutas de suscripción

GET /v1/notifications/webhook/subscriptions
POST /v1/notifications/webhook/subscriptions
DELETE /v1/notifications/webhook/subscriptions/{id}
Estas operaciones requieren rol App.Admin.
También puedes revisar suscripciones y entregas desde Webhooks en el Panel de control.

Histórico de notificaciones

Bold guarda notificaciones y sus intentos de entrega para que puedas diagnosticar fallos.
GET /v1/notifications/webhook
GET /v1/notifications/webhook/{id}
GET /v1/notifications/webhook/{id}/attempts
POST /v1/notifications/webhook/{id}/retry
EstadoQué significa
PendingLa notificación está pendiente o programada para reintento.
SuccessEl receptor respondió con un código 2xx.
FailureSe agotaron los intentos automáticos. Puedes reintentar manualmente.
No ejecutes trabajo pesado dentro de la respuesta HTTP del webhook. Encola el evento, responde 2xx y procesa en segundo plano.

Firma del webhook

Bold firma el cuerpo JSON serializado con HMAC-SHA256 y lo envía como hexadecimal en minúsculas en la cabecera X-HMAC-Signature.
import crypto from "node:crypto";

function isValidSignature(rawBody, signature, secret) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(rawBody)
    .digest("hex");

  if (!signature || signature.length !== expected.length) {
    return false;
  }

  return crypto.timingSafeEqual(
    Buffer.from(signature, "hex"),
    Buffer.from(expected, "hex"),
  );
}
Verifica la firma con el cuerpo sin modificar. Si parseas y vuelves a serializar el JSON antes de verificarlo, la firma puede no coincidir.