1. Payload
2. Verificación de firma (HMAC)
La firma se calcula sobre el texto exacto del cuadro de arriba. Si lo reformateaste, vuelve a pegar el cuerpo original: un solo espacio cambia el resultado.
Cómo funcionan las firmas de webhooks
Emisor y receptor comparten un secreto. En cada entrega el emisor calcula un HMAC del cuerpo (a veces precedido de una marca de tiempo o un id de mensaje) y lo pone en una cabecera. El receptor lo recalcula sobre los bytes crudos y compara ambos en tiempo constante. Si coinciden, la petición viene de alguien que conoce el secreto y el cuerpo no se modificó.
| Plataforma | Cabecera | Cadena firmada |
|---|---|---|
| GitHub | X-Hub-Signature-256: sha256=<hex> | cuerpo crudo |
| Slack | X-Slack-Signature: v0=<hex> + X-Slack-Request-Timestamp | v0:{ts}:{body} |
| Meta / WhatsApp | X-Hub-Signature-256: sha256=<hex> | cuerpo crudo, con el app secret como clave |
| Standard Webhooks | webhook-signature: v1,<base64> | {id}.{ts}.{body} |
| Telegram | X-Telegram-Bot-Api-Secret-Token | sin HMAC: compara el secret_token que configuraste |
| Discord | X-Signature-Ed25519 | Ed25519 sobre timestamp + cuerpo (clave pública, no HMAC) |
Lee la explicación completa en la guía de APIs y webhooks.