Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.brew.new/llms.txt

Use this file to discover all available pages before exploring further.

Connect Shopify so storefront events fire Brew automations. Send a welcome email when a new customer is created, a receipt the moment an order is paid, an abandoned-cart drip when a checkout doesn’t convert, and a shipment notification the second a fulfillment is created.

What you can do

  • Trigger automations from Shopify events. Welcome flows, receipts, abandoned-cart drips, refund confirmations, shipping notifications
  • Auto-sync customers into your audience. Every Shopify event upserts the shopper into Brew with shopify_* custom fields (shopify_customer_id, shopify_tags, shopify_account_status, shopify_last_order_id, shopify_last_order_total, shopify_last_order_at, shopify_last_fulfillment_status, etc.) you can filter and segment on
  • Personalize with order context. Reference order totals, line items, financial status, and tracking info inside emails
  • Stop maintaining Liquid notifications. Author the same lifecycle flows on the Brew canvas instead

How it works

  1. Brew mints a unique webhook URL for your brand. You enter your myshopify.com domain in Brew and create one Shopify webhook per topic, all pointing at the same Brew URL.
  2. Shopify signs every webhook with your store’s per-shop signing secret. Brew verifies the HMAC and checks the X-Shopify-Shop-Domain header against the domain you registered — so even if your secret leaks, no other store can impersonate your connection.
  3. For each verified event Brew (a) starts every matching automation and (b) upserts the Shopify customer into your audience with shopify_* custom fields.
See How event triggers work for the conceptual flow shared by every event-source integration.

Setup

1

Generate your Brew webhook URL

In Brew, open Integrations, click the Shopify card, and click Generate URL. Copy the URL Brew generates.
2

Enter your myshopify.com shop domain

Use the canonical myshopify.com host (e.g. acme.myshopify.com), NOT your custom storefront domain. Brew matches this against every webhook’s X-Shopify-Shop-Domain header to block cross-shop replay attacks.
3

Open Shopify Admin → Settings → Notifications

Click Settings (gear icon, bottom-left of Shopify admin) then Notifications. Scroll to the Webhooks section.
4

Create one webhook per topic you want

For each Brew-supported topic (full list below), click Create webhook, set Format to JSON, paste the Brew URL, pick the latest API version, and Save.
5

Copy the per-shop signing secret

Scroll to the bottom of the Webhooks section. Copy the long secret under “Your webhooks will be signed with…”. The same secret signs every webhook on this shop.
6

Paste the signing secret into Brew

Paste the secret and click Connect. Brew verifies every webhook with HMAC-SHA-256 (base64) against the X-Shopify-Hmac-SHA256 header.
7

Verify it's working

Trigger an event in Shopify (e.g. create a test customer or place a $0.01 test order via Bogus Gateway). Within a few seconds it should appear in the Manage → Recent events panel of the Shopify integration page in Brew. If it doesn’t, recheck the signing secret and that you used the canonical myshopify.com domain — Brew’s shop-domain check rejects mismatches.
If you rotate the per-shop signing secret in Shopify Admin, re-run the last step with the new value to keep webhooks verifying.

Triggering automations

Once connected, Shopify events show up as available triggers in the automation builder. Open the Manage tab in the Shopify integration to enable the specific events you want to fire automations.

Supported events

Brew supports 15 Shopify webhook topics: Customer
  • customers/create
  • customers/update
  • customers/delete
  • customers/enable
  • customers/disable
Order
  • orders/create
  • orders/paid
  • orders/cancelled
  • orders/fulfilled
  • orders/refunded
Checkout
  • checkouts/create
  • checkouts/update
Cart
  • carts/update
Fulfillment
  • fulfillments/create
  • fulfillments/update
In chat, say “Send an abandoned-cart email 1 hour after the checkout is created” and Brew will scaffold the automation with checkouts/create pre-selected.

Common patterns

GoalShopify event
Welcome new shoppercustomers/create
Order confirmationorders/create
Receipt + thank-youorders/paid
Cancellation confirmation + win-backorders/cancelled
Refund confirmationorders/refunded
Abandoned-cart Stage 1 (1 hr)checkouts/create
Abandoned-cart Stage 2 (24 hr)checkouts/update
Pre-checkout nudge / cart remindercarts/update
Shipment notification with trackingfulfillments/create
Delivery thank-you / review requestfulfillments/update

Personalization

VariableExample
{{@trigger:output.payload.firstName}}Alex
{{@trigger:output.payload.lastName}}Morgan
{{@trigger:output.payload.orderNumber}}#1042
{{@trigger:output.payload.totalPrice}}49.95
{{@trigger:output.payload.currency}}USD
{{@trigger:output.payload.trackingNumber}}1Z999AA10123456784
{{@trigger:output.payload.trackingUrl}}https://...
{{@trigger:output.payload.abandonedCheckoutUrl}}https://...
Shopify removed tags, marketing consent, and full inline customer data from some 2025+ customer and order payloads. Brew reads what’s available and falls back gracefully — but if you specifically need order history or tags, subscribe to customers/create alongside your order webhooks and join on customerId.

Troubleshooting

Brew provisions every Shopify topic disabled-by-default. Open the Shopify integration in Brew, go to the Manage tab, and toggle the topic ON. Then make sure at least one of your automations uses it as a trigger and is set to Published.
The shop domain you entered during connect doesn’t match the X-Shopify-Shop-Domain header on the webhook. Update the stored shop domain (disconnect and reconnect) using your canonical *.myshopify.com host — not your custom storefront domain.
The Shopify January 2025 slim-down removed the inline customer object from some orders/* payloads. Either subscribe to customers/create and join by customerId in your automation’s filter step, or wait for a later webhook in the order lifecycle (orders/paid, orders/fulfilled) that still carries customer fields.
Working as intended. Shopify never carries an email on cart events, so Brew uses a synthetic placeholder. Use checkouts/create / checkouts/update for customer-facing abandoned-cart flows instead.
Shopify’s Admin → Settings → Notifications → Webhooks has a Send test notification button. Or trigger real test data (create a draft customer, place a $0.01 Bogus Gateway order). The Manage → Recent events panel surfaces every webhook within seconds.

Requirements

  • A Shopify store on any paid plan
  • Admin access to add webhooks under Settings → Notifications

Need Help?

Our team is ready to support you at every step of your journey with Brew. Choose the option that works best for you:

Search Documentation

Type in the “Ask any question” search bar at the top left to instantly find relevant documentation pages.

ChatGPT/Claude Integration

Click “Open in ChatGPT” at the top right of any page to analyze documentation with ChatGPT or Claude for deeper insights.