Responding to changes in real-time
Attio-Signature
(this is duplicated as X-Attio-Signature
to support legacy middleware).
The Attio-Signature
value is calculated using a SHA256 HMAC of the request body using your webhook secret as the secret. The webhook’s secret is viewable inside the developer settings page and in the API response when creating the webhook.
To verify that webhooks came from us, you should also construct the signature on your side using the same algorithm, then verify that it matches the one in the request.
We encode the Attio-Signature as a hexadecimal string, and we only sign the request body, which we interpret as a UTF-8 string.
Here’s an example in NodeJS for verifying the webhook signature:
Idempotency-Key
header which will be different for each message, but the same between retries and redeliveries.
200
or 202
). If you answer with any other code, Attio will retry delivery of the message up to 10 times with an exponential back-off, which will happen over approximately 3 days in total; after which, the webhook will be marked as degraded and we’ll send you an email.
note.created
event, we’ll set the note_id
property on the payload to correspond to a real note you have created. In cases where this is not possible, for example if you have no notes in your system, we’ll fallback to randomly generated fake data.
Please note that filters are not taken into account when generating test data.
$and
filter passes when all operations match the payload.$or
filter passes when at least one operation matches the payload.field
: Specifies which property of the webhook payload to apply the filter condition on. It supports nested properties using dot notation, such as "actor.type"
and "actor.id"
.operator
: The operator property defines the comparison operation to be used in the filter operation. The currently supported operators are: "equals"
and "not_equals"
value
: The value property specifies the value to compare against the chosen payload field using the operator."entry.created"
event type, add a new one for the "list-entry.updated"
event type. V1 subscriptions used a static "collection_id"
property to limit subscriptions to a particular List (formerly “Collection”). This functionality can be replaced using our new filter functionality.