Skip to content

Política de retentativas

Quando um webhook falha ao ser entregue (por exemplo, quando o servidor de destino retorna um erro HTTP ou está indisponível), o sistema tenta reenviá-lo automaticamente seguindo uma política de retentativas com backoff progressivo.

Como funciona

Ao detectar uma falha no envio de um webhook, o sistema agenda uma nova tentativa com um intervalo de espera que aumenta progressivamente. Isso evita sobrecarregar o servidor de destino e dá tempo para que problemas temporários sejam resolvidos.

Cada tentativa que falha incrementa o contador de tentativas e agenda a próxima com um intervalo maior, até que o máximo de tentativas seja atingido.

Intervalos entre tentativas

O sistema realiza no máximo 9 tentativas de envio. Os intervalos aproximados entre as tentativas são:

TentativaIntervalo aproximado
1Imediato
2~2 minutos
3~10 minutos
4~30 minutos
5~1 hora
6~3 horas
7~4 horas
8~6 horas
9~10 horas

Os intervalos são aproximados pois é aplicado um fator de aleatoriedade (jitter) sobre cada um deles, o que significa que o tempo real pode variar ligeiramente. Esse jitter ajuda a distribuir melhor as tentativas e evitar picos de carga simultâneos.

O intervalo máximo entre tentativas é limitado a 24 horas.

Status do envio

Cada envio de webhook possui um dos seguintes status:

  • Enviado (success): o webhook foi entregue com sucesso (código HTTP 2xx)
  • Agendado (scheduled): o webhook está aguardando uma tentativa de envio ou retentativa
  • Falhou (failed): todas as tentativas de envio foram esgotadas sem sucesso

O que acontece após todas as tentativas falharem

Quando o número máximo de tentativas (9) é atingido sem sucesso, o envio é marcado como falhou (failed). Nesse caso, o sistema não fará mais tentativas automáticas.

No entanto, ainda é possível reenviar o webhook manualmente pela interface. Para saber como, consulte o guia como reenviar webhooks.

Condições que causam falha

Uma tentativa de envio é considerada como falha quando:

  • O servidor de destino retorna um código HTTP de erro (4xx ou 5xx)
  • O servidor de destino está indisponível ou não responde
  • A requisição excede o tempo limite de 30 segundos
  • O webhook de destino está inativo