Ir para o conteúdo principal
DiffHook/Documentos
GuiasRecebendo webhooks

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 tentativas11 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 failed ou exhausted dependendo 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

TentativaQuando é executada
Imediatamente quando a alteração for detectada
1 minuto após a 1ª falha
2 minutos após a 2ª falha
4 minutos após a 3ª falha
8 minutos após a 4ª falha
16 minutos após a 5ª falha
32 minutos após a 6ª falha
64 minutos (~1 h) após a 7ª falha
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.