← Spec Hub | Category: Developer APIs
Technical guide for receiving and processing automated SendGrid ➔ Tally Webhook Pipeline Specification event notifications. Follow these security guidelines to prevent unauthorized webhook calls.
Supported Events: resource.created resource.updated resource.deleted event.triggered
Security validation specs for SendGrid ➔ Tally Webhook Pipeline Specification endpoints:
Authorization: Bearer sec_live_b7ca05026f729fee
const crypto = require('crypto');
const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const isValid = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
import hmac, hashlib
expected = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
is_valid = hmac.compare_digest(expected, incoming_sig)
{
"id": "evt_sendgrid-to-tally.html_85891",
"event": "resource.created",
"created_at": 1789764056,
"data": {
"resource_id": "res_693",
"status": "active"
}
}
curl -X POST https://your-domain.com/webhook/sendgrid-to-tally.html \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sec_live_b7ca05026f729fee" \
-d '{"id": "evt_sendgrid-to-tally.html_85891", "event": "resource.created", "created_at": 1789764056, "data": {"resource_id": "res_693", "status": "active"}}'
| Status Code | Status Meaning | Integration Action |
|---|---|---|
200 OK | Success | Event payload validated and queued. |
400 Bad Request | Malformed Payload | Check payload structure and JSON formatting. |
401 Unauthorized | Signature Mismatch | Verify secret key and digest computation. |
500 Error | Server Error | Triggers provider automated retry backoff. |
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.
Failed deliveries (non-2xx responses) trigger an exponential backoff retry schedule over a period ranging from 24 to 72 hours.
Your framework might be auto-parsing JSON. HMAC generation requires the exact raw byte buffer of the request body before JSON middleware alters keys or spacing.
While signature verification is primary, restricting traffic to published origin IP ranges adds a robust layer of perimeter security.