Pular para o conteúdo principal

Webhooks de eventos de saída

Esta página explica os webhooks de eventos de saída: o Almirant envia notificações de eventos do projeto para o seu servidor. Para iniciar um agente de um sistema externo, use Webhooks de agentes.

O Almirant envia notificações HTTP de saída ao seu servidor quando ocorrem eventos nos seus projetos. Sempre que um work item é criado, movido entre colunas ou um sprint é fechado, o Almirant envia uma solicitação POST à URL configurada.

Isso é útil para:

  • Sincronizar o Almirant com ferramentas externas (Slack, Discord, seu próprio dashboard)
  • Disparar pipelines de CI/CD quando uma tarefa muda de estado
  • Alimentar sistemas de analytics ou relatórios
  • Automatizar fluxos personalizados fora do Almirant

Criar um webhook​

  1. Acesse Configurações > Webhooks no seu projeto
  2. Clique em Criar webhook
  3. Preencha os campos:
CampoDescriçãoExemplo
URLEndpoint HTTPS que receberá as notificaçõeshttps://mi-servidor.com/webhooks/almirant
EventosTipos de eventos que acionam o webhookwork_item.created, sprint.closed
SecretChave secreta para validar a autenticidade das solicitaçõesÉ gerada automaticamente ou você pode definir a sua
  1. Clique em Salvar
Importante

A URL deve estar acessível pela internet e usar HTTPS. O Almirant não enviará webhooks para URLs HTTP sem criptografia, exceto localhost no desenvolvimento.

Eventos disponíveis​

Selecione um ou mais eventos ao criar o webhook:

EventoÉ acionado quando...
work_item.createdUm novo work item é criado
work_item.updatedCampos de um work item são alterados (título, descrição, prioridade etc.)
work_item.movedUm work item é movido entre colunas do board
work_item.archivedUm work item é arquivado
lead.createdUm novo lead é criado no CRM
lead.updatedOs dados de um lead são atualizados
lead.stage_changedUm lead muda de etapa no funnel
sprint.createdUm novo sprint é criado
sprint.closedUm sprint é fechado
Dica

Se você só precisa reagir a alterações no quadro, selecione apenas os eventos work_item.*. Quanto menos eventos você assinar, menos tráfego o seu servidor receberá.

Verificar a assinatura do webhook​

Cada solicitação inclui uma assinatura HMAC-SHA256 no cabeçalho X-Almirant-Signature, que permite verificar que ela realmente vem do Almirant e não foi manipulada.

Como a verificação funciona​

  1. O Almirant gera um hash HMAC-SHA256 do body da solicitação usando seu secret como chave
  2. Inclui o hash no cabeçalho X-Almirant-Signature
  3. Seu servidor recalcula o hash com o mesmo secret e os compara

Exemplo em Node.js​

import crypto from 'node:crypto';

function verifyWebhookSignature(body, signature, secret) {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(body, 'utf8')
.digest('hex');

return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
);
}

// En tu endpoint:
app.post('/webhooks/almirant', (req, res) => {
const signature = req.headers['x-almirant-signature'];
const rawBody = req.rawBody; // Body como string, no parseado

if (!verifyWebhookSignature(rawBody, signature, process.env.WEBHOOK_SECRET)) {
return res.status(401).json({ error: 'Firma invalida' });
}

const event = JSON.parse(rawBody);
console.log('Evento recibido:', event.type);

// Procesar el evento...

res.status(200).json({ received: true });
});

Exemplo em Python​

import hmac
import hashlib

def verify_webhook_signature(body: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(
secret.encode('utf-8'),
body,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(signature, expected)
Segurança

Sempre verifique a assinatura antes de processar o evento. Nunca confie nos dados do webhook sem validar sua autenticidade. Use timingSafeEqual (ou equivalente) para evitar ataques de timing.

Ver logs de entregas​

Cada webhook mantém um histórico de entregas que você pode consultar para depurar problemas.

  1. Acesse Configurações > Webhooks
  2. Clique no webhook que você quer inspecionar
  3. Na aba Entregas, você verá uma lista com:
ColunaDescrição
DataMomento exato da entrega
EventoTipo de evento que acionou a entrega
EstadoCódigo HTTP da resposta (200, 500, timeout etc.)
DuraçãoTempo de resposta do seu servidor

Clique em qualquer entrega para ver os detalhes completos: cabeçalhos enviados, body do payload e resposta do seu servidor.

Tentativas e falhas​

O Almirant tenta novamente entregas com falha automaticamente, com backoff exponencial:

TentativaEspera antes da nova tentativa
1Imediata
21 minuto
35 minutos
430 minutos
52 horas

Uma falha ocorre quando:

  • Seu servidor responde com um código HTTP >= 400
  • Seu servidor não responde em 10 segundos (timeout)
  • Não é possível estabelecer conexão com o seu servidor

Após 5 tentativas com falha, a entrega é marcada como falha e não é mais repetida. Você pode reenviá-la manualmente pelo log de entregas.

Nota

Seu servidor deve responder com um código HTTP 2xx, idealmente 200, o mais rápido possível. Se você precisar de processamento demorado, aceite o webhook imediatamente e processe os dados de forma assíncrona.

Desativar ou excluir um webhook​

  • Desativar: Na lista de webhooks, use o toggle para desativá-lo temporariamente. As entregas são pausadas, mas a configuração é mantida.
  • Excluir: Clique no ícone de excluir. Essa ação é irreversível e também apaga o histórico de entregas.