Skip to content
  • Access to the store’s Settings → Notifications, or a custom app if you prefer to register webhooks through the Admin API.

Sources → Create source, name it after the store — shopify-eu — and copy the ingest URL.

Store admin → Settings → Notifications → Webhooks → Create webhook:

  • Event — for example Order creation. One webhook per event.
  • Format — JSON.
  • URL — the ingest URL.
  • Webhook API version — the current stable version.

After saving, Shopify shows the store’s webhook signing secret once, below the list. Copy it.

In Webhooker: Settings → Authenticate inbound requests → method Shopify → paste the secret → save.

Shopify signs the raw body with HMAC-SHA256 and sends it base64-encoded in X-Shopify-Hmac-Sha256. Webhooker checks it before storing anything.

One secret covers every webhook in that store, so a second source for the same store uses the same value. Apps in the Shopify App Store must also answer the three mandatory GDPR topics — Shopify webhook verification and the GDPR webhooks covers both halves.

Use Send test notification on the webhook. It appears in the live tail as verified.

Test notifications carry sample data, not a real order, so filters that match specific values may not fire on them.

Destinations → Add destination → Create new, your handler’s URL, Sign outbound requests on, save.

Shopify puts the topic in a header. If one source receives several topics, give each gateway its own filter:

{
"operator": "and",
"rules": [
{ "path": "headers.x-shopify-topic", "op": "eq", "value": "orders/create" }
]
}

To pass the topic through to your endpoint, add a set header rule on that gateway with a fixed value — the sender’s own headers are not forwarded.

  1. Shopify’s webhook list shows recent successful deliveries.
  2. The Webhooker event is verified.
  3. The delivery is succeeded.
SymptomCause
Every event is failedThe wrong secret — an app’s API secret is not the webhook signing secret.
Shopify removed the webhookShopify disables endpoints that fail repeatedly. Webhooker answers 200 as long as verification passes, so check the event log for failed events.
Large orders rejectedPayloads over 1 MiB return 413.
DuplicatesShopify retries, and delivery is at-least-once. Key on X-Webhooker-Event-Id.