Aller au contenu principal
DiffHook/Documentation
GuidesRéception de webhooks

Réception de webhooks

Lorsque DiffHook détecte une modification, il envoie un HTTP POST à ​​l'URL de livraison résolue : notification_config.webhook_url par moniteur si elle est définie, sinon le webhook par défaut de votre espace de travail à partir de Intégrations. Le corps JSON ci-dessous correspond à la charge utile envoyée par DiffHook (et non à la configuration du moniteur).

Charge utile du 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 — …"
}

Référence du champ

event — Toujours page.changed pour les événements de modification de contenu.

monitor_id — ID du moniteur qui a déclenché l'événement.

url : URL surveillée pour cet événement.

triggered_at : horodatage ISO 8601 indiquant le moment où le changement a été détecté.

content — Le nouveau contenu de la page après la modification (texte normalisé/extrait utilisé pour la surveillance — identique à l'instantané DiffHook comparé à la version précédente).

Garanties de livraison

  • À chaque modification détectée, DiffHook effectue **un ** HTTP POST immédiat. En cas d'échec (non-2xx, erreur réseau ou délai d'attente), il planifie jusqu'à 10 tentatives supplémentaires11 tentatives de livraison au total si votre point de terminaison ne réussit jamais.
  • L'intervalle entre les tentatives est exponentiel en minutes : après chaque échec, la prochaine tentative est éligible après 1, 2, 4, 8, 16, 32, 64, 128, 256, puis 512 minutes (chaque délai est le double du précédent). Les tentatives sont récupérées selon un calendrier environ une fois par minute, le timing n'est donc pas précis à la seconde près.
  • Une livraison est considérée comme réussie lorsque votre point de terminaison renvoie 2xx dans les 10 secondes.
  • Une fois toutes les tentatives utilisées, la livraison s'arrête ; la ligne dans App → Logs affiche failed ou exhausted selon l'état du canal.

Répondre aux webhooks

Votre point de terminaison doit renvoyer 200 OK le plus rapidement possible. Traitez la charge utile de manière asynchrone :

app.post('/webhook', (req, res) => {
  res.status(200).send('OK')       // Respond first
  processChangeAsync(req.body)     // Then process
})

Comportement de nouvelle tentative

TentativeQuand elle s'exécute
1erImmédiatement lorsque le changement est détecté
2ème1 minute après le 1er échec
3ème2 minutes après le 2ème échec
4ème4 minutes après le 3ème échec
5ème8 minutes après le 4ème échec
6ème16 minutes après le 5ème échec
7ème32 minutes après le 6ème échec
8ème64 minutes (~1 h) après le 7ème échec
9ème128 minutes (~2 h) après le 8ème échec
10e256 minutes (~4 h) après le 9ème échec
11e512 minutes (~8,5 h) après le 10ème échec

Après 11 tentatives infructueuses (1 tentative initiale + 10 tentatives), aucune autre diffusion automatique n'est exécutée pour cet événement. Corrigez votre point de terminaison et utilisez Déclencher maintenant sur le moniteur si vous avez besoin d'une autre tentative.

DiffHook - Surveillance de sites web