Pular para o conteúdo principal
Um webhook envia cada alerta de receita para outro sistema, como a sua ferramenta de chamados, um bot de chat ou um painel interno, numa requisição HTTPS POST assinada pela Stealth. Proprietários e Administradores gerenciam os webhooks em Integrações > Notificações. Uma organização pode ter até 10.

Como funciona

  • Depois de cada verificação, cada evento de incidente que passa pelas regras da organização (eventos, gravidade mínima e exceções) e pelo filtro do próprio webhook (gravidade mínima e eventos) é enviado ao webhook.
  • Os eventos são opened (Nova queda), escalated (Queda piorou) e resolved (Normalizou). Uma piora vinda de abaixo da gravidade mínima do webhook chega como opened, porque é a primeira vez que o webhook fica sabendo do incidente.
  • Cada evento é uma requisição, e as requisições para um mesmo webhook saem em ordem. Os webhooks nunca esperam o resumo diário.
  • Os eventos por hora vêm da verificação regular de cada hora. Uma verificação pedida com Verificar agora pode enviar eventos das regras diárias.

Passo a passo

1

Prepare o endpoint

O endpoint precisa usar https:// na porta padrão (443) com certificado válido, ter um nome de host público e responder com 2xx em até 5 segundos. Endereços IP, localhost, nomes sem ponto e sufixos internos como .local e .internal são recusados. Usuário ou senha na URL são recusados. Um token no caminho ou na query é aceito.
2

Adicione o webhook

Vá em Integrações > Notificações e escolha Adicionar webhook. Preencha Nome e URL do endpoint, escolha a Gravidade mínima (Só Crítico, Crítico e Atenção ou Todas as gravidades) e os Eventos (Nova queda, Queda piorou, Normalizou), e escolha Salvar.
3

Copie o segredo de assinatura

A Stealth mostra o Segredo de assinatura (ele começa com whsec_) uma única vez. Copie para o seu gerenciador de segredos. Para trocá-lo depois, remova o webhook e adicione de novo.
4

Envie um teste

Escolha Enviar teste. A Stealth envia o exemplo abaixo com "test": true e a sua própria organização, numa única tentativa, sem novas tentativas. O incident.url aponta para um incidente que não existe. O teste também funciona num webhook pausado, e dá para enviar um a cada 10 segundos. O resultado aparece numa mensagem e em Envios.
5

Confira a assinatura no seu código

Recuse toda requisição cuja assinatura não confere, como mostra Conferir a assinatura.

Requisição

Corpo (versão v1)

payload.json
Campos novos podem entrar na v1 a qualquer momento, então ignore os campos que você não conhece. Renomear ou remover um campo exige uma v2, anunciada no histórico de mudanças.

Conferir a assinatura

Stealth-Signature é t=<segundos unix>,v1=<hex>, em que o hex é o HMAC-SHA256 de <t>.<corpo bruto>, com o segredo de assinatura do webhook como chave (a string inteira, incluindo whsec_).
  1. Leia o corpo bruto antes de interpretar o JSON.
  2. Calcule o HMAC e compare em tempo constante.
  3. Recuse um t com mais de 5 minutos de diferença do seu relógio, para bloquear repetições.
verify.js
verify.py

Respostas, tentativas e pausa

  • Responda com qualquer 2xx em até 5 segundos. Se o seu processamento demora mais, responda primeiro e processe depois.
  • A Stealth tenta até 3 vezes, esperando 1 segundo e depois 3 segundos, após um timeout, um erro de rede, 408, 429 ou um 5xx. Qualquer outra resposta falha na hora. Redirecionamentos nunca são seguidos, e o corpo da resposta nunca é lido.
  • Quando um envio falha em todas as tentativas, os outros eventos daquela verificação não são enviados a esse webhook e aparecem como Não enviado no histórico. Eventos que falharam não são reenviados depois.
  • Cada webhook tem até 60 segundos de cada verificação. Quando esse tempo acaba, os envios que ainda esperavam aparecem como Não enviado, com uma nota de que o tempo acabou. Eles não contam como falha e não são reenviados.
  • Um webhook é pausado quando está falhando há 24 horas e pelo menos 3 verificações falharam nesse período. Todos os membros da organização recebem um aviso no app e por e-mail, e Proprietários e Administradores recebem o link para retomar. Um envio que funciona, ou um Enviar teste que recebe 2xx, zera a contagem. Os eventos que acontecem enquanto ele está pausado não são guardados. Escolha Retomar quando o endpoint voltar a funcionar.

O que você vê na tela

Cada webhook em Integrações > Notificações mostra a situação (Ativo ou Pausado) e, quando está falhando, desde quando. Envios mostra os últimos 20 envios: Entregue, Falhou ou Não enviado, com o status HTTP, as tentativas e a duração. A Stealth guarda o resultado, nunca o conteúdo. Uma verificação acrescenta no máximo 10 linhas Não enviado por webhook. O menu da linha tem Editar, Pausar ou Retomar, e Remover. Remover um webhook o interrompe na hora e apaga o histórico de envios.

Como a Stealth protege as requisições que envia

Um webhook faz os servidores da Stealth enviarem uma requisição para um endereço que você escolhe, por isso a Stealth limita para onde essa requisição pode ir:
  • Só https, só a porta 443, e o certificado precisa ser válido.
  • Nada de endereços IP nem de nomes privados ou internos.
  • Redirecionamentos nunca são seguidos, e o corpo da resposta nunca é lido.
  • O endereço é conferido quando você salva e de novo antes de cada envio.
A Stealth não confere para qual endereço IP o nome do host aponta no momento do envio, e uma conferência assim poderia ser burlada trocando o DNS do nome entre a conferência e a requisição. Por isso, um nome público apontado para um endereço privado não é barrado. Use só endpoints que você controla e cujo DNS é de confiança. Enviar teste também sai dos servidores da Stealth, não do seu navegador, então o endpoint precisa estar acessível pela internet.

Perguntas frequentes

Use o campo id. Ele se repete em todas as tentativas e em todos os webhooks da organização.
Não diretamente. Aponte o webhook para um pequeno serviço ou uma ferramenta de automação que receba a requisição, confira a assinatura e publique a mensagem no seu chat.
Não. A versão v1 traz os campos listados acima. A leitura aparece no painel e no e-mail de abertura dos incidentes diários.
Última modificação em 13 de outubro de 2026