Skip to main content
Em vez de realizar consultas repetitivas (polling) para saber se um pedido foi entregue, configure um Webhook no BulkRoute para receber chamadas POST automáticas em tempo real.

Como funciona

O webhook é disparado assincronamente via BullMQ com retry automático (5 tentativas com backoff exponencial).

1. Configurando seu Endpoint de Webhook

  1. No painel, vá em Configurações > Webhooks.
  2. Informe a URL do seu servidor que receberá os eventos (ex: https://meusistema.com.br/api/webhooks/bulkroute).
  3. Copie o Webhook Secret gerado (usado para validar a assinatura de segurança).
  4. Selecione os eventos que deseja receber (ou “Todos”).
  5. Salve.

Requisitos do seu endpoint

  • Deve aceitar POST com body JSON
  • Deve retornar 200 OK em até 10 segundos (senão o BulkRoute considera timeout e faz retry)
  • Deve ser acessível publicamente (não localhost)
  • Deve validar a assinatura HMAC (ver abaixo)
  • Deve ser idempotente (pode receber o mesmo evento mais de uma vez em caso de retry)

2. Eventos disponíveis

3. Exemplo de Payload Recebido

shipment.status_updated

shipment.created

bid.acceptance_received

4. Validação de Assinatura (Segurança HMAC)

Cada requisição enviada pelo BulkRoute inclui o cabeçalho:
Para garantir que o webhook veio legitimamente do BulkRoute, valide o hash HMAC-SHA256 utilizando o seu segredo cadastrado:

Node.js

Python (Flask)

Use o raw body (bytes brutos) para calcular o HMAC — não o body parseado como JSON. Se você usar req.body (já parseado), o hash não vai bater porque a serialização pode mudar a ordem das chaves.

5. Retry e Dead Letter Queue

O BulkRoute tenta entregar cada webhook até 5 vezes: Se todas as 5 tentativas falharem, o evento vai para a Dead Letter Queue (DLQ) e fica visível no painel em Configurações > Webhooks > DLQ. Você pode:
  • Reprocessar um evento da DLQ manualmente
  • Baixar o payload para debug
  • Descartar eventos irrelevantes

6. Logs de Webhook

Cada disparo de webhook é logado no painel:

7. Testando seu Webhook

Com ngrok (desenvolvimento local)

Com webhook.site (teste rápido)

  1. Acesse webhook.site
  2. Copie a URL gerada
  3. Configure no painel do BulkRoute
  4. Crie um shipment e observe os eventos chegando em tempo real

Troubleshooting