POST por HTTPS a tu endpoint cuando algo cambia en tu cuenta. Usa webhooks en lugar
de consultar periódicamente los endpoints de listado.
Eventos
El nombre del evento viaja en el header
X-Webhook-Event. Enruta con base en ese header, no en la URL. El payload completo
de cada evento está en la referencia de la API, en Webhooks.
shippingUpdated no incluye el id de la orden de Cubbo. Relaciónalo con order_number y store_id.Configura tu endpoint
Tu endpoint debe usarhttps y un nombre de dominio. Las direcciones IP se rechazan.
Configúralo en la app de Cubbo: abre Integraciones, busca tu integración Open API y haz clic en
Configurar Webhooks. Ahí activas los webhooks de órdenes, inventario y recibos de inventario, defines sus
URL, agregas headers personalizados, pruebas la URL y copias el secreto compartido. Consulta Configura tu integración.
Si tu endpoint requiere credenciales de cliente OAuth, pide a tu contacto de Cubbo que las configure.
El feed de inventario solo envía mientras el feed de órdenes esté activo. El feed de reabastecimientos es independiente.
Prueba de conectividad
Cuando Cubbo verifica tu URL, envía este cuerpo, sin headers de firma y sinX-Webhook-Event:
2xx en menos de 10 segundos. Acepta este ping aunque no esté firmado, o la verificación falla.
Headers
También se agregan los headers estáticos configurados para tu integración.
Verifica la firma
Cada evento se firma con HMAC-SHA256 usando el secret de tu webhook. Verifícalo antes de confiar en el cuerpo.1
Lee el cuerpo sin procesar
Usa exactamente los bytes que recibiste. No parsees ni vuelvas a serializar el JSON: el orden de las llaves y los espacios deben coincidir.
2
Arma la cadena firmada
Une cuatro valores con un punto literal: el ID del mensaje,
isa, exp y el cuerpo sin procesar.3
Calcula y compara
Calcula el HMAC-SHA256 de esa cadena. Usa el secret como una cadena UTF-8 simple, sin decodificarlo.
Compara el digest hexadecimal en minúsculas con
X-Cubbo-Hmac-SHA256 en tiempo constante.4
Revisa la expiración
Rechaza la solicitud si la hora actual ya pasó
exp. Permite algunos segundos de desfase de reloj.Respuesta y reintentos
Responde con cualquier estado2xx en cuanto hayas guardado el evento y luego procésalo de forma asíncrona. Las respuestas
lentas corren el riesgo de un timeout y un reintento.
Los eventos de inventario y de reabastecimiento se entregan de uno en uno por integración, en orden. Una entrega que falla
retiene los eventos que vienen detrás hasta que tiene éxito o se agotan sus reintentos.
Maneja los duplicados
Los reintentos reenvían el mismo cuerpo, pero con un nuevo ID de mensaje,isa, exp y firma. Nunca dedupliques con base en
X-Cubbo-Webhook-Message-Id.
Conserva las llaves procesadas durante al menos 26 horas, la ventana de reintentos más larga. Los valores de
sequence crecen, pero pueden saltarse
números, así que no esperes que aumenten de uno en uno.