Recibir webhooks
Cuando DiffHook detecta un cambio, envía un HTTP POST a la URL de entrega resuelta: por monitor notification_config.webhook_url si está configurado; de lo contrario, el webhook predeterminado de su espacio de trabajo desde Integraciones. El cuerpo JSON a continuación es la carga útil que envía DiffHook (no la configuración del monitor).
Carga útil del 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 — …"
}
Referencia de campo
event: siempre page.changed para eventos de cambio de contenido.
monitor_id: ID del monitor que desencadenó el evento.
url: la URL monitoreada para este evento.
triggered_at: marca de tiempo ISO 8601 de cuando se detectó el cambio.
content: el contenido de la nueva página después del cambio (texto normalizado/extraído utilizado para el monitoreo, igual que la instantánea que DiffHook diferenció de la versión anterior).
Garantías de entrega
- En cada cambio detectado, DiffHook realiza una POST HTTP inmediata. Si eso falla (no 2xx, error de red o tiempo de espera), programa hasta 10 intentos más: 11 intentos de entrega en total si su punto final nunca tiene éxito.
- El retraso entre intentos es exponencial en minutos: después de cada error, el siguiente intento es elegible después de 1, 2, 4, 8, 16, 32, 64, 128, 256 y luego 512 minutos (cada retraso es el doble del anterior). Los reintentos se realizan aproximadamente una vez por minuto, por lo que el tiempo no es preciso en menos de un segundo.
- Una entrega se considera exitosa cuando su punto final devuelve 2xx en 10 segundos.
- Una vez utilizados todos los intentos, la entrega se detiene; la fila en Aplicación → Registros muestra
failedoexhaustedsegún el estado del canal.
Responder a webhooks
Su punto final debería devolver 200 OK lo más rápido posible. Procese la carga útil de forma asincrónica:
app.post('/webhook', (req, res) => {
res.status(200).send('OK') // Respond first
processChangeAsync(req.body) // Then process
})
Comportamiento de reintento
| Intento | Cuando se ejecuta |
|---|---|
| 1º | Inmediatamente cuando se detecta el cambio |
| 2do | ≥ 1 minuto después del primer fallo |
| 3º | ≥ 2 minutos después del segundo fallo |
| 4to | ≥ 4 minutos después del tercer fallo |
| 5to | ≥ 8 minutos después del 4º fallo |
| 6to | ≥ 16 minutos después del quinto fallo |
| 7mo | ≥ 32 minutos después del sexto fallo |
| 8vo | ≥ 64 minutos (~1 h) después del séptimo fallo |
| 9no | ≥ 128 minutos (~2 h) después del octavo fallo |
| 10mo | ≥ 256 minutos (~4 h) después del noveno fallo |
| 11 | ≥ 512 minutos (~8,5 h) después del décimo fallo |
Después de 11 intentos fallidos (1 inicial + 10 reintentos), no se ejecutarán más entregas automáticas para ese evento. Arregle su punto final y use Activar ahora en el monitor si necesita otro disparo.