← Spec Hub | Category: Developer APIs

SendGrid ➔ Supabase Webhook Pipeline Specification Webhook Integration Spec

Technical Integration Summary

Comprehensive specification for handling incoming SendGrid ➔ Supabase Webhook Pipeline Specification webhook events. This reference covers cryptographic payload verification, request headers, and retry protocols.

Supported Events: resource.created resource.updated resource.deleted event.triggered

Authentication & Request Headers

Security validation specs for SendGrid ➔ Supabase Webhook Pipeline Specification endpoints:

X-Webhook-Signature-256: sha256=3d1b7d83f3b54dc08a18f4515e35316b

Signature Verification Implementations

Node.js (Express)

const crypto = require('crypto');
const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const isValid = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));

Python (Flask / FastAPI)

import hmac, hashlib
expected = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
is_valid = hmac.compare_digest(expected, incoming_sig)

Sample Event Payload (resource.created)

{
  "id": "evt_sendgrid-to-supabase.html_20852",
  "event": "resource.created",
  "created_at": 1789764056,
  "data": {
    "resource_id": "res_578",
    "status": "active"
  }
}

cURL Request Simulation

curl -X POST https://your-domain.com/webhook/sendgrid-to-supabase.html \
  -H "Content-Type: application/json" \
  -H "X-Webhook-Signature-256: sha256=3d1b7d83f3b54dc08a18f4515e35316b" \
  -d '{"id": "evt_sendgrid-to-supabase.html_20852", "event": "resource.created", "created_at": 1789764056, "data": {"resource_id": "res_578", "status": "active"}}'

HTTP Response Rules

Status CodeStatus MeaningIntegration Action
200 OKSuccessEvent payload validated and queued.
400 Bad RequestMalformed PayloadCheck payload structure and JSON formatting.
401 UnauthorizedSignature MismatchVerify secret key and digest computation.
500 ErrorServer ErrorTriggers provider automated retry backoff.

Security Best Practices for SendGrid ➔ Supabase Webhook Pipeline Specification

Always process incoming events asynchronously using a message queue. Never perform long-running DB queries or external API calls synchronously within the HTTP response handler.

Frequently Asked Questions

How to verify SendGrid ➔ Supabase Webhook Pipeline Specification webhook authenticity?

Compute the HMAC SHA-256 hash on the raw request body using your shared secret and compare it against the incoming signature header using time-constant comparison.

Should I restrict incoming IP addresses for SendGrid ➔ Supabase Webhook Pipeline Specification?

While signature verification is primary, restricting traffic to published origin IP ranges adds a robust layer of perimeter security.

How to handle duplicate SendGrid ➔ Supabase Webhook Pipeline Specification webhooks?

Store processed event IDs in an atomic storage like Redis with a set expiration. If an incoming ID exists, acknowledge with 200 OK immediately without re-triggering logic.