Skip to main content
Print

Zencommerce delivers webhooks as HTTP POST requests. The body is JSON:

POST /webhooks/zencommerce HTTP/1.1
Host: your-app.example.com
Content-Type: application/json
X-Shop-Domain: mystore.example.com
X-Shop-Hash: 9f2c…
X-Webhook-Id: 42
X-Webhook-Event: order.create
X-Webhook-Signature: e3b0…

{
  "event": "order.create",
  "emitted_at": "2026-10-06T10:01:02+00:00",
  "data": { }
}

Your endpoint must respond with HTTP 2xx within 5 seconds.

Zencommerce may retry failed deliveries up to 3 times (short backoff between attempts). Treat your handlers as idempotent.

Header Description
Content-Type Always application/json
X-Shop-Domain Domain of the store that triggered the event
X-Shop-Hash Shop-aware checksum used when deriving the per-shop signing secret
X-Webhook-Id Numeric ID of the webhook subscription
X-Webhook-Event Canonical event name (for example, order.create)
X-Webhook-Signature Authenticity signature — always verify this

Payload envelope

Field Description
event Canonical event name
emitted_at Event timestamp (ISO 8601 with timezone offset)
data Resource payload for the event

The data object shape depends on the event. Build integrations against real deliveries for the events you need; do not assume undocumented fields.

A 2xx response acknowledges that Zencommerce successfully delivered the request. Finish durable acceptance (persist or enqueue) before responding whenever possible.

Scroll to Top