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

Guias

Alertas no Slack, Teams e webhooks

Envie os alertas do Scanverra para um canal do Slack, um canal do Microsoft Teams ou seu próprio endpoint HTTPS, para que sua equipe saiba de uma queda de pontuação ou de uma mudança arriscada onde já trabalha.

Planos Team e Enterprise. Proprietários e administradores da equipe configuram isso em Equipe, depois Integrações. Uma equipe pode ter até 10 integrações.

Como funciona

  1. 1Abra Equipe, depois Integrações, e adicione Slack, Microsoft Teams ou um webhook.
  2. 2Escolha quais alertas ela deve receber e clique em Enviar teste para confirmar que a mensagem chega.
  3. 3Quando uma verificação agendada ou um monitor encontra algo, o Scanverra publica o alerta assim que a execução termina.

Verificações que alguém executa manualmente não enviam alertas. Agende os sites e repositórios que você quer acompanhar na página Verificações agendadas.

Alertas que você pode enviar

Cada integração recebe apenas os alertas que você marcar. Em um webhook, o nome do evento chega no cabeçalho X-Scanverra-Event e no campo event.

scan.score_droppedUma verificação agendada pontua mais de 10 pontos abaixo da execução anterior. O alerta lista o que é novo.
scan.completedQualquer verificação agendada termina com um resultado.
scan.policy_failedEnterpriseUma verificação agendada não cumpre a política da sua equipe (uma pontuação mínima ou nenhuma descoberta crítica). O alerta lista os motivos.
payment_page.scripts_changedEnterpriseUma página de pagamento monitorada carrega um script novo ou alterado, ou sua Content-Security-Policy muda.
attack_surface.changedEnterpriseUm domínio monitorado ganha um novo host, ou um host passa a correr risco de tomada de controle.
testAlguém clica em Enviar teste.

Conectar o Slack

  1. 1No Slack, abra Apps, encontre Incoming Webhooks e adicione ao canal que deve receber os alertas.
  2. 2Copie a URL do webhook. Ela começa com https://hooks.slack.com/.
  3. 3No Scanverra, adicione uma integração, escolha Slack, cole a URL e escolha seus alertas.

Cada alerta mostra o título, até cinco problemas novos e um botão "Open report".

Conectar o Microsoft Teams

  1. 1No canal do Teams, abra Fluxos de trabalho e escolha Postar em um canal quando uma solicitação de webhook for recebida.
  2. 2Conclua o fluxo de trabalho e copie a URL que ele fornece.
  3. 3No Scanverra, adicione uma integração, escolha Microsoft Teams, cole a URL e escolha seus alertas.

Cada alerta chega como um cartão com o título, os problemas novos e um botão "Open report".

Webhooks

Use um webhook para enviar alertas para qualquer outro lugar: abrir um chamado, avisar quem está de plantão ou armazená-los. O Scanverra envia um POST HTTPS com um corpo JSON para cada alerta.

Cabeçalhos da requisição

Content-TypeSempre application/json.
User-AgentIdentifica o Scanverra como remetente.Scanverra-Alerts/1.0
X-Scanverra-EventO nome do evento, igual ao campo event do corpo.scan.score_dropped
X-Scanverra-TimestampQuando a requisição foi assinada, em segundos Unix.1762594212
X-Scanverra-Signaturesha256= seguido do HMAC-SHA256 do timestamp, um ponto e o corpo bruto, usando seu segredo de assinatura como chave.sha256=9f2c…

Corpo da requisição

Um exemplo de queda de pontuação:

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

eventO nome do evento.
sentAtQuando o alerta foi enviado (ISO 8601).
summaryUma descrição de uma linha, pronta para exibir como está.
data.targetA URL verificada, o domínio, ou owner/repo para um repositório.
data.scanTypeaudit, seo, security, browser, repo ou crawl (um rastreamento de SEO de várias páginas).
data.scoreA nova pontuação de 0 a 100, ou null quando o alerta não tem pontuação (monitores e testes).
data.prevScoreA pontuação da execução anterior, ou null.
data.reportUrlUm link para o relatório ou o monitor.
data.newIssuesLinhas curtas descrevendo o que mudou. Pode estar vazio ou ausente.

Verificar a assinatura

Quando você adiciona um webhook, o Scanverra mostra o segredo de assinatura (whsec_...) uma única vez. Guarde-o no seu servidor e confira cada requisição antes de confiar nela:

  1. 1Leia o corpo bruto da requisição exatamente como chegou, antes de qualquer parsing de JSON.
  2. 2Calcule o HMAC-SHA256 do cabeçalho de timestamp, um ponto e o corpo bruto, usando o segredo como chave.
  3. 3Compare com o cabeçalho de assinatura em tempo constante e rejeite requisições cujo timestamp tenha mais 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);

Assinar o timestamp junto com o corpo impede que uma requisição capturada seja reenviada depois.

Regras de entrega

  • Responda com qualquer status 2xx em até 5 segundos. Faça o trabalho demorado depois de responder.
  • Cada alerta é enviado uma vez e não é reenviado. O painel Integrações mostra se a última entrega funcionou.
  • Redirecionamentos não são seguidos, então use a URL final.
  • Só endereços HTTPS públicos são aceitos. URLs do Slack devem estar em hooks.slack.com, e as do Teams em webhook.office.com ou no Power Automate.
  • Os alertas param para a equipe toda se o plano Team ou Enterprise dela expirar.
Trate URLs de webhook e segredos de assinatura como senhas. Quem tem uma URL do Slack ou do Teams pode postar naquele canal. O Scanverra só mostra uma URL salva parcialmente oculta. Para trocar um segredo, remova a integração e adicione de novo.

Pronto para conectar?

Proprietários e administradores da equipe adicionam uma integração em um minuto. Envie um teste antes do primeiro alerta real.

Abrir Integrações