Skip to main content
Webhooks permitem que a Voop notifique seu sistema em tempo real quando algo muda no catálogo. Use-os para sincronização bidirecional, dashboards de auditoria, ou triggers de fluxos internos.

Eventos disponíveis

Use "*" no array events para subscrever todos.

Formato do payload

Verificação da assinatura

A assinatura usa HMAC SHA-256 com timestamp para prevenir replay.

Exemplo (Node.js)

Sempre use timingSafeEqual (ou equivalente). Comparação de strings comum vaza tempo e permite ataques de timing.
Use o body raw, não o JSON re-serializado. Frameworks como Express com express.json() perdem o body original — você precisa de express.raw() ou capturar rawBody antes do middleware de JSON.

Retries e backoff

Se sua URL não retornar 2xx em 5 segundos, a Voop retenta:

Auto-disable

Se um webhook acumula 20 falhas terminais consecutivas (i.e., exhausted), ele é automaticamente desabilitado (status: disabled) e o owner recebe email. Para reativar: POST /webhooks/{id}/resume (após corrigir o problema). Ou pelo Developer Portal.

Idempotência no consumidor

A Voop pode entregar o mesmo evento mais de uma vez (em cenários de timeout seguido de sucesso na próxima tentativa). Sua implementação deve ser idempotente:
  • Use o X-Voop-Event-Id (UUID) como chave de dedup
  • Guarde IDs vistos por algum tempo (ex: Redis TTL 7 dias)
  • Skip se já processado

Replay manual

Falhou uma entrega importante? POST /webhooks/{id}/deliveries/{deliveryId}/retry re-enfileira a mesma entrega. (Disponível também na UI do Developer Portal.)