Melhores Práticas
Diretrizes para construir integrações confiáveis com DiffHook.
Use seletores CSS para reduzir o ruído
As páginas mudam constantemente – atualização de banners de cookies, atualização de anúncios, carimbos de data e hora. Defina o escopo de seus monitores para o conteúdo que realmente lhe interessa:
{
"css_selector": "#pricing-table"
}
Isso reduz falsos positivos e torna suas diferenças mais significativas.
Use renderização JS somente quando necessário
A renderização do navegador headless é mais lenta e consome mais recursos. Ative-o apenas quando a página de destino realmente exigir JavaScript para renderizar conteúdo significativo.
A maioria dos feeds de notícias, sites de documentação e páginas de preços são renderizados pelo servidor e não precisam disso.
Responda aos webhooks rapidamente
Seu endpoint deve retornar 200 OK em 10 segundos. Tempos limite e respostas não 2xx acionam novas tentativas automáticas com espera exponencial em minutos (consulte Receber webhooks).
Processe cargas de forma assíncrona – envie para uma fila, salve em um banco de dados e retorne 200 imediatamente.
Idempotência
Webhooks podem ser entregues mais de uma vez em cenários de falha raros. Use a combinação monitor_id + triggered_at como chave de desduplicação:
const eventKey = `${body.monitor_id}:${body.triggered_at}`
if (await redis.get(eventKey)) return // Already processed
await redis.set(eventKey, '1', 'EX', 86400)
Escolha o intervalo certo
Uma boa regra prática:
| Caso de uso | Intervalo recomendado |
|---|---|
| Vendas instantâneas, alertas de preços | 5–15 minutos |
| Monitoramento da concorrência | 60 minutos |
| Registros regulatórios | 360 minutos (6h) |
| Quadros de empregos, páginas de carreiras | 1440 minutos (diariamente) |
Verifique assinaturas
Sempre verifique o cabeçalho X-Signature antes de processar cargas de webhook. Isso protege contra solicitações falsificadas. Consulte o guia Verificar assinaturas para exemplos de implementação.