Skip to main content

Visão geral

O webhook genérico aceita um JSON simples de qualquer sistema capaz de fazer um POST — scripts, CI/CD, jobs internos, ferramentas sem integração dedicada.
Se a sua ferramenta tem tipo de fonte dedicado (Grafana, Prometheus, Datadog, CloudWatch, Zabbix, New Relic), prefira esse tipo — o mapeamento de campos e a recuperação já vêm prontos. Use o genérico para scripts, monitores próprios e ferramentas sem integração dedicada.

1. Crie a fonte de alerta

Em Fontes de alerta, crie uma fonte do tipo Genérico. Copie a URL e o token.

2. Envie o alerta

Resposta esperada: 202 Accepted.

Campos aceitos

Se status estiver ausente, o alerta é tratado como disparo. firing, alerting e resolved não diferenciam maiúsculas de minúsculas. Qualquer outro valor — inclusive ok, normal, recovered ou closed — é aceito com 202, mas ignorado: nenhum acionamento é criado nem resolvido.

Agrupamento

Envios repetidos com o mesmo externalId para o mesmo serviço são agregados ao acionamento aberto, em vez de criar duplicatas. Use um externalId estável por problema — o nome do job, o identificador do check, a chave da regra.
Se você omitir externalId, a correlação recai sobre uma assinatura calculada a partir do conteúdo. Mudanças no título ou na descrição passam a gerar acionamentos separados. Sempre que possível, envie um externalId.

Recuperação automática

Quando o problema passa, envie o mesmo externalId com "status": "resolved". O aciona.me resolve sozinho o acionamento aberto por essa fonte — sem depender de uma pessoa. Exemplo: um monitor de ping abre um acionamento quando a API deixa de responder e, poucos minutos depois, avisa que ela voltou.
Na recuperação, apenas status e externalId são necessários. Título, descrição e severidade podem ser enviados e podem ser diferentes da abertura; eles não são usados para encontrar o acionamento. service também não é necessário. O que acontece:
  • O acionamento passa para resolved em qualquer estado ativo — inclusive depois de alguém reconhecer ou assumir a responsabilidade. Não é preciso aprovar a resolução no painel.
  • A linha do tempo registra a resolução automática pelo webhook genérico, sem pessoa associada. Reconhecimento, responsável e histórico anteriores são preservados.
  • Escalonamentos e notificações pendentes são interrompidos. A recuperação não envia um aviso novo de resolução.
  • O acionamento é encerrado automaticamente 5 minutos depois da resolução, como nas demais integrações. Veja Resolver e encerrar.
  • Se o problema voltar — mesmo durante esses 5 minutos —, um novo firing abre um novo acionamento.
A recuperação exige um externalId válido (texto não vazio ou número). Sem ele, a requisição é recusada com 400 e nada é gravado. O aciona.me nunca resolve pelo título, pelo serviço ou pela assinatura do conteúdo. Para usar a recuperação, envie o externalId desde a abertura.

Boas práticas e limites

  • Mesma chave na abertura e na recuperação. O valor é comparado exatamente como enviado, sem ajuste de espaços ou de maiúsculas.
  • Uma chave por problema. Use identificadores diferentes para problemas ou serviços diferentes na mesma fonte: a recuperação não considera o serviço para desambiguar.
  • A correlação é por fonte. A recuperação só resolve acionamentos abertos pela mesma fonte de alerta, na mesma organização.
  • Recuperação sem acionamento aberto não faz nada. O 202 confirma que o alerta foi aceito, não que algo foi resolvido. Uma recuperação repetida é ignorada.
  • Recuperação atrasada. Se a mesma chave for reutilizada, uma recuperação antiga que chegue depois de uma nova queda pode resolver a nova ocorrência. Para evitar isso, use uma chave por episódio (por exemplo, ping-api-principal-2026-10-15T10:00), estável entre a abertura, as repetições e a recuperação desse episódio.
  • Ordem em rajadas. Em picos de volume, uma recuperação pode ser processada antes da abertura correspondente; nesse caso ela não encontra o acionamento e o disparo seguinte fica aberto. Espaçe o envio da recuperação ou resolva pelo painel.
  • Eventos antigos não são reprocessados. Recuperações enviadas antes deste recurso foram descartadas e não resolvem nada retroativamente.

Exemplos

Solução de problemas

O campo status provavelmente tem um valor diferente de firing, alerting ou resolved — nesse caso o alerta é aceito e descartado. Envie firing ou omita o campo. Se foi uma recuperação (resolved), ela nunca cria acionamento.
Falta o externalId ou ele está vazio, só com espaços ou não é texto/número. Envie o mesmo externalId usado na abertura.
O externalId está mudando entre os envios (por exemplo, incluindo um timestamp). Use um identificador estável por problema.
O campo service não bate com nenhum serviço da organização, ou o serviço não tem time responsável com escala ativa.
Confira se o externalId é exatamente o mesmo da abertura e se a recuperação foi enviada para a mesma fonte. Acionamentos abertos sem externalId não são resolvidos de forma confiável pelo webhook — resolva pelo painel ou pelo app.

Referência completa do payload