Webhooks de GitHub: crear, verificar y reenviar

Webhooks de GitHub

Webhooks de GitHub: configuración, eventos y firma | We.Inc

Crea un webhook de GitHub, elige eventos, verifica la cabecera X-Hub-Signature-256 con código que funciona y reenvía las entregas fallidas. Incluye un comprobador de firmas en el navegador.

Un webhook de GitHub es un mensaje que GitHub envía a la URL de tu servidor cada vez que ocurre algo en un repositorio, como un push, una nueva issue o una release. Lo añades en Settings, Webhooks del repositorio. Define un secreto para poder comprobar la cabecera X-Hub-Signature-256 y rechazar entregas falsas.

Datos útiles sobre los webhooks de GitHub (docs.github.com, octubre de 2026)

Los webhooks permiten que GitHub avise a tu web o app de los cambios en el momento en que ocurren, para que puedas reconstruir una web en cada push, publicar un mensaje cuando se abre una issue o actualizar un changelog en cada release. Lo importante, y lo que la mayoría de guías rápidas se saltan, es comprobar que una entrega viene realmente de GitHub. El comprobador de abajo calcula la misma firma que envía GitHub, directamente en tu navegador.

Preguntas frecuentes

¿GitHub reintenta los webhooks fallidos?

No. La documentación de GitHub indica que no reenvía automáticamente las entregas fallidas. Puedes reenviar una a mano desde Recent Deliveries si se hizo en los últimos 3 días.

¿Qué es la cabecera X-Hub-Signature-256?

Se envía cuando el webhook tiene un secreto. GitHub toma el cuerpo de la petición, calcula un HMAC con SHA-256 usando tu secreto como clave y envía el resultado en hexadecimal con el prefijo sha256=. Tu servidor repite el cálculo y compara.

¿Qué eventos puede recibir un webhook?

Muchos, entre ellos push, pull_request, issues, release y workflow_run. La cabecera X-GitHub-Event indica el evento que disparó cada entrega, y ping llega cuando creas el hook por primera vez.

¿Puedo probar un webhook sin un servidor público?

Tu endpoint debe ser accesible desde internet, porque GitHub le envía las peticiones. Para trabajar en local, usa una herramienta de túnel que dé a tu máquina una URL pública temporal y úsala como Payload URL.

¿Webhook o consultar la API periódicamente?

Un webhook te envía cada cambio en cuanto ocurre; el polling consiste en preguntar a la API cada cierto tiempo. Los webhooks usan menos peticiones y llegan antes, lo que importa porque las llamadas a la API cuentan para los límites de uso.

Qué llega con cada entrega

Comprobar tu código de verificación con los valores de prueba de GitHub

Esta ruta de Express lee el cuerpo sin procesar, calcula el HMAC con tu secreto y lo compara en tiempo constante antes de confiar en el payload.

express.raw conserva los bytes exactos que firmó GitHub. El secreto viene de una variable de entorno, nunca del código.

Cabeceras de la entrega

Cabeceras de cada entrega de webhook de GitHub

Comprobador de firmas de webhook

Escribe un secreto y un cuerpo de petición sin procesar para ver el valor de X-Hub-Signature-256 que enviaría GitHub. Funciona en tu navegador con la Web Crypto API; no se sube nada.

Secreto del webhook

Cuerpo de la petición sin procesar

Cabecera de firma que recibiste (opcional)

sha256=...

Firma calculada

Coincide: la firma de esta entrega es válida para ese secreto y ese cuerpo.

No coincide: el secreto, los bytes del cuerpo o la cabecera son distintos.

Cargar los valores de prueba de GitHub

Con los valores de prueba de GitHub, el resultado debe ser:

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio