Create an endpoint
data.signing_secret exactly once. Store it in a
secret manager. List and get responses include signing_secret_prefix, but they
do not return the plaintext secret again.
Verify signatures
Ando signs every outbound webhook with the endpoint signing secret. Verification must use the exact raw request body bytes that Ando sent. Every delivery includes these webhook-specific headers:
The signature payload is:
HMAC_SHA256(endpoint_signing_secret, signature_payload), then compare
the lowercase hex digest against any v1 value in Ando-Signature using a
constant-time comparison. Reject timestamps outside your tolerance window. The
default Ando SDK tolerance is 300 seconds.
Node receiver
Useexpress.raw for the webhook route. Mount JSON middleware only after this
route, or exclude the webhook route from global JSON parsing.
Receiver behavior
Webhook receivers should:- Verify the raw body with
Ando-Signature. - Persist or enqueue the event quickly.
- Return a 2xx response within 10 seconds.
- Process business logic asynchronously.
- Deduplicate by
Ando-Event-Idfor business side effects.
Test and replay
Sendwebhook.test after creating the receiver: