Recebendo webhooks
Quando o DiffHook detecta uma alteração, ele envia um HTTP POST para o URL de entrega resolvido: notification_config.webhook_url por monitor, se definido, caso contrário, o webhook padrão do seu espaço de trabalho de Integrações. O corpo JSON abaixo é a carga útil enviada pelo DiffHook (não a configuração do monitor).
Carga útil do webhook
{
"event": "page.changed",
"monitor_id": "mon_abc123",
"url": "https://competitor.com/pricing",
"triggered_at": "2026-03-16T14:22:00Z",
"content": "Pro plan: $59/month — …"
}
Referência de campo
event — Sempre page.changed para eventos de alteração de conteúdo.
monitor_id — O ID do monitor que acionou o evento.
url — O URL monitorado para este evento.
triggered_at — carimbo de data/hora ISO 8601 de quando a alteração foi detectada.
content — O novo conteúdo da página após a alteração (texto normalizado/extraído usado para monitoramento — igual ao instantâneo DiffHook diferido da versão anterior).
Garantias de entrega
- Em cada alteração detectada, o DiffHook faz um HTTP POST imediato. Se isso falhar (diferente de 2xx, erro de rede ou tempo limite), ele agendará até mais 10 tentativas — 11 tentativas de entrega no total se seu endpoint nunca tiver êxito.
- O atraso entre tentativas é exponencial em minutos: após cada falha, a próxima tentativa é elegível após 1, 2, 4, 8, 16, 32, 64, 128, 256 e depois 512 minutos (cada atraso é o dobro do anterior). As novas tentativas são realizadas em uma programação de aproximadamente uma vez por minuto, portanto, o tempo não é preciso em menos de um segundo.
- Uma entrega é considerada bem-sucedida quando seu endpoint retorna 2xx em 10 segundos.
- Após todas as tentativas serem utilizadas, a entrega é interrompida; a linha em App → Logs mostra
failedouexhausteddependendo do estado do canal.
Respondendo a webhooks
Seu endpoint deve retornar 200 OK o mais rápido possível. Processe a carga de forma assíncrona:
app.post('/webhook', (req, res) => {
res.status(200).send('OK') // Respond first
processChangeAsync(req.body) // Then process
})
Comportamento de nova tentativa
| Tentativa | Quando é executada |
|---|---|
| 1º | Imediatamente quando a alteração for detectada |
| 2º | ≥ 1 minuto após a 1ª falha |
| 3º | ≥ 2 minutos após a 2ª falha |
| 4º | ≥ 4 minutos após a 3ª falha |
| 5º | ≥ 8 minutos após a 4ª falha |
| 6º | ≥ 16 minutos após a 5ª falha |
| 7º | ≥ 32 minutos após a 6ª falha |
| 8º | ≥ 64 minutos (~1 h) após a 7ª falha |
| 9º | ≥ 128 minutos (~2 h) após a 8ª falha |
| 10º | ≥ 256 minutos (~4 h) após a 9ª falha |
| 11º | ≥ 512 minutos (~8,5 h) após a 10ª falha |
Após 11 tentativas malsucedidas (1 inicial + 10 tentativas), nenhuma outra entrega automática será executada para esse evento. Corrija seu endpoint e use Disparar agora no monitor se precisar de outro disparo.