Webhooks do GitHub: criar, verificar e reenviar

Webhooks do GitHub

Webhooks do GitHub: configuração, eventos e verificação de assinatura | We.Inc

Crie um webhook do GitHub, escolha os eventos, verifique o header X-Hub-Signature-256 com código que funciona e reenvie entregas que falharam. Inclui um verificador de assinatura no navegador.

Um webhook do GitHub é uma mensagem que o GitHub envia para a URL do seu servidor sempre que algo acontece num repositório, como um push, uma nova issue ou um release. Você o adiciona em Settings, Webhooks do repositório. Defina um secret para poder verificar o header X-Hub-Signature-256 e rejeitar entregas falsas.

Fatos sobre webhooks do GitHub que vale conhecer (docs.github.com, outubro de 2026)

Os webhooks permitem que o GitHub avise o seu site ou app sobre mudanças no momento em que acontecem, para você reconstruir um site a cada push, publicar uma mensagem quando uma issue é aberta ou atualizar um changelog a cada release. A parte importante que a maioria dos guias rápidos pula é verificar se uma entrega veio mesmo do GitHub. O verificador abaixo calcula a mesma assinatura que o GitHub envia, direto no seu navegador.

Perguntas frequentes

O GitHub tenta de novo webhooks que falharam?

Não. A documentação do GitHub diz que ele não reenvia automaticamente entregas com falha. Você pode reenviar uma manualmente em Recent Deliveries, para entregas feitas nos últimos 3 dias.

O que é o header X-Hub-Signature-256?

Ele é enviado quando o webhook tem um secret. O GitHub pega o corpo da requisição, calcula um HMAC com SHA-256 usando o seu secret como chave e envia o resultado em hex com o prefixo sha256=. O seu servidor repete o cálculo e compara.

Quais eventos um webhook pode receber?

Muitos, incluindo push, pull_request, issues, release e workflow_run. O header X-GitHub-Event indica o evento que disparou cada entrega, e o ping chega quando você cria o hook.

Posso testar um webhook sem um servidor público?

O seu endpoint precisa ser acessível pela internet, porque o GitHub envia requisições para ele. Para trabalho local, rode uma ferramenta de túnel que dê à sua máquina uma URL pública temporária e use essa URL como Payload URL.

Webhook ou polling na API?

Um webhook envia cada mudança para você assim que ela acontece; polling é consultar a API em intervalos. Webhooks usam menos requisições e chegam antes, o que importa porque as chamadas à API contam para os limites de taxa.

O que chega com cada entrega

Conferir o seu código de verificação com os valores de teste do GitHub

Esta rota do Express lê o corpo bruto, calcula o HMAC com o seu secret e o compara em tempo constante antes de confiar no payload.

O express.raw mantém exatamente os bytes que o GitHub assinou. O secret vem de uma variável de ambiente, nunca do código.

Headers da entrega

Headers em toda entrega de webhook do GitHub

Verificador de assinatura de webhook

Digite um secret e um corpo de requisição bruto para ver o valor de X-Hub-Signature-256 que o GitHub enviaria. Roda no seu navegador com a Web Crypto API; nada é enviado.

Secret do webhook

Corpo bruto da requisição

Header de assinatura que você recebeu (opcional)

sha256=...

Assinatura calculada

Confere: a assinatura desta entrega é válida para esse secret e esse corpo.

Não confere: o secret, os bytes do corpo ou o header são diferentes.

Carregar os valores de teste do GitHub

Com os valores de teste do GitHub, o resultado deve ser igual a:

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site