01
Por que o WhatsApp reenvia o mesmo webhook
A infraestrutura de webhooks da Meta opera com entrega at-least-once. Ela garante que o evento será entregue pelo menos uma vez, mas não garante exatamente uma vez. Sempre que a Meta não recebe uma resposta HTTP 200 dentro da janela esperada, ela assume falha e reenvia o mesmo evento. O resultado é duplicação natural do tráfego.
- Timeout: seu servidor demorou para responder 200 e a Meta considerou a entrega falha.
- Erro de rede: a resposta 200 se perdeu no caminho mesmo com o processamento já concluído.
- Status 5xx ou conexão recusada: deploy, reinício ou pico de carga derrubaram o handler.
- Replays internos da Meta: retentativas agendadas que repetem eventos antigos.
A consequência prática é direta: você não pode confiar que cada POST representa um evento novo. O mesmo message id pode aparecer duas, três ou mais vezes. O desenho do sistema precisa assumir duplicatas como normais, não como exceção.