When connecting Shopify with an order management system or inventory management system, you may want Shopify to automatically notify another system whenever a new order comes in, or to reflect a product or inventory change in an external service right away.
"Shopify Webhook" is the feature that lets Shopify communicate events happening in your store to the outside world. When a specific event occurs, Shopify can automatically send that information to an app or external system. Webhooks are available not only for orders and products created in your store, but also for a wide range of events such as shipping and returns.
This article explains how Shopify Webhooks work, what kinds of notifications you can receive, common use cases, how to set them up, and the points to watch out for when using them.
What Is a Shopify Webhook
A Shopify Webhook is a feature that sends related information to an app or external system when something happens in Shopify, such as an order being created or a product being updated.
Automatically Notifying External Systems of What Happens in Shopify
For example, suppose the following events occur in Shopify:
- A new order comes in
- Product information is updated
- Inventory quantity changes
- Customer information is updated
- A product is shipped
With Webhooks, you can send information to an external service the moment such a change happens. For example, you can send order details to an order management system whenever a new order comes in, or trigger processing in an inventory management system whenever stock levels change.
What Are Webhook Topics? Their Relationship to Subscriptions
In Shopify Webhooks, "which event triggers a notification" is specified by a Webhook topic.
Some representative Webhook topics include the following.
| Webhook Topic | Event Notified |
|---|---|
orders/create |
An order was created |
orders/updated |
An order was updated |
products/update |
A product was updated |
inventory_levels/update |
Inventory levels were updated |
customers/update |
Customer information was updated |
fulfillments/update |
A fulfillment was updated |
refunds/create |
A refund was created |
For example, with orders/create, a Webhook is delivered whenever an order is created.
When using Webhooks, you configure which topic and which destination the Webhook should be delivered to. This configuration is called a Webhook subscription. When the configured event occurs, the data related to that event is sent to the specified destination.
Since Shopify provides a large number of Webhook topics, you can set up the topics and destinations you need based on "what should happen in the external system when a specific event occurs in Shopify."
How This Differs from Polling the API Periodically
Besides Webhooks, another way to keep track of changes in Shopify is to periodically call the API to check for information. Both Webhooks and the API are used to connect Shopify with external systems, but they play different roles.
Here's how to choose between Webhooks and the API.
| Webhook | API | |
|---|---|---|
| Best suited for | Finding out quickly that a change occurred | Retrieving, creating, or updating the information you need |
| Timing | Sent by Shopify when the event occurs | Queried from the external side to Shopify whenever needed |
| Examples | - Sync a new order to an order management system - Notify an inventory management system when stock levels change - Trigger an update process on a search service when a product is updated |
- Look up detailed order information - Fetch a full product list in bulk for use within an app - Update product or inventory information from an external system |
In real-world integrations, it's common to combine both: for example, detecting that an order was created via a Webhook, then fetching the latest order details via the API afterward.
Common Types of Shopify Webhooks
Shopify lets you subscribe to Webhooks for a wide range of events related to running a store. The main types are as follows.
| Category | Representative Webhook Topics | Main Use Cases |
|---|---|---|
| Orders |
orders/create, orders/updated, orders/paid, orders/cancelled
|
Syncing order, payment, and cancellation information |
| Products |
products/create, products/update, products/delete
|
Syncing product information |
| Collections |
collections/create, collections/update, collections/delete
|
Syncing collection information |
| Inventory | inventory_levels/update |
Syncing inventory levels by location |
| Customers |
customers/create, customers/update, customers/delete
|
Integrating with CRM and marketing automation tools |
| Shipping / Fulfillment |
fulfillments/create, fulfillments/update
|
Syncing shipping status |
| Returns / Refunds |
returns/request, returns/update, refunds/create
|
Returns management and accounting processes |
| Cart / Checkout |
carts/create, carts/update, and others |
Syncing cart information, etc. |
| Draft Orders |
draft_orders/create, draft_orders/update
|
Integrating B2B or phone orders, etc. |
| Discounts |
discounts/create, discounts/update, discounts/delete
|
Syncing discount information |
| Payments / Chargebacks |
disputes/create, disputes/update
|
Responding to disputes |
| Locations |
locations/create, and others |
Syncing store and warehouse information |
| Themes |
themes/create, themes/update, themes/publish
|
Detecting theme changes and publishing |
| Apps |
app/uninstalled, app/scopes_update
|
Handling app uninstalls and scope changes |
| Privacy |
customers/data_request, customers/redact, shop/redact
|
Handling personal data disclosure and deletion requests |
The topics available and the data they include may change depending on the API version. As of August 2026, the latest stable version is 2026-07. When implementing Webhooks, check the specification for the API version you're using in the official Shopify Webhooks reference.
Official Shopify Webhooks Reference (List of Topics)
Below, we introduce representative Webhooks and their use cases by category.
Order-Related Webhooks
For orders, you can receive a wide range of events such as new orders being created, order details being updated, payment, and cancellation. Using orders/create, you can notify an external system exactly when an order is created in Shopify. This can be used, for example, to connect Shopify to an order management or core business system so that order data is automatically registered whenever a new order comes in.
Product-Related Webhooks
For products, you can be notified of product creation, updates, and deletion. Representative topics include products/create, products/update, and products/delete. If an external product management system or search service also uses Shopify's product information, these can trigger a reflection of the change.
Collection-Related Webhooks
There are Webhooks that correspond to collection creation, updates, and deletion. Using collections/create, collections/update, and collections/delete, you can notify an external system when a collection in Shopify changes. This can be used to sync collection information when an external service also relies on it.
Inventory-Related Webhooks
You can receive changes related to inventory levels and inventory items. The representative inventory_levels/update lets you detect when inventory levels at a given location are updated. If you manage inventory across multiple locations, such as physical stores and warehouses, this can be used to trigger syncing with an external inventory management system.
Customer-Related Webhooks
You can be notified of customer creation, updates, and deletion. For example, using customers/update, you can inform an external system exactly when customer information changes in Shopify. If you also manage customer information in a CRM or marketing automation tool, this can be used for data integration. Note that when an app handles customer data, you also need to check the required access scopes and other permissions.
Shipping / Fulfillment-Related Webhooks
You can be notified of events related to shipping and fulfillment. Using fulfillments/create or fulfillments/update, you can notify an external system of shipping status changes in Shopify. This can be used to sync shipping status with a warehouse management system or shipping-related system.
Returns / Refunds-Related Webhooks
You can be notified of returns and refunds that occur after a purchase. For returns, topics such as returns/request and returns/update are available; for refunds, there is refunds/create, among others. These can be used to pass information to a returns management or accounting system and trigger the subsequent process.
Cart / Checkout-Related Webhooks
You can be notified of events related to carts and checkouts before an order is finalized. This can be used to detect cart creation and updates, and to trigger any necessary processing on an external service.
Draft Order-Related Webhooks
You can be notified of events related to draft order creation, updates, and deletion. Draft orders are used when staff create orders received by phone or email, or for B2B transactions. This can be useful for data integration when an external order management system also handles draft orders.
Discount-Related Webhooks
For discounts, you can be notified of events such as discounts/create, discounts/update, and discounts/delete. If an external system also uses Shopify's discount information, this can be used to sync the addition, modification, or removal of discounts.
Payment / Chargeback-Related Webhooks
You can be notified of events related to disputes. Using disputes/create or disputes/update, you can detect when a dispute such as a chargeback occurs, or when its status changes. This can be used to trigger a payment review or internal process.
Location / Store Settings-Related Webhooks
In Shopify, a physical store, warehouse, or other place where you store and manage products can be managed as a "location." Webhooks let you receive events related to location creation, updates, deletion, and deactivation. This can be used to sync store and warehouse information with an external system, and Webhook topics are also available for store-level changes such as shop information.
Theme-Related Webhooks
Besides theme creation, updates, and deletion, using themes/publish lets you detect when the published theme changes. This can be useful for theme management apps or for triggering another process when a theme is published.
App / Privacy-Related Webhooks
For Shopify apps, app/uninstalled lets you detect when the app is uninstalled, and app/scopes_update lets you detect changes in access permissions. Apps distributed through the Shopify App Store must also support the privacy-related compliance Webhooks.
Representative topics include customers/data_request, which handles customer data disclosure requests, customers/redact, which deletes customer data, and shop/redact, which deletes store data. Note that these three are a separate set of compliance-specific topics apart from the regular list of Webhook topics, and are configured in the app's configuration file (shopify.app.toml).
Three Ways to Set Up Shopify Webhooks
There are three main ways to set up Webhooks in Shopify. Broadly, these break down into creating them per store from the Shopify admin, and configuring Webhook subscriptions during Shopify app development.
| Method | Best Suited For |
|---|---|
| Shopify admin | You want to create a Webhook individually for a specific store |
shopify.app.toml |
You want to set up a common Webhook across multiple stores that have installed your app |
| GraphQL Admin API | You want your app to set up different Webhooks for each store |
Creating a Webhook from the Shopify Admin
You can also create a Webhook from the Shopify admin without writing any code.
Go to Shopify admin → "Settings" → "Notifications" → "Webhooks" → "Create webhook," and specify the event you want to be notified of, the data format, the destination URL, and the Webhook API version.

