Webhooks

O que são Webhooks?
Webhooks permitem que o Hedy envie dados para outros aplicativos e serviços em tempo real. Quando um evento ocorre - como uma sessão terminando ou um destaque sendo criado - o Hedy envia os dados para uma URL que você especifica. Isso permite que você construa automações poderosas sem nenhuma programação.
Por exemplo, você poderia automaticamente:
-
Salvar transcrições de reuniões no Google Docs ou Notion
-
Publicar recapitulativos de sessão em um canal do Slack
-
Criar tarefas no Asana ou Todoist a partir de itens de ação
-
Registrar dados de sessão em uma planilha
Requisitos
-
Assinatura Hedy Pro - Webhooks são um recurso Pro
-
Cloud Sync ativado - Necessário para que o Hedy possa processar eventos de webhook através da nuvem
Você pode visualizar seus webhooks sem Cloud Sync, mas precisa dele ativado para criar, editar ou acionar webhooks.
Configurando um Webhook
-
Abra o Hedy e vá para Settings
-
Role para baixo até a seção API Access
-
Toque em Manage Webhooks
-
Toque no botão + para adicionar um novo webhook
-
Insira um name (opcional) - um rótulo para ajudá-lo a lembrar para que serve este webhook (ex.: “Zapier — Meeting Notes”)
-
Cole a webhook URL do seu serviço externo - esta deve ser uma URL HTTPS
-
Selecione os events que deseja assinar (veja abaixo)
-
Toque em Create
-
O Hedy exibe a chave de assinatura imediatamente após a criação. Esta é a única vez que ela é mostrada - copie e guarde-a em um local seguro antes de fechar a caixa de diálogo.
Você pode criar até 10 webhooks.
Eventos Disponíveis
Escolha quais eventos acionam seu webhook:
Session Created - Dispara quando você inicia uma nova gravação. Envia o título da sessão e horário de início.
Session Ended - Dispara quando uma gravação termina. Envia os dados completos da sessão incluindo transcrição, recapitulativo, atas de reunião, destaques e informações do tópico. Este é o evento mais abrangente.
Session Exported - Dispara quando você exporta manualmente uma sessão para seus webhooks. Envia dados semelhantes ao Session Ended (transcrição, recapitulativo, destaques, etc.).
Highlight Created - Dispara cada vez que um destaque é capturado durante uma sessão. Envia o texto do destaque, insight de IA e timestamp.
Todo Exported - Dispara quando você exporta um item de ação. Envia o texto da tarefa, data de vencimento e sessão associada.
Exportando uma Sessão Manualmente
Além dos eventos automáticos, você pode enviar manualmente qualquer sessão para seus webhooks:
-
Abra uma sessão concluída
-
Toque em Export to Webhook
-
Se você tiver múltiplos webhooks inscritos no evento Session Exported, selecione para quais enviar
-
Confirme a exportação
Testando Seu Webhook
Antes de confiar em um webhook, você pode verificar se funciona:
-
Vá para Settings > API Access > Manage Webhooks
-
Toque no botão test em qualquer webhook
-
O Hedy envia um payload de teste para sua URL e mostra se teve sucesso, junto com o código de status da resposta
Se o teste falhar, verifique se a URL está correta e se seu serviço externo está pronto para receber requisições.
Inspecionando o Payload com webhook.site
Se você quiser ver exatamente o que o Hedy envia — cada header, o corpo JSON completo, a assinatura — antes de configurar o Zapier, Make ou seu próprio servidor, o webhook.site é a forma mais rápida:
-
Abra o webhook.site — uma URL única é gerada instantaneamente, sem necessidade de cadastro
-
Copie a URL e cole no seu webhook do Hedy
-
Toque em test no Hedy (ou acione um evento real)
-
Volte para o webhook.site — cada requisição aparece em tempo real, com headers completos, query string e corpo
Use isso para descobrir os nomes exatos dos campos e a estrutura dos payloads do Hedy, e então construa sua automação real com base nesse formato. O plano gratuito aceita até 100 requisições por URL, mais do que suficiente para depuração.
Quais Dados são Enviados?
Cada requisição de webhook é um HTTP POST com um corpo JSON. Os dados dependem do tipo de evento, mas um evento Session Ended inclui:
-
Detalhes da Sessão - Título, horário de início, horário de término, duração
-
Transcrição - O texto completo da sua sessão
-
Conversas - Diálogo estruturado participante por participante
-
Atas de Reunião - Principais pontos de discussão
-
Recapitulativo - Resumo gerado por IA
-
Destaques - Cada destaque com seu insight de IA, citação e timestamp
-
Tópico - O nome do tópico e insights, se a sessão estiver atribuída a um tópico
Segurança e Verificação
Cada requisição de webhook inclui uma assinatura para que você possa verificar que genuinamente veio do Hedy:
-
X-Hedy-Signature header - Um hash HMAC-SHA256 bruto, codificado em hexadecimal, do corpo da requisição, assinado com a chave de assinatura única do seu webhook (sem prefixo
sha256=). A chave é exibida apenas uma vez, quando você cria o webhook. -
X-Hedy-Event header - O tipo de evento (ex.: session.ended)
Todas as URLs de webhook devem usar HTTPS para garantir que seus dados estejam criptografados em trânsito. O Hedy não enviará dados para endpoints HTTP.
Verificar a Assinatura
Se você estiver criando seu próprio endpoint, verifique cada requisição antes de confiar nela. Calcule o HMAC-SHA256 do corpo bruto da requisição com sua chave de assinatura e compare com o header X-Hedy-Signature usando uma comparação em tempo constante (um == comum é vulnerável a ataques de temporização).
Node.js:
const crypto = require('crypto');
function verifyHedy(rawBody, signature, secret) {
const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const a = Buffer.from(expected, 'hex');
const b = Buffer.from(signature, 'hex');
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
Python:
import hmac, hashlib
def verify_hedy(raw_body: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, signature)
Importante: Use os bytes brutos do corpo da requisição, exatamente como recebidos. Re-serializar o JSON após o parse vai alterar espaços em branco ou a ordem das chaves, e a assinatura não vai corresponder.
Usando Webhooks com Plataformas Populares
Zapier - Crie um Zap com “Webhooks by Zapier” como trigger. Escolha “Catch Hook”, copie a URL do webhook e cole no Hedy.
Make (anteriormente Integromat) - Adicione um módulo “Custom Webhook” como trigger do seu cenário. Copie a URL gerada e cole no Hedy.
n8n - Adicione um nó trigger “Webhook” ao seu workflow. Copie a URL de produção e cole no Hedy.
Entrega e Tentativas
O Hedy automaticamente faz novas tentativas em entregas que falharam:
-
Erros do servidor (5xx) - Retentado até 2 vezes com atrasos crescentes
-
Rate limited (429) - Retentado uma vez, respeitando o timing de retry do serviço
-
Erros do cliente (4xx) - Não retentado, pois normalmente indicam um problema de configuração
O que seu endpoint deve retornar: Responda com qualquer status 2xx (200 OK está correto) dentro de 30 segundos. O corpo da resposta é ignorado. Se você tiver um trabalho pesado a fazer — salvar em banco de dados, chamar outra API, gerar um documento — retorne 200 imediatamente e processe o payload de forma assíncrona; caso contrário, o Hedy vai expirar e marcar a entrega como falha.
Solução de Problemas
Problemas no lado do Hedy
Mensagem “Webhooks require Pro” - Faça upgrade para Hedy Pro em Settings > Subscription para acessar webhooks.
Mensagem “Cloud Sync required” - Ative o Cloud Sync em Settings > Cloud Sync, ou toque no botão Enable no banner de aviso mostrado no topo da tela de Webhooks.
Não recebendo eventos - Verifique se o Cloud Sync está ativado, se o webhook está inscrito no evento correto e se sua assinatura Pro está ativa.
Problemas de entrega
Quando o teste falha ou os eventos não chegam, a forma mais rápida de isolar o problema é apontar o webhook para o webhook.site e testar novamente. Se a requisição aparecer lá, o Hedy está enviando corretamente e o problema está no lado receptor.
O teste falha com timeout - Seu endpoint deve responder dentro de 30 segundos. Se você estiver fazendo um trabalho pesado (salvando em banco de dados, chamando outra API, gerando PDFs) antes de responder, retorne 200 OK imediatamente e processe o payload de forma assíncrona.
Erro de SSL ou certificado - O certificado HTTPS do seu endpoint está expirado, é autoassinado ou está faltando certificados intermediários. Teste com o SSL Labs e renove ou corrija a cadeia de certificados.
Conexão recusada ou 404 - A URL está errada, o caminho não existe ou o servidor não está em execução. Confirme a URL exata acionando um teste contra o webhook.site primeiro e então comparando.
Zap ou cenário Make com “404 not found” - O workflow está pausado, em modo rascunho ou apontando para uma URL de teste em vez da URL de produção. No Zapier, o Zap deve estar On. No Make, o cenário deve estar Active. No n8n, use a URL de Production, não a URL de Test.
Requisições estão sendo descartadas silenciosamente - Um firewall, WAF ou plugin de segurança (Wordfence, Sucuri, proteção de bots do Cloudflare) está bloqueando POSTs recebidos. Verifique os logs de acesso do seu servidor — se a requisição do Hedy nunca aparecer, adicione o Hedy ou o User-Agent que ele envia à lista de permissões.
A assinatura não corresponde - Você está verificando contra JSON parseado/re-serializado em vez dos bytes brutos do corpo da requisição, ou adicionou o prefixo sha256= na comparação (o Hedy não inclui esse prefixo). Consulte “Verificar a Assinatura” acima.
Dica Pro: Comece inscrevendo-se no evento Session Ended - ele inclui os dados mais abrangentes e é o mais útil para construir automações em torno das suas notas de reunião.