Skip to content
SEO Optimizer is live, Audit on page SEO and AI-search readiness. Try it free
Slack, Teams & Webhooks

Guías

Alertas en Slack, Teams y webhooks

Envía las alertas de Scanverra a un canal de Slack, a un canal de Microsoft Teams o a tu propio endpoint HTTPS, para que tu equipo se entere de una caída de puntuación o de un cambio arriesgado donde ya trabaja.

Planes Team y Enterprise. Los propietarios y administradores del equipo lo configuran en Equipo, luego Integraciones. Un equipo puede tener hasta 10 integraciones.

Cómo funciona

  1. 1Abre Equipo, luego Integraciones, y añade Slack, Microsoft Teams o un webhook.
  2. 2Elige qué alertas debe recibir y haz clic en Enviar prueba para comprobar que el mensaje llega.
  3. 3Cuando un análisis programado o un monitor encuentra algo, Scanverra publica la alerta en cuanto termina la ejecución.

Los análisis que alguien ejecuta a mano no envían alertas. Programa los sitios y repositorios que quieras vigilar en la página Análisis programados.

Alertas que puedes enviar

Cada integración recibe solo las alertas que marques. En un webhook, el nombre del evento llega en el encabezado X-Scanverra-Event y en el campo event.

scan.score_droppedUn análisis programado obtiene más de 10 puntos menos que su ejecución anterior. La alerta enumera lo nuevo.
scan.completedCualquier análisis programado termina con un resultado.
scan.policy_failedEnterpriseUn análisis programado no cumple la política de tu equipo (una puntuación mínima o ningún hallazgo crítico). La alerta enumera los motivos.
payment_page.scripts_changedEnterpriseUna página de pago vigilada carga un script nuevo o modificado, o cambia su Content-Security-Policy.
attack_surface.changedEnterpriseUn dominio vigilado gana un host nuevo, o un host pasa a tener riesgo de toma de control.
testAlguien hace clic en Enviar prueba.

Conectar Slack

  1. 1En Slack, abre Apps, busca Incoming Webhooks y añádelo al canal que debe recibir las alertas.
  2. 2Copia la URL del webhook. Empieza por https://hooks.slack.com/.
  3. 3En Scanverra, añade una integración, elige Slack, pega la URL y elige tus alertas.

Cada alerta muestra el titular, hasta cinco problemas nuevos y un botón "Open report".

Conectar Microsoft Teams

  1. 1En el canal de Teams, abre Flujos de trabajo y elige Publicar en un canal cuando se reciba una solicitud de webhook.
  2. 2Termina el flujo de trabajo y copia la URL que te da.
  3. 3En Scanverra, añade una integración, elige Microsoft Teams, pega la URL y elige tus alertas.

Cada alerta llega como una tarjeta con el titular, los problemas nuevos y un botón "Open report".

Webhooks

Usa un webhook para enviar alertas a cualquier otro sitio: abrir un ticket, avisar a quien esté de guardia o guardarlas. Scanverra envía un POST HTTPS con un cuerpo JSON por cada alerta.

Encabezados de la solicitud

Content-TypeSiempre application/json.
User-AgentIdentifica a Scanverra como remitente.Scanverra-Alerts/1.0
X-Scanverra-EventEl nombre del evento, igual que el campo event del cuerpo.scan.score_dropped
X-Scanverra-TimestampCuándo se firmó la solicitud, en segundos Unix.1762594212
X-Scanverra-Signaturesha256= seguido del HMAC-SHA256 de la marca de tiempo, un punto y el cuerpo sin procesar, con tu secreto de firma como clave.sha256=9f2c…

Cuerpo de la solicitud

Un ejemplo de caída de puntuación:

{
  "event": "scan.score_dropped",
  "sentAt": "2026-11-08T09:30:12.418Z",
  "summary": "Security Scan score dropped from 81 to 62 for shop.example.com",
  "data": {
    "target": "https://shop.example.com",
    "scanType": "security",
    "score": 62,
    "prevScore": 81,
    "reportUrl": "https://www.scanverra.com/security-scan/cm9x2k1",
    "newIssues": [
      "Missing Content-Security-Policy header",
      "jQuery 3.4.1 has known vulnerabilities"
    ]
  }
}

Campos

eventEl nombre del evento.
sentAtCuándo se envió la alerta (ISO 8601).
summaryUna descripción de una línea, lista para mostrar tal cual.
data.targetLa URL analizada, el dominio, o owner/repo para un repositorio.
data.scanTypeaudit, seo, security, browser, repo o crawl (un rastreo SEO de varias páginas).
data.scoreLa nueva puntuación de 0 a 100, o null cuando la alerta no tiene puntuación (monitores y pruebas).
data.prevScoreLa puntuación de la ejecución anterior, o null.
data.reportUrlUn enlace al informe o al monitor.
data.newIssuesLíneas cortas que describen qué cambió. Puede estar vacío o no aparecer.

Verificar la firma

Cuando añades un webhook, Scanverra muestra su secreto de firma (whsec_...) una sola vez. Guárdalo en tu servidor y comprueba cada solicitud antes de confiar en ella:

  1. 1Lee el cuerpo sin procesar exactamente como llegó, antes de cualquier análisis JSON.
  2. 2Calcula el HMAC-SHA256 del encabezado de marca de tiempo, un punto y el cuerpo sin procesar, con el secreto como clave.
  3. 3Compáralo con el encabezado de firma en tiempo constante y rechaza las solicitudes cuya marca de tiempo tenga más de 5 minutos.
import crypto from "node:crypto";
import express from "express";

const SECRET = process.env.SCANVERRA_WEBHOOK_SECRET; // whsec_...
const app = express();

// express.raw keeps the exact bytes Scanverra signed.
app.post("/scanverra", express.raw({ type: "application/json" }), (req, res) => {
  const timestamp = req.get("X-Scanverra-Timestamp") ?? "";
  const signature = req.get("X-Scanverra-Signature") ?? "";
  const expected = "sha256=" + crypto
    .createHmac("sha256", SECRET)
    .update(`${timestamp}.${req.body}`)
    .digest("hex");

  const fresh = Math.abs(Date.now() / 1000 - Number(timestamp)) <= 300;
  const valid = signature.length === expected.length &&
    crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
  if (!fresh || !valid) return res.sendStatus(401);

  const alert = JSON.parse(req.body);
  console.log(alert.event, alert.summary);
  res.sendStatus(204); // answer fast, do slow work afterwards
});

app.listen(3000);

Firmar la marca de tiempo junto con el cuerpo impide que alguien reenvíe más tarde una solicitud capturada.

Reglas de entrega

  • Responde con cualquier estado 2xx en menos de 5 segundos. Haz el trabajo lento después de responder.
  • Cada alerta se envía una vez y no se reintenta. El panel Integraciones muestra si la última entrega funcionó.
  • Las redirecciones no se siguen, así que usa la URL final.
  • Solo se aceptan direcciones HTTPS públicas. Las URL de Slack deben estar en hooks.slack.com y las de Teams en webhook.office.com o Power Automate.
  • Las alertas se detienen para todo el equipo si su plan Team o Enterprise vence.
Trata las URL de webhook y los secretos de firma como contraseñas. Quien tenga una URL de Slack o Teams puede publicar en ese canal. Scanverra solo muestra una URL guardada parcialmente oculta. Para cambiar un secreto, elimina la integración y añádela de nuevo.

¿Listo para conectar?

Los propietarios y administradores del equipo añaden una integración en un minuto. Envía una prueba antes de la primera alerta real.

Abrir Integraciones