Empfangen von Webhooks
Wenn DiffHook eine Änderung erkennt, sendet es einen HTTP-POST an die aufgelöste Bereitstellungs-URL: pro Monitor notification_config.webhook_url, falls festgelegt, andernfalls an Ihren Workspace-Standard-Webhook von Integrationen. Der JSON-Körper unten ist die Nutzlast, die DiffHook sendet (nicht die Monitorkonfiguration).
Webhook-Nutzlast
{
"event": "page.changed",
"monitor_id": "mon_abc123",
"url": "https://competitor.com/pricing",
"triggered_at": "2026-03-16T14:22:00Z",
"content": "Pro plan: $59/month — …"
}
Feldreferenz
event – Immer page.changed für Inhaltsänderungsereignisse.
monitor_id – Die ID des Monitors, der das Ereignis ausgelöst hat.
url – Die überwachte URL für dieses Ereignis.
triggered_at – ISO 8601-Zeitstempel, wann die Änderung erkannt wurde.
content – Der neue Seiteninhalt nach der Änderung (normalisierter/extrahierter Text zur Überwachung – der Snapshot, den DiffHook mit der vorherigen Version verglichen hat).
Liefergarantien
- Bei jeder erkannten Änderung führt DiffHook einen sofortigen HTTP-POST durch. Wenn dies fehlschlägt (nicht 2xx, Netzwerkfehler oder Zeitüberschreitung), werden bis zu 10 weitere Versuche geplant – insgesamt 11 Zustellungsversuche, wenn Ihr Endpunkt nie erfolgreich ist.
- Die Verzögerung zwischen Versuchen ist in Minuten exponentiell: Nach jedem Fehlschlag ist der nächste Versuch nach 1, 2, 4, 8, 16, 32, 64, 128, 256 und dann 512 Minuten zulässig (jede Verzögerung ist doppelt so groß wie die vorherige). Wiederholungsversuche werden nach einem Zeitplan ungefähr einmal pro Minute abgearbeitet, sodass das Timing nicht auf eine Sekunde genau ist.
- Eine Zustellung gilt als erfolgreich, wenn Ihr Endpunkt innerhalb von 10 Sekunden 2xx zurückgibt.
- Nachdem alle Versuche aufgebraucht sind, stoppt die Zustellung; Die Zeile in App → Protokolle zeigt je nach Kanalstatus
failedoderexhaustedan.
Auf Webhooks reagieren
Ihr Endpunkt sollte so schnell wie möglich 200 OK zurückgeben. Verarbeiten Sie die Nutzlast asynchron:
app.post('/webhook', (req, res) => {
res.status(200).send('OK') // Respond first
processChangeAsync(req.body) // Then process
})
Wiederholungsverhalten
| Versuch | Wann er ausgeführt wird |
|---|---|
| 1. | Sofort, wenn die Änderung erkannt wird |
| 2. | ≥ 1 Minute nach dem 1. Fehlschlag |
| 3. | ≥ 2 Minuten nach dem 2. Fehlschlag |
| 4. | ≥ 4 Minuten nach dem 3. Fehlschlag |
| 5. | ≥ 8 Minuten nach dem 4. Fehlschlag |
| 6. | ≥ 16 Minuten nach dem 5. Fehlschlag |
| 7. | ≥ 32 Minuten nach dem 6. Fehlschlag |
| 8. | ≥ 64 Minuten (~1 Stunde) nach dem 7. Fehlschlag |
| 9. | ≥ 128 Minuten (~2 Stunden) nach dem 8. Fehlschlag |
| 10. | ≥ 256 Minuten (~4 Stunden) nach dem 9. Fehlschlag |
| 11. | ≥ 512 Minuten (~8,5 Stunden) nach dem 10. Fehlschlag |
Nach 11 erfolglosen Versuchen (1 erster Versuch + 10 Wiederholungsversuche) erfolgt für dieses Ereignis keine weitere automatische Zustellung. Reparieren Sie Ihren Endpunkt und verwenden Sie Jetzt auslösen auf dem Monitor, wenn Sie einen weiteren Trigger benötigen.