Retentativas

A GDREdu garante a entrega de webhooks mesmo em caso de falhas temporárias no receptor. Quando uma entrega falha, ela é re-agendada com backoff progressivo.

Backoff

TentativaQuandoObservação
1 (inicial)ImediatoPrimeira tentativa
2 (retry 1)+1 minutoApós primeira falha
3 (retry 2)+5 minutosApós segunda falha
4 (retry 3)+10 minutosApós terceira falha
5 (retry 4)+1 horaApós quarta falha
6 (retry 5)+6 horasApós quinta falha
— (final)Status IGNORED após 6 tentativas sem sucesso

Total: 1 tentativa inicial + 5 retentativas = 6 tentativas. Após 6 falhas, o evento é marcado como IGNORED e não é mais tentado.

Quando uma tentativa é considerada falha

Uma tentativa é considerada falha se:

  • O receptor responde com status HTTP ≥ 300 (4xx, 5xx)
  • O receptor não responde em até 30 segundos (timeout)
  • A conexão falha (DNS, TCP, TLS, etc.)

Respostas com status 2xx são consideradas sucesso.

Inspecionar o histórico de entregas

Para cada webhook, você pode listar todas as entregas via GET /v1/webhooks/:id/deliveries:

curl "https://api.gdredu.com/v1/webhooks/<webhook-id>/deliveries?limit=20" \
  -H "Authorization: Bearer gdredu_live_..." \
  -H "x-branch-id: branch-id-aqui"

Cada entrega retorna:

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "event": "equipment.recognized",
  "status": "RETRYING",
  "attempt": 2,
  "nextAttemptAt": "2026-06-19T08:06:00.000Z",
  "responseStatus": 500,
  "responseError": "HTTP 500",
  "durationMs": 1234,
  "deliveredAt": null,
  "ignoredAt": null,
  "createdAt": "2026-06-19T08:00:12.000Z"
}
CampoSignificado
statusPENDING (na fila) | SUCCESS (entregue) | RETRYING (vai tentar de novo) | IGNORED (desistiu)
attemptNúmero da tentativa atual (1 a 5; 6 = ignored)
nextAttemptAtQuando a próxima tentativa será feita (null se SUCCESS ou IGNORED)
responseStatusStatus HTTP retornado pelo receptor (null se timeout/erro de rede)
responseErrorMensagem de erro (timeout, conexão recusada, etc)
durationMsTempo total da tentativa em ms
deliveredAtQuando foi entregue com sucesso (null se falhou)
ignoredAtQuando foi marcada como IGNORED (null se ainda tentando)

Boas práticas

  1. Responda rápido: processe o evento de forma assíncrona e responda 200 OK em < 1s.
  2. Implemente idempotência: use o header X-GDREdu-Delivery-Id para evitar processar o mesmo evento duas vezes.
  3. Monitore entregas com falha: implemente alertas no seu lado quando ver RETRYING ou IGNORED.
  4. Reaja rápido em IGNORED: investigue logs do seu lado e faça rotação do secret se necessário.


Did this page help you?