packages/twenty-docs/developers/extend/capabilities/webhooks.mdx
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
Webhooks push data to your systems in real-time when events occur in Twenty — no polling required. Use them to keep external systems in sync, trigger automations, or send alerts.
The webhook activates immediately and starts sending notifications.
<VimeoEmbed videoId="928786708" title="Creating a webhook" />Edit: Click the webhook → Update URL → Save
Delete: Click the webhook → Delete → Confirm
Twenty sends webhooks for these event types:
| Event | Example |
|---|---|
| Record Created | person.created, company.created, note.created |
| Record Updated | person.updated, company.updated, opportunity.updated |
| Record Deleted | person.deleted, company.deleted |
All event types are sent to your webhook URL. Event filtering may be added in future releases.
Each webhook sends an HTTP POST with a JSON body:
{
"event": "person.created",
"data": {
"id": "abc12345",
"firstName": "Alice",
"lastName": "Doe",
"email": "[email protected]",
"createdAt": "2025-02-10T15:30:45Z",
"createdBy": "user_123"
},
"timestamp": "2025-02-10T15:30:50Z"
}
| Field | Description |
|---|---|
event | What happened (e.g., person.created) |
data | The full record that was created/updated/deleted |
timestamp | When the event occurred (UTC) |
Twenty signs each webhook request for security. Validate signatures to ensure requests are authentic.
| Header | Description |
|---|---|
X-Twenty-Webhook-Signature | HMAC SHA256 signature |
X-Twenty-Webhook-Timestamp | Request timestamp |
X-Twenty-Webhook-Timestamp{timestamp}:{JSON payload}X-Twenty-Webhook-Signatureconst crypto = require("crypto");
const timestamp = req.headers["x-twenty-webhook-timestamp"];
const payload = JSON.stringify(req.body);
const secret = "your-webhook-secret";
const stringToSign = `${timestamp}:${payload}`;
const expectedSignature = crypto
.createHmac("sha256", secret)
.update(stringToSign)
.digest("hex");
const isValid = expectedSignature === req.headers["x-twenty-webhook-signature"];
| Method | Direction | Use Case |
|---|---|---|
| Webhooks | OUT | Automatically notify external systems of any record change |
| Workflow + HTTP Request | OUT | Send data out with custom logic (filters, transformations) |
| Workflow Webhook Trigger | IN | Receive data into Twenty from external systems |
For receiving external data, see Set Up a Webhook Trigger.