How inbound webhooks work
When you connect a commerce platform via the Integrations flow, Synq registers your workspace as a webhook destination with that platform. From that point on:- An event occurs on the connected platform (e.g. a customer places an order on your Shopify store).
- The platform sends an HTTP
POSTto Synq’s webhook endpoint. - Synq verifies the HMAC signature on the request to confirm it is authentic.
- Synq looks up the connection and tenant that owns the event.
- Synq enqueues a background workflow to map the event into your Synq orders and catalog.
Webhook endpoint
Synq’s inbound webhook endpoint is:Authorization header or tenant headers. Instead, every request is authenticated using HMAC-SHA256 signature verification.
HMAC signature verification
Every inbound webhook carries anX-Unified-Signature header containing a hex-encoded HMAC-SHA256 digest of the raw request body, computed using your webhook secret.
Synq verifies this signature on every request. Requests with a missing, invalid, or mismatched signature are rejected with 401 Unauthorized.
How the signature is computed
X-Unified-Signature header.
Synq verifies incoming webhooks using HMAC-SHA256. Your webhook secret is available in your Synq dashboard under Integrations. Keep this secret safe — it is used to confirm that every inbound event genuinely originated from a platform connected to your account.
Webhook payload structure
Every inbound webhook has a consistent JSON envelope regardless of the source platform. The payload is sent by the connected commerce platform and normalized by Synq before processing. Sample payload — order created eventThe connection ID that received the event. Synq uses this to look up your tenant and organization automatically.
The event type. For example,
"accounting.order.created" or "accounting.order.updated".The raw event payload from the source platform, normalized into a consistent schema. The shape varies by event type.
The external order or entity ID from the source platform.
Three-letter ISO 4217 currency code for the order. Defaults to
USD if not provided by the platform.The line items in the order. Each item contains
item_id, sku, name, quantity, and unit_amount.What happens after Synq receives a webhook
Once Synq authenticates and parses an inbound webhook, it automatically:- Resolves tenant context — Synq maps the
connection_idto the correct tenant and organization in your workspace. Events from unrecognized or inactive connections are rejected. - Enqueues a background workflow — For order events, Synq starts a durable workflow that maps the platform-native order into a Synq order. This workflow runs with automatic retries, so transient failures on your connected platform do not result in lost data.
- Reconciles into your catalog and orders — Line items are matched to your Synq product variants by
item_idorsku. A fully reconciled Synq order is created with the correct channel, currency, and fulfillment details, ready for your operations team.
Synq deduplicates inbound orders using an idempotency key derived from the
connection_id and the external order ID. Re-delivering the same webhook event will not create duplicate orders.Supported events
| Event | Description |
|---|---|
accounting.order.created | A new order was placed on the connected platform. |
accounting.order.updated | An existing order was modified (status, fulfillment, etc.). |