Create a Webhook
- Go to Settings → APIs & Webhooks → Webhooks
- Click + Create webhook
- Enter your webhook URL (must be publicly accessible)
- Click Save
Manage Webhooks
Edit: Click the webhook → Update URL → Save Delete: Click the webhook → Delete → ConfirmEvents
Clara 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 |
Payload Format
Each webhook sends an HTTP POST with a JSON body:| Field | Description |
|---|---|
event | What happened (e.g., person.created) |
data | The full record that was created/updated/deleted |
timestamp | When the event occurred (UTC) |
Respond with a 2xx HTTP status (200-299) to acknowledge receipt. Non-2xx responses are logged as delivery failures.
Webhook Validation
Clara signs each webhook request for security. Validate signatures to ensure requests are authentic.Headers
| Header | Description |
|---|---|
X-Twenty-Webhook-Signature | HMAC SHA256 signature |
X-Twenty-Webhook-Timestamp | Request timestamp |
Validation Steps
- Get the timestamp from
X-Twenty-Webhook-Timestamp - Create the string:
{timestamp}:{JSON payload} - Compute HMAC SHA256 using your webhook secret
- Compare with
X-Twenty-Webhook-Signature
Example (Node.js)
Webhooks vs Workflows
| 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 Clara from external systems |