Skip to main content

Subscribe to a webhook topic

Subscribe your app to Shopify webhook topics so that it will be alerted when an event occurs on a merchant store.

Suppose you are building a warranty pricing app that determines which warranty options a customer can add to their cart, based on the cost of an order.

When a customer is checking out, the total order cost is used to determine which warranty options a customer can select from.

In this tutorial, you'll subscribe your app to a webhook topic to be alerted whenever a new order is created.

In this tutorial, you'll learn how to do the following tasks:

Info

Shopify recommends using Google Pub/Sub as a cloud-based solution for delivering webhooks. You can also use Amazon EventBridge.

In instances where you want to hand-roll your own webhooks infrastructure, you may prefer your webhooks be delivered through HTTPS.

During development, you may choose to use your app's URL or external mock server sites like webhook.site and Beeceptor. These are not recommended for production.

Requirements

Use the latest version of Shopify CLI

You must use Shopify CLI version 3.63.0 or higher to configure app-specific webhook subscriptions.

Scaffold an app

Scaffold an app that uses the Remix template.

Sign up for Amazon EventBridge

Sign up for Amazon EventBridge.

Project

Anchor to Set your app up to receive webhooks from Amazon EventBridgeSet your app up to receive webhooks from Amazon EventBridge

Anchor to Set up a connection between Amazon EventBridge and ShopifySet up a connection between Amazon EventBridge and Shopify

  1. In Shopify Partners app Build Configuration page, under the Amazon EventBridge section, click Create source.

  2. Paste your AWS account ID, and choose your AWS region.

    You need the AWS region when you associate an event bus with the source.

  3. Provide a unique event source name. Each event source requires a unique name. If you have multiple apps, then consider a name that matches your app.

  4. Click Create.

Anchor to Grant Shopify access to publish webhooks to your Amazon EventBridge event busGrant Shopify access to publish webhooks to your Amazon EventBridge event bus

Follow AWS EventBridge Resources instructions to set up an event bus from a Partner's event source:

  1. In the AWS console, under EventBridge, navigate to the Partner event sources page.

  2. In the Region drop-down list, select the AWS region that you chose when you set up your event source.

    These regions must match for the event bus to connect with the event source.

  3. Click the Partner event source that you created, and make note the ARN found under Partner event source ARN.

    You need this address to subscribe to a webhook.

  4. Select the option to associate the event source with an event bus.

Anchor to Create a rule to ensure the webhook is routed to the target you want it sent toCreate a rule to ensure the webhook is routed to the target you want it sent to

A rule is Amazon Eventbridge’s way of ensuring the event is routed to the target you want it sent to

Amazon EventBridge groups and sorts the events that your event source sends based on the rules that you define. After you set up your event source and associate it with an event bus, create a rule that tells AWS what to do with events it receives on the bus.

To define multiple rules, repeat this step for each rule.

Note: As your app audience grows, your traffic can increase significantly. Consider using AWS CloudWatch to monitor your EventBridge integration for usage patterns and errors. For example, you can trigger an alert if an EventBridge rule is broken.

  1. In the AWS console navigation menu navigate to rules.

  2. Select your event bus.

  3. Create a rule with a rule type of Rule with an event pattern and provide a name and a description.

  4. When building the event pattern, select the following options:

    • EventBridge partners as the source

    • Shopify as the Partner

    • All Events as the event type

You can also define a custom event pattern for your rule.

  1. In the Targets section, choose an AWS target such as a Lambda function or an SQS queue.

    Events that are processed by this rule are sent to the function or queue that you select.

Anchor to Optional: Define a custom event patternOptional: Define a custom event pattern

When you create a rule, you can process events separately depending on factors like which shop generated the event or which resource triggered the event.

Event patterns in EventBridge rules have the same structure as the payloads that they match. Matching values are added to an array and compared using OR. You can also match by prefix using the prefix key.

  1. Select Custom pattern.

  2. Provide a custom pattern that matches the structure of an Amazon EventBridge payload.

Anchor to Configure your webhook subscriptionConfigure your webhook subscription

Anchor to Update your access scopesUpdate your access scopes

Some webhook topics require scopes in order to be used. Since we want to know about when a product has been updated, we need to include the read_products scope in the configuration file.

  • To determine which scopes are required for each topic, use the Webhooks reference.
  • The complete list of Shopify API access and approval scopes are listed here.
Info

Scopes that access private customer data require to take manual steps in your Partner Dashboard. This is true of read_orders. Navigate to your app > API Access > Access requests > Protected customer data access and fill out only the first step, then save. Reinstall your app in the admin to ensure the granted scope on your app is registered with Shopify.

Anchor to Select the API versionSelect the API version

The API version impacts which topics are available to subscribe to. The Remix template defaults to the latest version in your app configuration file. However, you can update the API version as needed.

Anchor to Add topics to subscribe toAdd topics to subscribe to

To determine which topic to subscribe to, use the Webhooks reference.

In this example, your topic name will be in a list and formatted as: topics = ["orders/create"].

Anchor to Configure the endpoint where you will receive webhooksConfigure the endpoint where you will receive webhooks

Your endpoint address should be your ARN. You can find details in your Amazon EventBridge console: Partner Event Sources > Select your event source > Partner event source ARN.

Anchor to Process your webhooksProcess your webhooks

Update your webhooks file in your app routes (apps/routes) to process the event data once your app has received a webhook. In this case, we will just print to the console.

Info

Notice the current implementation of Shopify's Remix template requires you to style your webhook topic using screaming case (e.g. ORDERS_CREATE). This is the GraphQL ENUMS syntax. You can see the full list of topic enums in the Webhooks reference.

Anchor to Confirm the subscription has been added to this version of your appConfirm the subscription has been added to this version of your app

While working in development mode, however, the subscription is created once you have deployed your app, due to hot reloading.

  1. Save your TOML file.
  2. To deploy your app, run shopify app deploy.
  3. Navigate to the Partner Dashboard, click on your app, then Versions to see the latest version of your app. On this page, you will see orders/create listed in the Webhooks section.

Subscriptions are live on a store as soon as the app is installed, and assuming you have deployed.

Info

This step abstracts away calls to the webhookSubscriptionCreate GraphQL mutation. To learn more about subscribing to webhook topics using the Admin API, see the Subscribe using Admin API guide.

Anchor to Test your subscriptionTest your subscription

Anchor to Use Cloudwatch to ensure you can see the webhooks coming throughUse Cloudwatch to ensure you can see the webhooks coming through

  1. Copy and paste your event bus URL (this is your ARN).

  2. Navigate to CloudWatch > Live tail.

  3. Select EventBridge.

Anchor to Manually trigger an event in your test shopManually trigger an event in your test shop

Most webhook topics will fire immediately if you trigger the corresponding event your dev store.

  1. Navigate to your test shop and create a new order.
  2. The webhook payload should appear in your Cloudwatch Live tail console.
Info

A small number of webhook topics will not fire immediately if you trigger an event in your test shop. They include:

Anchor to Simulate an event using the command lineSimulate an event using the command line

You can use the CLI to simulate specific events occurring on a shop. This lets you test your processing logic by sending a POST request to your endpoint with a synthetic webhook. Note that it does not test your subscription configuration!

shopify app webhook trigger

The address inputted for the --address flag should be your ARN. You can find details in your Amazon EventBridge console: Partner Event Sources > Select your event source > Partner event source ARN.

This the same format as the URI you specified in your app configuration file.

Was this page helpful?