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

Guides

Alertes Slack, Teams et webhooks

Envoyez les alertes Scanverra vers un canal Slack, un canal Microsoft Teams ou votre propre endpoint HTTPS, pour que votre équipe apprenne une baisse de score ou un changement risqué là où elle travaille déjà.

Offres Team et Enterprise. Les propriétaires et administrateurs de l'équipe le configurent dans Équipe, puis Intégrations. Une équipe peut avoir jusqu'à 10 intégrations.

Fonctionnement

  1. 1Ouvrez Équipe, puis Intégrations, et ajoutez Slack, Microsoft Teams ou un webhook.
  2. 2Choisissez les alertes à recevoir, puis cliquez sur Envoyer un test pour vérifier que le message arrive.
  3. 3Quand une analyse planifiée ou une surveillance trouve quelque chose, Scanverra publie l'alerte dès la fin de l'exécution.

Les analyses lancées à la main n'envoient pas d'alertes. Planifiez les sites et dépôts à surveiller sur la page Analyses planifiées.

Alertes disponibles

Chaque intégration ne reçoit que les alertes que vous cochez. Dans un webhook, le nom de l'événement arrive dans l'en-tête X-Scanverra-Event et le champ event.

scan.score_droppedUne analyse planifiée obtient plus de 10 points de moins que l'exécution précédente. L'alerte liste ce qui est nouveau.
scan.completedUne analyse planifiée se termine avec un résultat.
scan.policy_failedEnterpriseUne analyse planifiée ne respecte pas la politique de votre équipe (un score minimum, ou aucune découverte critique). L'alerte en donne les raisons.
payment_page.scripts_changedEnterpriseUne page de paiement surveillée charge un script nouveau ou modifié, ou sa Content-Security-Policy change.
attack_surface.changedEnterpriseUn domaine surveillé gagne un nouvel hôte, ou un hôte devient exposé à une prise de contrôle.
testQuelqu'un clique sur Envoyer un test.

Connecter Slack

  1. 1Dans Slack, ouvrez Apps, trouvez Incoming Webhooks et ajoutez-le au canal qui doit recevoir les alertes.
  2. 2Copiez l'URL du webhook. Elle commence par https://hooks.slack.com/.
  3. 3Dans Scanverra, ajoutez une intégration, choisissez Slack, collez l'URL et choisissez vos alertes.

Chaque alerte affiche le titre, jusqu'à cinq nouveaux problèmes et un bouton « Open report ».

Connecter Microsoft Teams

  1. 1Dans le canal Teams, ouvrez Workflows et choisissez Publier dans un canal lors de la réception d'une requête webhook.
  2. 2Terminez le workflow et copiez l'URL qu'il vous donne.
  3. 3Dans Scanverra, ajoutez une intégration, choisissez Microsoft Teams, collez l'URL et choisissez vos alertes.

Chaque alerte arrive sous forme de carte avec le titre, les nouveaux problèmes et un bouton « Open report ».

Webhooks

Utilisez un webhook pour envoyer les alertes ailleurs : ouvrir un ticket, prévenir la personne d'astreinte ou les archiver. Scanverra envoie un POST HTTPS avec un corps JSON pour chaque alerte.

En-têtes de la requête

Content-TypeToujours application/json.
User-AgentIdentifie Scanverra comme expéditeur.Scanverra-Alerts/1.0
X-Scanverra-EventLe nom de l'événement, identique au champ event du corps.scan.score_dropped
X-Scanverra-TimestampLe moment de la signature, en secondes Unix.1762594212
X-Scanverra-Signaturesha256= suivi du HMAC-SHA256 de l'horodatage, d'un point et du corps brut, avec votre secret de signature comme clé.sha256=9f2c…

Corps de la requête

Exemple de baisse de score :

{
  "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"
    ]
  }
}

Champs

eventLe nom de l'événement.
sentAtLe moment de l'envoi de l'alerte (ISO 8601).
summaryUne description d'une ligne, prête à afficher telle quelle.
data.targetL'URL analysée, le domaine, ou owner/repo pour un dépôt.
data.scanTypeaudit, seo, security, browser, repo ou crawl (une exploration SEO sur plusieurs pages).
data.scoreLe nouveau score de 0 à 100, ou null si l'alerte n'a pas de score (surveillances et tests).
data.prevScoreLe score de l'exécution précédente, ou null.
data.reportUrlUn lien vers le rapport ou la surveillance.
data.newIssuesDe courtes lignes décrivant ce qui a changé. Peut être vide ou absent.

Vérifier la signature

Quand vous ajoutez un webhook, Scanverra affiche son secret de signature (whsec_...) une seule fois. Conservez-le sur votre serveur, puis vérifiez chaque requête avant de lui faire confiance :

  1. 1Lisez le corps brut de la requête tel qu'il est arrivé, avant toute analyse JSON.
  2. 2Calculez le HMAC-SHA256 de l'en-tête d'horodatage, d'un point et du corps brut, avec le secret comme clé.
  3. 3Comparez-le à l'en-tête de signature en temps constant, et rejetez les requêtes dont l'horodatage date de plus de 5 minutes.
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);

Comme l'horodatage est signé avec le corps, une requête interceptée ne peut pas être rejouée plus tard.

Règles d'envoi

  • Répondez avec n'importe quel statut 2xx en moins de 5 secondes. Faites le travail long après avoir répondu.
  • Chaque alerte est envoyée une fois, sans nouvel essai. Le panneau Intégrations indique si le dernier envoi a réussi.
  • Les redirections ne sont pas suivies : utilisez l'URL finale.
  • Seules les adresses HTTPS publiques sont acceptées. Les URL Slack doivent être sur hooks.slack.com, et celles de Teams sur webhook.office.com ou Power Automate.
  • Les alertes s'arrêtent pour toute l'équipe si son offre Team ou Enterprise expire.
Traitez les URL de webhook et les secrets de signature comme des mots de passe. Toute personne qui a une URL Slack ou Teams peut publier dans ce canal. Scanverra n'affiche une URL enregistrée que partiellement masquée. Pour changer un secret, supprimez l'intégration et ajoutez-la à nouveau.

Prêt à connecter ?

Les propriétaires et administrateurs de l'équipe ajoutent une intégration en une minute. Envoyez un test avant la première vraie alerte.

Ouvrir Intégrations