Image source: Shopify admin

Image source: Shopify admin
From the admin, you can select events related to orders, products, customers, inventory, collections, fulfillment, themes, and more. However, not every Webhook topic listed in the developer reference can be configured from the admin. If you only need Webhooks for a specific store, this is the first approach to consider.
Setting It Up in shopify.app.toml
When developing a Shopify app, you can pre-configure the Webhooks you want to receive in the app's configuration file, shopify.app.toml.
With this approach, the same Webhook configuration applies to every store that has installed your app. It's well suited to apps that need to receive common events, such as "order created" or "product updated," across multiple stores. This is mainly the setup method used by Shopify app developers.
Setting It Up via the GraphQL Admin API
If you want to vary which Webhooks you receive per store, you can use the GraphQL Admin API. For example, you could receive order-related Webhooks for one store, while receiving order and inventory-related Webhooks for another store, allowing different configurations per store.
In app development, you can choose shopify.app.toml when you want a common Webhook configuration across multiple stores, and the GraphQL Admin API when you want to vary the configuration per store.
Points to Keep in Mind When Using Shopify Webhooks
When using Shopify Webhooks, you need to consider not only which topics to select, but also delivery failures, duplicates, and security.
The main points to keep in mind are as follows.
Configure Only the Webhooks You Need
Choose the Webhook topics you need based on what you want to integrate. For app-facing Webhooks, you can also narrow down the notification targets and the data received by specifying conditions.
Verify That the Webhook Actually Came from Shopify
When receiving Webhooks in an external system, you need to verify that the data really was sent by Shopify. When receiving over HTTPS, you can use X-Shopify-Hmac-Sha256 to verify the sender.
Also, since the same Webhook can sometimes arrive more than once, it's important to make sure your processing doesn't end up double-registering the same order, for example.
Plan for Delivery Failures
Webhooks may not always arrive successfully, due to issues such as system outages or communication errors on the receiving end. In Shopify, a failed delivery is retried up to 8 times over 4 hours, and if it continues to fail, the Webhook subscription itself may be automatically deleted. Make sure you can monitor whether Webhooks are being received successfully, so you don't miss a deletion and end up with notifications silently stopping.
Don't Rely on Webhooks Alone for Data Sync
Notification delays, processing failures, or out-of-order delivery can cause discrepancies between the data in Shopify and in your external system. When syncing important information such as orders or inventory, make sure you can fetch the latest data from the Admin API as needed and verify it matches the data on the Shopify side.
Check the API Version
The Webhook topics available and the data they include may change depending on the API version. When developing or making changes, be sure to check the Webhooks reference for the API version you're using.
Webhooks are convenient for integrating with external systems, but it's important to design not just for receiving notifications, but also for handling delivery failures and duplicates.
Summary
A Shopify Webhook is a feature that sends related data to an app or external system when an event such as an order being created or a product being updated occurs. A wide range of topics is available, covering orders, products, inventory, customers, shipping, and returns/refunds.
When using Webhooks, it's important to work out "what should happen in the external system when a specific event occurs in Shopify" and choose the topics you need accordingly. When handling important data, also consider security, duplicate deliveries, handling delivery failures, and periodic data checks via the API.