Canales de notificación
Un canal es un destino para las alertas. Añada tantos como necesite y, a continuación, asócielos a monitorizaciones concretas (o a todas las monitorizaciones de forma predeterminada).
Canales frente a anulaciones por monitorización
Los canales se definen a nivel de organización. Cada canal puede marcarse como predeterminado, lo que significa que las nuevas monitorizaciones le envían alertas automáticamente. En cualquier monitorización concreta puede anular el valor predeterminado y elegir un subconjunto personalizado.
Slack
- En Slack, vaya a
Apps → Incoming Webhooks → Add to Slacky seleccione el canal que debe recibir las alertas. - Copie la URL del webhook que le proporciona Slack.
- En Page Deltas, abra la página
Channels, haga clic enAdd a channel, elijaSlack, pegue la URL y guarde. - Haga clic en
Send testpara confirmar que el mensaje llega al canal de Slack correcto.
Discord
En su servidor de Discord, abra Server Settings → Integrations → Webhooks → New Webhook. Copie la URL y péguela en un nuevo canal de Discord en Page Deltas.
Microsoft Teams
En Teams, haga clic con el botón derecho en el canal de destino, Connectors → Incoming Webhook → Configure. Asígnele el nombre Page Deltas, guarde y copie la URL en Page Deltas.
Añada la dirección del destinatario. Primero enviamos un correo de verificación a esa dirección: el canal permanece en estado de verificación pendiente y no recibirá alertas hasta que el destinatario lo confirme. El correo saliente se envía desde un dominio verificado que controlamos. Para la distribución a un equipo, utilice un alias de grupo en lugar de añadir direcciones individuales una por una.
Webhook genérico
Utilícelo cuando desee controlar su propio sistema a partir de las alertas (Linear, Jira, una Lambda, un Slack pero vía bot, etc.).
Payload
El cuerpo es un objeto JSON plano. Con el tiempo pueden añadirse nuevos campos, así que ignore las claves desconocidas en lugar de rechazarlas.
POST <your URL>
Content-Type: application/json
X-Signature: sha256=<hex>
{
"event": "change.detected",
"monitor_id": "...",
"monitor_url": "https://example.com/pricing",
"monitor_name": "Competitor pricing page",
"change_id": "...",
"detected_at": "2026-06-01T12:00:00Z",
"summary": "Pro plan increased from $29 to $39/month.",
"before_screenshot_url": "https://.../before.png",
"after_screenshot_url": "https://.../after.png",
"dashboard_url": "https://app.pagedeltas.com/monitors/..."
}Verificación de la firma (HMAC)
Cada petición incluye una cabecera X-Signature con el formato sha256=<hex>, donde el valor es el HMAC-SHA256 del cuerpo de la petición sin procesar usando el secreto de su canal, que se muestra una sola vez en el momento de la creación. No hay componente de marca de tiempo.
# Node.js example
import crypto from "node:crypto";
function verify(req, rawBody, secret) {
const header = req.headers["x-signature"]; // "sha256=<hex>"
const expected =
"sha256=" +
crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
return crypto.timingSafeEqual(
Buffer.from(header),
Buffer.from(expected),
);
}Entrega y fallos
| Comportamiento | Detalle |
|---|---|
| Intentos | Cada alerta se entrega con un único intento por canal. Actualmente no hay reintentos automáticos: haga que su receptor responda con rapidez y acepte duplicados de forma defensiva. |
| Fallos | Una respuesta distinta de 2xx o un error de red marca esa entrega como fallida. La propia monitorización no se pausa por fallos de entrega. |
| Auditoría | Cada intento (éxito o fallo, con su estado HTTP) se registra en el servidor en el registro de intentos de entrega. |
Buenas prácticas
- Use un canal por cada canal de espacio de trabajo de Slack: no reutilice un webhook para varias salas de Slack.
- Para monitorizaciones de gran volumen, envíe a un canal de Slack dedicado en lugar de a un #general concurrido.
- Para alertas críticas, asocie dos canales de tipos distintos (por ejemplo, Slack + email) para que una caída de Slack no oculte un cambio.