POST request to the endpoint(s) you configure.
The event payload reuses the same object returned by the matching Merchant
API V2 endpoint — Get order for order
events and Get product for product
events — so you only need to model each shape once.
Configuring endpoints
Add and manage endpoints in your admin dashboard under Settings → Apps → Webhooks. For each endpoint you choose:- Endpoint URL — an
https://URL that acceptsPOSTrequests. - Events — which events this endpoint subscribes to.
Events
Payload
Every delivery has the same envelope.data is the V2 object for the event —
an Order for order.* events, a Product for product.updated.
Headers
Verifying signatures
Each request is signed with your endpoint’s signing secret using HMAC-SHA256. TheX-Take-Signature header looks like:
t— the Unix timestamp (seconds) when the request was signed.v1— the HMAC-SHA256 of{t}.{raw_request_body}, hex-encoded.
v1 with your secret over {t}.{raw_body} and compare
using a constant-time comparison. Reject requests whose timestamp is too old
(e.g. older than 5 minutes) to defend against replays.
Responding
Return a2xx status as soon as you’ve received the event. Do any heavy
processing asynchronously so you can respond quickly.
Retries
If your endpoint returns a non-2xx status or times out, delivery is retried
with exponential backoff. A 4xx response (other than 408 and 429) is
treated as a permanent rejection and is not retried.
Because retries and at-least-once delivery are possible, treat webhooks as
idempotent: use X-Take-Delivery-Id to ignore duplicates.
Ordering
Events are not guaranteed to arrive in order. Use the object’supdated_at
field to discard stale updates if you persist order or product state.
Configure webhook endpoints in Settings → Apps → Webhooks.