Ir para o conteúdo principal
DiffHook/Documentos
PlataformaSolução de problemas

Solução de problemas

Soluções para os problemas mais comuns.

Não estou recebendo entregas de webhook

1. Verifique seus registros primeiro. Vá para Aplicativo → Registros. Encontre o monitor relevante e verifique o status da entrega. Se mostrar failed, expanda a entrada para ver o código de status HTTP que seu endpoint retornou.

2. Seu endpoint retornou um status diferente de 2xx ou expirou. O DiffHook considera uma entrega bem-sucedida somente quando seu endpoint retorna 2xx em 10 segundos. Causas comuns:

  • Retornando 500 devido a um erro no seu manipulador
  • Processamento lento antes de responder – mova o processamento assíncrono e retorne 200 imediatamente
  • Firewall ou WAF bloqueando o intervalo de IP do DiffHook

3. O URL do seu endpoint está errado. Verifique novamente o URL do webhook no monitor. Certifique-se de que seja acessível publicamente (não localhost).

4. Todas as novas tentativas automáticas foram usadas. O DiffHook tenta uma vez imediatamente e depois até mais 10 vezes com atrasos exponenciais em minutos (1, 2, 4,… até 512 minutos entre tentativas). Quando todas as tentativas falham, a entrega é interrompida; a entrada em Logs mostra failed ou exhausted. Corrija seu endpoint e use Trigger now no monitor para disparar novamente.


Um monitor disparou, mas não recebi nenhuma notificação

Verifique se pelo menos um canal de notificação está configurado e conectado:

  • Aplicativo → Configurações → Integrações – verifique se Slack/Discord/Telegram/Email está conectado
  • Use o botão Test para confirmar se o canal está funcionando independentemente dos eventos do monitor

Meu monitor não está detectando alterações que posso ver na página

Conteúdo renderizado em JavaScript. Se a página carregar conteúdo via JavaScript (React, Vue, SPAs), o HTML estático obtido pelo DiffHook não o incluirá. Ative a renderização JS no monitor para usar um navegador headless.

Seletor CSS muito estreito ou quebrado. Se você especificou css_selector, verifique se ele ainda corresponde a um elemento na página. Redesenho de sites – os seletores podem ficar obsoletos. Remova o seletor temporariamente para confirmar que o DiffHook vê a alteração e depois refine.

A alteração está dentro do filtro de diferenças. O DiffHook remove ruído dinâmico (carimbos de data e hora, espaços de anúncio, tokens de sessão). Se o seu conteúdo alvo corresponder a um padrão de filtro, ele poderá ser suprimido. Entre em contato com o suporte com o URL e podemos inspecionar a diferença bruta.

Jitter de pesquisa. Verifica o incêndio dentro de uma janela de ±30 segundos em torno do horário programado. Uma alteração que apareceu e desapareceu dentro do seu intervalo de pesquisa não será detectada.


Estou recebendo muitos alertas de falsos positivos

Use um seletor CSS. Defina o monitor apenas para o conteúdo de seu interesse:

{ "css_selector": "#pricing-table" }

Isso filtra banners de cookies, atualizações de anúncios, alterações de carimbo de data/hora e outros ruídos.

Aumente o intervalo. Se uma página muda com frequência, mas você só se preocupa com alterações significativas, um intervalo mais longo reduz o ruído.

Verifique o conteúdo dinâmico. Alguns sites incorporam tokens de sessão ou nonces no corpo da página. Eles mudam a cada carga e sempre acionarão uma diferença. Use um seletor CSS para excluir o elemento afetado.


Meu monitor aparece como pausado inesperadamente

Os monitores são pausados ​​automaticamente em dois cenários:

  1. Rebaixamento do plano — Você reduziu seu plano e tem mais monitores ativos do que o novo limite permite. Vá para Aplicativo → Monitores, retome os monitores que deseja manter e exclua ou pause o restante.
  2. Conta suspensa — Uma falha no pagamento colocou sua conta em espera. Resolva o pagamento em App → Faturamento para reativar.

Uma entrega foi enviada duas vezes

Entregas duplicadas podem acontecer em raros cenários de falha de rede (a solicitação foi entregue, mas a confirmação foi perdida, causando uma nova tentativa). Este é o comportamento esperado.

Proteja seu manipulador com uma chave de desduplicação usando monitor_id + triggered_at:

const key = `${body.monitor_id}:${body.triggered_at}`
if (await redis.get(key)) return
await redis.set(key, '1', 'EX', 86400)

Consulte Melhores práticas para obter mais informações sobre idempotência.


Não consigo verificar a assinatura do webhook

  • Certifique-se de calcular o HMAC sobre os bytes brutos do corpo da solicitação, não sobre o JSON analisado
  • O segredo de assinatura está em Aplicativo → Configurações → Chaves de API
  • Depois de alternar seu segredo, atualize sua implantação antes que o segredo antigo seja revogado

Consulte Verificar assinaturas para exemplos completos de implementação.


Ainda preso?

Se nenhuma das opções acima resolver seu problema, envie um e-mail para support@diffhook.com com:

  • O ID da sua equipe (visível na URL do painel)
  • O ID ou URL do monitor
  • O ID de entrada de log se uma entrega falhar
  • Uma descrição do comportamento esperado versus comportamento real
DiffHook - Monitoramento de sites