← Spec Hub | Category: CRM & SaaS
Developer documentation for integrating n8n ➔ Notion API Webhook Pipeline Specification webhooks into backend applications. Secure your endpoint with HMAC signature checking and payload validation.
Supported Events: contact.creation deal.stage_change company.updated ticket.created
Security validation specs for n8n ➔ Notion API Webhook Pipeline Specification endpoints:
X-Webhook-Signature-256: sha256=4670f5188efb5fae7567e87f7f97b89c
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_n8n-to-notion.html_80053",
"event": "contact.creation",
"created_at": 1789764055,
"data": {
"resource_id": "res_257",
"status": "active"
}
}
curl -X POST https://your-domain.com/webhook/n8n-to-notion.html \
-H "Content-Type: application/json" \
-H "X-Webhook-Signature-256: sha256=4670f5188efb5fae7567e87f7f97b89c" \
-d '{"id": "evt_n8n-to-notion.html_80053", "event": "contact.creation", "created_at": 1789764055, "data": {"resource_id": "res_257", "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.
While signature verification is primary, restricting traffic to published origin IP ranges adds a robust layer of perimeter security.
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.
Your endpoint must return an HTTP 2xx response within 2000ms. Offload heavy processing (email, DB writes) to an asynchronous task queue.