Aller au contenu principal
DiffHook/Documentation
PlateformeDépannage

Dépannage

Solutions aux problèmes les plus courants.

Je ne reçois pas de livraisons de webhooks

1. Vérifiez d'abord vos journaux. Accédez à Application → Journaux. Trouvez le moniteur approprié et vérifiez l'état de livraison. S'il affiche failed, développez l'entrée pour voir le code d'état HTTP renvoyé par votre point de terminaison.

2. Votre point de terminaison a renvoyé un statut non-2xx ou a expiré. DiffHook considère qu'une livraison est réussie uniquement lorsque votre point de terminaison renvoie 2xx dans les 10 secondes. Causes courantes :

  • Renvoi de 500 en raison d'une erreur dans votre gestionnaire
  • Traitement lent avant de répondre : déplacez le traitement de manière asynchrone et renvoyez immédiatement 200
  • Pare-feu ou WAF bloquant la plage IP de DiffHook

3. L'URL de votre point de terminaison est erronée. Vérifiez à nouveau l’URL du webhook sur le moniteur. Assurez-vous qu'il est accessible au public (et non à localhost).

4. Toutes les tentatives automatiques ont été utilisées. DiffHook essaie une fois immédiatement, puis jusqu'à 10 fois supplémentaires avec des délais exponentiels en minutes (1, 2, 4,… jusqu'à 512 minutes entre les tentatives). Lorsque chaque tentative échoue, la livraison s’arrête ; l'entrée dans les journaux affiche failed ou exhausted. Corrigez votre point de terminaison, puis utilisez Déclencher maintenant sur le moniteur pour relancer.


Un moniteur s'est déclenché mais je n'ai reçu aucune notification

Vérifiez qu'au moins un canal de notification est configuré et connecté :

  • Application → Paramètres → Intégrations — vérifiez que Slack/Discord/Telegram/Email est connecté
  • Utilisez le bouton Test pour confirmer que le canal fonctionne indépendamment des événements du moniteur.

Mon moniteur ne détecte pas les changements visibles sur la page

Contenu rendu en JavaScript. Si la page charge du contenu via JavaScript (React, Vue, SPAs), le HTML statique récupéré par DiffHook ne l'inclura pas. Activez le rendu JS sur le moniteur pour utiliser un navigateur sans interface graphique.

Sélecteur CSS trop étroit ou cassé. Si vous avez spécifié un css_selector, vérifiez qu'il correspond toujours à un élément de la page. Refonte des sites : les sélecteurs peuvent devenir obsolètes. Supprimez temporairement le sélecteur pour confirmer que DiffHook voit le changement, puis affinez.

Le changement s'effectue dans le filtre différentiel. DiffHook supprime le bruit dynamique (horodatages, espaces publicitaires, jetons de session). Si votre contenu cible correspond à un modèle de filtre, il peut être supprimé. Contactez le support avec l'URL et nous pourrons inspecter la différence brute.

Gigue des sondages. Vérifie le feu dans une fenêtre de ± 30 secondes autour de l'heure prévue. Un changement apparu et disparu pendant votre intervalle d’interrogation ne sera pas détecté.


Je reçois trop d'alertes faussement positives

Utilisez un sélecteur CSS. Étendez le moniteur uniquement au contenu qui vous intéresse :

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

Cela filtre les bannières de cookies, les actualisations des publicités, les modifications d'horodatage et autres bruits.

Augmentez l'intervalle. Si une page change fréquemment mais que vous ne vous souciez que des changements significatifs, un intervalle plus long réduit le bruit.

Vérifiez le contenu dynamique. Certains sites intègrent des jetons de session ou des noms occasionnels dans le corps de la page. Ceux-ci changent à chaque chargement et déclencheront toujours une différence. Utilisez un sélecteur CSS pour exclure l'élément concerné.


Mon moniteur s'affiche comme étant en pause de manière inattendue

Les moniteurs sont automatiquement mis en pause dans deux scénarios :

  1. Rétrogradation du forfait : vous avez réduit votre forfait et disposez de plus de moniteurs actifs que ne le permet la nouvelle limite. Accédez à Application → Moniteurs, reprenez les moniteurs que vous souhaitez conserver et supprimez ou mettez en pause le reste.
  2. Compte suspendu — Un échec de paiement a mis votre compte en attente. Résolvez le paiement dans Application → Facturation pour le réactiver.

Une livraison a été envoyée deux fois

Des livraisons en double peuvent se produire dans de rares scénarios de panne de réseau (la demande a été transmise mais l'accusé de réception a été perdu, provoquant une nouvelle tentative). Il s’agit d’un comportement attendu.

Protégez votre gestionnaire avec une clé de déduplication en utilisant 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)

Voir Meilleures pratiques pour en savoir plus sur l'idempotence.


Je ne parviens pas à vérifier la signature du webhook

  • Assurez-vous de calculer le HMAC sur les octets bruts du corps de la requête, et non sur le JSON analysé.
  • Le secret de signature se trouve dans Application → Paramètres → Clés API
  • Après avoir alterné votre secret, mettez à jour votre déploiement avant que l'ancien secret ne soit révoqué

Voir Vérifier les signatures pour des exemples d'implémentation complets.


Toujours bloqué ?

Si aucune des solutions ci-dessus ne résout votre problème, envoyez un e-mail à support@diffhook.com avec :

  • Votre identifiant d'équipe (visible dans l'URL du tableau de bord)
  • L'ID ou l'URL du moniteur
  • L'ID de l'entrée du journal en cas d'échec d'une diffusion
  • Une description du comportement attendu par rapport au comportement réel
DiffHook - Surveillance de sites web