Política de retry
Se seu endpoint retornar status diferente de 2xx, a Cordialy reenvia automaticamente:
| Tentativa | Delay | Total decorrido |
|---|
| 1ª (inicial) | — | 0s |
| 2ª | 1 minuto | ~1min |
| 3ª | 5 minutos | ~6min |
| 4ª | 30 minutos | ~36min |
| 5ª | 2 horas | ~2h36min |
Após 5 tentativas sem 2xx, o evento é descartado.
Erros 4xx (exceto 429 Too Many Requests) são tratados como falhas permanentes e não geram retry. Retorne 2xx mesmo que você decida ignorar o evento — use 4xx apenas se houver um problema real de autenticação ou formato.
Requisitos do endpoint
| Requisito | Detalhe |
|---|
| Protocolo | HTTPS com certificado válido |
| Timeout | Máximo 10 segundos para retornar 2xx |
| Método | Sempre POST |
| Content-Type | application/json |
Se o processamento for demorado, responda 200 imediatamente e processe de forma assíncrona (fila, background job).
Idempotência
Por conta dos retries, seu endpoint pode receber o mesmo evento mais de uma vez. Use o par event_type + occurred_at + payload.id como chave de deduplicação para garantir que o mesmo evento não seja processado duas vezes.
const chave = `${evento.event_type}:${evento.payload.id}`;
if (await cache.exists(chave)) return res.status(200).send('já processado');
await cache.set(chave, true, { ex: 86400 }); // TTL 24h
// processar...
Testar seu endpoint
Use o dashboard em Integrações → Webhooks → Testar para enviar um evento de exemplo sem precisar gerar o evento real na plataforma.
Durante o desenvolvimento, use ferramentas como ngrok ou webhook.site para expor seu servidor local e inspecionar os payloads recebidos.