Key Insights in 60 Seconds
Skim the highlights, then jump to the part of the decision you are stuck on.
What You'll Learn
The Quick Verdict
Key takeaway
Find your case in column one.
Which webhook route fits the job
| Your situation | Pick | Why |
|---|---|---|
| A vendor handed you an HTTPS address | Create it in the admin | Four fields in Settings > Notifications > Webhooks, on a page naming no plan requirement (read September 18, 2026) |
| The event must be filtered before it leaves | Shopify Flow, Send HTTP request | Flow puts conditions and stored secrets in front of the call, on Grow, Advanced and Plus only |
| You need filtering on an entry tier | A connector or app, filtering on their side | Flow's action is out of reach below Grow; a connector applies the vendor's own filters |
| The destination has its own App Store listing | Install the app instead | Shopify emails the owner about a failed webhook only when an App Store or custom app created it — ask the vendor to confirm its connector does |
What a Webhook Sends, and to Whom
Key takeaway
Someone asks you to add a webhook — a fulfilment partner, an accountant, a SaaS vendor. What they want is a standing instruction in your admin: when the chosen event fires, Shopify posts the record to their server. The event comes from a closed menu, not a free-text field.
What you get is an attempt at delivery, not a guarantee, and Shopify says so itself:
Webhook delivery isn't always guaranteed, and your app can miss or mishandle events for other reasons, such as handler failures or downtime.
Admin Webhook, Flow or a Connector: Pick the Route First
Key takeaway
The route decides who sets it up, whether the event is filtered first, and who hears when it breaks. Flow's Send HTTP request action is only available to the Shopify Plus, Advanced, or Grow plans, so the entry tier leaves you the admin webhook and installed apps.
The three routes
| Route | Where it is created | Plan boundary | Conditions first? | Failure email | What Shopify documents about delivery |
|---|---|---|---|---|---|
| Admin webhook | Settings > Notifications > Webhooks | None on the page documenting it | No | No one | Repeated non-200 replies delete the subscription automatically |
| Shopify Flow, Send HTTP request | Inside a workflow | Grow, Advanced, Plus | Yes, plus stored secrets | A workflow action, not a subscription | Waits up to 30 seconds for a response code; on 4XX, 5XX or 429 you pick Retry for up to 24 hours, Fail or Ignore |
| App or connector | Inside the app | Whatever the vendor sets | Vendor's own | The store owner, when an App Store or custom app created it | Not named on the listings; Zapier's own page marks each trigger Instant or Polling |
Shopify Help Center and Shopify Dev Docs, read September 18, 2026.
The third row is the one merchants misread. Zapier and Make ship official App Store listings, and n8n documents a Shopify Trigger node, so a connector is a real route.
The listings do not say how the connector learns your event happened — by registering a subscription in your store, or by polling on a schedule. Zapier's own integration page does label each Shopify trigger Instant or Polling; for the others, ask the vendor, because the answer matters twice: polling adds delay you cannot see, and the failure email for app-created webhooks reaches you only if the connector created one. Then price webhook against poll.
How Do You Create a Webhook in Shopify?
Key takeaway
None of the four is cosmetic: Shopify lets you edit a webhook after it is created but never its event, and the receiver depends on all four.
What each field commits you to
| Field | What you choose | What it commits you to |
|---|---|---|
| Event | One of 17 categories | Shopify states you cannot change it later — switching means deleting this subscription and building another |
| Format | JSON or XML | The receiver has to parse what you picked; Shopify's webhook API resource lists JSON as the default |
| URL | The HTTPS address for the data | Everything the event carries leaves your store for it, and five kinds of address are refused |
| Webhook API version | A quarterly version | The payload follows that version, and each stable version is supported for at least 12 months |
Creating webhooks, Shopify Help Center, read September 18, 2026.
- Localhost.
- Any URL ending in the word «internal», such as example.com/internal.
- Any URL from a custom domain attached to the store.
- «Fake» domains, such as www.example.com.
- Shopify domains, such as shopify.com and myshopify.com.
Send test answers one narrow question: did a sample reach the address. Shopify's steps end with checking that at the URL itself and say nothing about the receiver keeping it, so confirm that before you call the integration live.
The Signature Your Receiver Checks
Anyone who learns your address can post to it, so the receiver should verify a delivery really came from your store: Shopify signs webhooks with an ID unique to your shop, while the HMAC check in its developer documentation is written for apps and uses the app's client secret. Neither page gives a verification recipe for a webhook created in the admin, so ask whoever builds the endpoint how they will confirm a delivery came from your store.
The API Version You Pick Has an Expiry
Key takeaway
Shopify releases a new API version every three months, on the first day of the quarter, and supports each stable version for at least twelve months, with at least nine months of overlap, per its own versioning documentation.
When the version you picked becomes inaccessible, Shopify falls forward — its versioning page says so for webhooks specifically — and webhooks include an X-Shopify-Api-Version header to confirm which version was used. The page does not name the admin field, so treat this as the general rule and have the receiver read that header.
Topics themselves disappear. Shopify removed the checkout_and_accounts_configurations/update webhook on January 1, 2026, announced in a changelog post the previous August — so a webhook set and forgotten deserves a look.
When Delivery Fails: Deleted Without an Email
Key takeaway
Shopify's page documents no banner, alert or log for a deleted subscription: it is gone from Settings > Notifications, and the orders that reached your accountant stop reaching them.
If the webhook destination repeatedly returns a non-200 status response, then the webhook subscription is automatically deleted from your Shopify admin.
Whether an email reaches you depends on who created the webhook, not on how badly it failed: Shopify sends one only when an App Store app or a custom app created the subscription.
Shopify does publish delivery numbers — eight retries in a four-hour period, five seconds to respond, removal after repeated failures within 24 hours — on a page addressed to apps, and no page we have found extends them to a webhook created in Settings > Notifications.
So the defence is a habit, not a number. Compare what reached the other side with what Shopify recorded, on a schedule — the reconciliation loop behind any custom ERP integration.
Customer Data on Someone Else's URL
Key takeaway
Shopify's sample payload for a new customer lists first and last name, email, phone, currency and the full default address — the record itself, not a ping saying a customer was created. The sample for a new order carries the same customer name, email and phone, plus the billing and shipping addresses.
The approval regime that covers apps does not obviously cover you: those requirements are written for apps and the Admin API, and no page we have found addresses a webhook a merchant creates. What an app may see is its own question.
So the checks before you save that address are yours:
- Who holds the data once it lands.
- Whether the address is access-controlled, not a catch-all.
- What your privacy policy promises about sharing.
- How you switch it off, which is deleting the subscription.
Erasure is the other half: when a customer asks you to delete their data, the copy on someone else's server is yours to chase, and Shopify's side of it stops at tools and notices.
Set It Up So You Notice When It Dies
Key takeaway
Step one happens before you touch the admin, two and three on the day you create the webhook, and the last two keep it from disappearing unnoticed:
Webhook setup checklist
Five steps, from agreeing the event to the check that catches a deleted subscription.
Get the event, the format and the exact HTTPS address in writing, then check the address against the blocked list above.
Before you tick this off
- The event name is written down, not described
- The address is none of the five blocked kinds
- You can name who holds the data there, and your policy covers it
In Settings > Notifications > Webhooks, click Create webhook and fill the four fields.
Before you tick this off
- The event is the one you agreed, since it cannot change later
- The API version is the one the receiver was built against
Send test sends a sample to the address; confirm on the receiving side that it arrived and was kept.
Before you tick this off
- The test was sent from the admin
- Someone confirmed the record arrived and was saved
Record the event, address, API version and date, because a subscription created here is not returned in API calls.
Before you tick this off
- Those four details live outside Shopify
- The receiving side holds the same record
Re-open the Webhooks list on a schedule and confirm the subscription is still listed, because a failing one goes without an email.
Before you tick this off
- A repeating reminder exists
- You know what the list should contain
The Bottom Line
Key takeaway
Shopify gives merchants a code-free way to push events out of a store, then documents the limits honestly: delivery is not guaranteed, a failing destination loses its subscription, and the email is reserved for app-created webhooks.
Frequently Asked Questions
Front-end developer specializing in Shopify since 2017. Experienced in building custom Liquid themes, optimizing storefront performance, and integrating third-party apps. Directs the editorial process behind Shopify Ecom: sets each topic, and checks facts, links, and interactive elements before publication.
This article was written entirely by AI under human editorial direction. The editor sets the topic and structure, runs multi-stage validation on facts, links, and interactive elements, and verifies the output is useful from a business perspective. All claims are checked against official Shopify sources. Details may change — always confirm critical data at shopify.com.
Editorial PolicyWhat to Read Next
Shopify Flow vs Zapier vs n8n: Pick Your Automation Layer
Shopify Flow, Zapier, Make and n8n bill in different units. See what each counts, where Flow stops, and what your own workflow costs on each layer.
Read articleTikTok Shop Orders in Shopify: Fulfillment, Labels, Returns
TikTok Shop orders reach Shopify's Orders page; TikTok Shipping labels and refunds stay in Seller Center. Who fulfills what, what syncs, what to verify first.
Read articleShopify Buy Button vs a Full Online Store
The Buy Button channel ships with every Shopify subscription plan; the JS Buy SDK is what Shopify stopped supporting. What the embed does, and where it stops.
Read article