Requisitos previos
- Un endpoint HTTPS que tú controles. HTTP es rechazado.
- Un usuario administrador de Tread con el permiso Integraciones.
- Capacidad para verificar firmas HMAC en el lado receptor.
- Un manejador tolerante a reintentos. Tread reintenta las entregas fallidas.
Cómo funciona
- Registrar una suscripción — Configura la URL de destino, el secreto de firma HMAC y cualquier encabezado personalizado en Configuración → Integraciones → Webhooks.
- Elegir disparadores — Cada suscripción escucha uno o más disparadores. Un disparador es un tópico más un evento (por ejemplo,
Order::create). - Tread dispara eventos — Cuando ocurre una acción que coincide en la app, Tread construye un envelope JSON y lo envía vía POST a tu URL.
- Verificar la firma — Tread firma el cuerpo con HMAC-SHA256 usando tu secreto. La firma llega en el encabezado
X-Tread-Hmac-sha256. - Confirmar con 2xx — Una respuesta 2xx marca el evento como entregado. Cualquier otra cosa dispara un reintento.
Tópicos y tipos de eventos
Tread emite eventos en estos tópicos:| Tópico | Qué es |
|---|---|
Order | Una orden diaria |
Job | La asignación de un conductor para una orden |
Load | Un ciclo de recogida a descarga |
Ticket | Un ticket de báscula o de horas de conductor |
ImportedProject | Un proyecto enviado por la API de importación |
ImportedOrder | Una orden enviada por la API de importación |
ImportedTicket | Un ticket enviado por la API de importación |
create, update, state_change, skip, error. Suscríbete a las combinaciones que te interesen.
Formato del payload
Cada entrega tiene el mismo envelope:payload contiene el recurso tal como aparece en la API de Tread. El campo event es el tópico y el tipo de evento unidos por ::. El campo attempt comienza en 1 y se incrementa en cada reintento.
Configuración
Agrega una suscripción
Ingresa la URL HTTPS de tu endpoint. Genera o pega un secreto de firma HMAC. Tread incluirá la firma en cada entrega.
Elige disparadores
Selecciona las combinaciones de tópico y evento que quieras. Empieza acotado —
Order::create y Ticket::state_change cubren la mayoría de los casos de uso.Agrega encabezados personalizados (opcional)
Si tu endpoint requiere un encabezado de autenticación o un token de enrutamiento, agrégalo en los encabezados de la solicitud.
Verificación de firma
Para cada entrega, Tread calcula:X-Tread-Hmac-sha256. Recalcula en tu lado usando el cuerpo de la solicitud sin procesar y compáralos. Rechaza cualquier solicitud cuya firma no coincida.
Comportamiento de reintentos
- Las entregas fallidas (respuesta distinta de 2xx, timeout, redirect) se reintentan con backoff exponencial.
- Cada suscripción tiene un límite de reintentos configurable. Una vez alcanzado, el evento se descarta y se registra.
- El campo
attemptdel envelope indica qué reintento estás viendo. - El timeout de entrega es de 10 segundos. Confirma rápido y procesa de forma asíncrona.
Limitaciones
- Solo HTTPS. Las URLs HTTP son rechazadas al registrarse.
- Una URL de destino por suscripción. Para hacer fan-out, registra múltiples suscripciones.
- Timeout de entrega de 10 segundos. Los manejadores de larga duración deben responder primero y procesar en segundo plano.
- Tread no garantiza el orden de los eventos. Usa
event_timepara reconciliar. - Las repeticiones (replays) no son compatibles. Una vez que una entrega agota los reintentos, se pierde — diseña para entrega al-menos-una-vez y manejadores idempotentes.
Solución de problemas
Firma no coincide- Confirma que estás hasheando el cuerpo de la solicitud sin procesar, no una copia parseada.
- Confirma que estás usando el mismo cifrado HMAC (por defecto: SHA-256).
- Rota el secreto si pudo haberse filtrado.
- Reduce el trabajo del manejador — confirma inmediatamente y encola el procesamiento real.
- Revisa el log de entrega para ver el tiempo de respuesta.
- Confirma que la suscripción tenga el disparador correcto (tópico + evento).
- Confirma que la acción en Tread coincida con el tópico.
Order::createse dispara al crear una orden, no al actualizarla — agregaOrder::updatepor separado.
Relacionado
- Referencia de API — las formas de los recursos devueltas en el payload
- Agave — integración contable; complementa los webhooks para el envío de AR/AP