workflowVersion

postWebhookWorkflowVersion Created

Headers

X-Twenty-Webhook-Signaturestring

HMAC SHA256 signature of the request payload using the webhook secret. To compute the signature:

  1. Concatenate X-Twenty-Webhook-Timestamp, a colon (:), and the JSON string of the request payload.
  2. Compute the HMAC SHA256 hash using the shared secret as the key.
  3. Send the resulting hex digest as this header value. Example (Node.js):
const crypto = require("crypto");
const timestamp = "1735066639761";
const payload = JSON.stringify({...});
const secret = "your-secret";
const stringToSign = `${timestamp}:${JSON.stringify(payload)}`;
const signature = crypto.createHmac("sha256", secret)
  .update(stringToSign)
  .digest("hex");
X-Twenty-Webhook-Timestampstring

Unix timestamp of when the webhook was sent. This timestamp is included in the HMAC signature generation to prevent replay attacks.

X-Twenty-Webhook-Noncestring

Unique identifier for this webhook request to prevent replay attacks. Consumers should ensure this nonce is not reused.

Payload

targetUrlstring
eventNamestring
workspaceIdstring
userIdstring
workspaceMemberIdstring
webhookIdstring
eventDatestring

Response

Return a 200 status to indicate that the data was received successfully

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.