Shopify Ecom
Integration Guide

Shopify Webhooks: Pick the Route, Then Create It

Send Shopify store events to an outside URL without code. Compare the admin webhook, Shopify Flow and connectors — and see what fails silently.

Event DeliveryAdmin SetupSilent FailureCustomer Data
Published ·11 min read·
Listen to a short brief of this article
Hands-free while you multitask

Key Insights in 60 Seconds

Skim the highlights, then jump to the part of the decision you are stuck on.

Four fields and no code: Settings > Notifications > Webhooks sends a store event to an HTTPS address you name.
Shopify Flow's Send HTTP request needs Grow, Advanced or Plus, and adds conditions, stored secrets and a 24-hour Retry option.
The event is permanent — Shopify's page says you cannot change it once the webhook exists, so switching means rebuilding it.
Repeated non-200 replies delete the subscription, and the failure email reaches the owner only when an app created the webhook.
Send test sends a sample to the URL — confirm on the receiving side that it was stored.
Order and customer payloads carry names, emails, phones and addresses — the URL you type decides who holds them.

What You'll Learn

1Which of the three routes is yours
2What the four fields commit you to
3Why a working webhook vanishes
4What leaves with the data
5How to spot a dead subscription

The Quick Verdict

Key takeaway

Find your case in column one.

Which webhook route fits the job

Your situationPickWhy
A vendor handed you an HTTPS addressCreate it in the adminFour fields in Settings > Notifications > Webhooks, on a page naming no plan requirement (read September 18, 2026)
The event must be filtered before it leavesShopify Flow, Send HTTP requestFlow puts conditions and stored secrets in front of the call, on Grow, Advanced and Plus only
You need filtering on an entry tierA connector or app, filtering on their sideFlow's action is out of reach below Grow; a connector applies the vendor's own filters
The destination has its own App Store listingInstall the app insteadShopify 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.

The seventeen event categories in the Event menu
Cart, Checkout, Collection, Customer, Discount, Draft order, Fulfillment, Inventory, Location, Market, Order, Product, Refund, Shop, Tender, Theme and Transaction — the Supported webhook events section of Shopify's Creating webhooks page, read September 18, 2026.

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.
Shopify — Webhooks — Shopify Dev Docs ·

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

RouteWhere it is createdPlan boundaryConditions first?Failure emailWhat Shopify documents about delivery
Admin webhookSettings > Notifications > WebhooksNone on the page documenting itNoNo oneRepeated non-200 replies delete the subscription automatically
Shopify Flow, Send HTTP requestInside a workflowGrow, Advanced, PlusYes, plus stored secretsA workflow action, not a subscriptionWaits 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 connectorInside the appWhatever the vendor setsVendor's ownThe store owner, when an App Store or custom app created itNot 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

FieldWhat you chooseWhat it commits you to
EventOne of 17 categoriesShopify states you cannot change it later — switching means deleting this subscription and building another
FormatJSON or XMLThe receiver has to parse what you picked; Shopify's webhook API resource lists JSON as the default
URLThe HTTPS address for the dataEverything the event carries leaves your store for it, and five kinds of address are refused
Webhook API versionA quarterly versionThe payload follows that version, and each stable version is supported for at least 12 months

Creating webhooks, Shopify Help Center, read September 18, 2026.

Five kinds of address Shopify refuses
  • 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.
Shopify — Creating webhooks — Shopify Help Center ·

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.

What we looked for and did not find
Every absence here rests on one reading, done September 18, 2026: Shopify's Creating webhooks page, its Send HTTP request reference, the developer pages on building and troubleshooting webhooks, the Admin API webhook resource, the API versioning page, the Zapier and Make App Store listings, and n8n's Shopify Trigger documentation.

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.

0 of 5 done
  1. Get the event, the format and the exact HTTPS address in writing, then check the address against the blocked list above.

  2. In Settings > Notifications > Webhooks, click Create webhook and fill the four fields.

  3. Send test sends a sample to the address; confirm on the receiving side that it arrived and was kept.

  4. Record the event, address, API version and date, because a subscription created here is not returned in API calls.

  5. Re-open the Webhooks list on a schedule and confirm the subscription is still listed, because a failing one goes without an email.

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.

Create it yourself, but never leave it unwatched. An address you were handed means the admin route and four fields; an event that needs filtering first means Flow, on Grow, Advanced or Plus. Either way, put a recurring check in the calendar — Shopify's page documents no alert for a deleted webhook.
Your Next Step by Stage
Wiring your first oneSending orders into accounting? See what Shopify's own connection covers.Does Shopify integrate with QuickBooks?
Running several feedsApp, workflow or custom build? The development guide routes you.Shopify development guide
Handing it overHave a developer read what you run: which subscriptions exist, which are dead.Hire a Shopify developer

Need the Receiving End Built, Not Just the Webhook

We scope 3 things as one job: an endpoint that answers inside Shopify's published timeout, a check that each delivery really came from your store, and a monthly routine that confirms the subscription is still listed.

Get a scoped quote

Frequently Asked Questions

Not to create one. From your Shopify admin you go to Settings > Notifications, click Webhooks, then Create webhook, and fill four fields: the event, the format, the destination URL and the webhook API version. The developer work sits on the other end, where somebody has to run the address that receives the data and confirm each delivery really came from your store.
The Help Center page documenting Settings > Notifications > Webhooks walks through the whole procedure without naming a plan requirement, read on September 18, 2026. What does carry a plan boundary is Shopify Flow's Send HTTP request action, which Shopify states is available only to the Shopify Plus, Advanced and Grow plans.
Because the destination kept failing. Shopify states that if the webhook destination repeatedly returns a non-200 status response, the subscription is automatically deleted from your admin. Nothing is restored for you. Once the receiving address answers correctly again, you create the webhook a second time and send a test before trusting it.
No. Shopify's page states plainly that you cannot change the webhook event after the webhook is created. Moving from order creation to order fulfilment, for example, means deleting that subscription and creating another one with the new event, the same address and the same API version. Warn the receiving side before you do it.
Only for some webhooks. Shopify sends an email to the store owner's address when a webhook fails, and states that the email is sent only when the webhook was created by an app from the Shopify App Store or by a custom app. One you created yourself in Settings > Notifications falls outside that.
It matters to whoever receives the data rather than to your store. The Format menu offers exactly two choices, JSON or XML, and Shopify's webhook API resource page lists JSON as the default value. Ask the receiving side which one its endpoint parses, because changing your mind later means editing the webhook again.
It fixes the shape of the data you receive. Shopify versions webhook payloads the same way as API responses, releases a new version every three months, and supports each stable version for a minimum of 12 months with at least nine months of overlap. Pick the version the receiving side was built against.
No. It is an action inside a Flow workflow rather than a subscription in Settings > Notifications, so you can put conditions in front of it and keep secrets in Flow settings. Flow waits a maximum of 30 seconds for a response code, and on an error you choose Retry for up to 24 hours, Fail or Ignore.
Shopify documents only the opposite direction: a subscription you create through the admin is not returned in API calls, because it belongs to the shop rather than to an app. No page we have found states whether the admin list shows app-created subscriptions, so treat that list as the record of what you made there.
Use Send test. Shopify describes it as a way to check that the event information you want is being sent to the correct URL, and its steps end with verifying at that URL that the notification works. A received test proves the address is reachable, not that anything was kept, so confirm on the receiving side that the record actually arrived.
About This Article
Shopify Developer & Editorial Director
9+ years with Shopify since 2017

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 Policy
Continue Learning

What to Read Next

Stay updated

Get notified about new articles

Subscribe to receive updates when we publish new Shopify guides and insights.