x-twilio-email-event-webhook-signature header. Register the credential on your endpoint and webhook.co verifies every captured request against the exact bytes it received, then records the outcome — with a named reason when it fails.
Get the public verification key
In SendGrid, open Settings → Mail Settings → Webhook Settings → Event Webhooks, edit the webhook, and under Security features turn on Signed Event Webhook; reopening the dialog then shows the public verification key. See SendGrid’s own webhook documentation for the current steps. The key pair is generated only when you save, so signature verification can’t be exercised before that.Register it on your endpoint
How the signature is checked
- Signed message —
{timestamp}{rawBody}— the…-Timestampheader concatenated to the raw body. - Algorithm — ECDSA (P-256, SHA-256), base64-encoded.
- Key — registered secret is the dashboard “Verification Key” — base64 of the SPKI DER ECDSA P-256 public key.
- Signature format — base64-encoded DER ECDSA signature (converted to IEEE-P1363 r||s for WebCrypto).
- Timestamp — read from the
x-twilio-email-event-webhook-timestampheader.
What makes this one different
- The registered “secret” is SendGrid’s base64 SPKI ECDSA P-256 PUBLIC key (“Verification Key”), not a shared secret.
- The DER-encoded ECDSA signature is converted to IEEE-P1363 raw r||s (64 bytes) before WebCrypto verify.
- The signed timestamp is bound into the message but no replay window is enforced.
Confirm
verified; one that does not shows failed, with the reason named.