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.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.
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
- Brew mints a unique webhook URL for your brand. You enter your
myshopify.comdomain in Brew and create one Shopify webhook per topic, all pointing at the same Brew URL. - Shopify signs every webhook with your store’s per-shop signing secret. Brew verifies the HMAC and checks the
X-Shopify-Shop-Domainheader against the domain you registered — so even if your secret leaks, no other store can impersonate your connection. - For each verified event Brew (a) starts every matching automation and (b) upserts the Shopify customer into your audience with
shopify_*custom fields.
Setup
Generate your Brew webhook URL
In Brew, open Integrations, click the Shopify card, and click Generate URL. Copy the URL Brew generates.
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.Open Shopify Admin → Settings → Notifications
Click Settings (gear icon, bottom-left of Shopify admin) then Notifications. Scroll to the Webhooks section.
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.
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.
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.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: Customercustomers/createcustomers/updatecustomers/deletecustomers/enablecustomers/disable
orders/createorders/paidorders/cancelledorders/fulfilledorders/refunded
checkouts/createcheckouts/update
carts/update
fulfillments/createfulfillments/update
Common patterns
| Goal | Shopify event |
|---|---|
| Welcome new shopper | customers/create |
| Order confirmation | orders/create |
| Receipt + thank-you | orders/paid |
| Cancellation confirmation + win-back | orders/cancelled |
| Refund confirmation | orders/refunded |
| Abandoned-cart Stage 1 (1 hr) | checkouts/create |
| Abandoned-cart Stage 2 (24 hr) | checkouts/update |
| Pre-checkout nudge / cart reminder | carts/update |
| Shipment notification with tracking | fulfillments/create |
| Delivery thank-you / review request | fulfillments/update |
Personalization
| Variable | Example |
|---|---|
{{@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://... |
Troubleshooting
An event arrived but no automation fired
An event arrived but no automation fired
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.
Shopify returns 401 with shop_domain_mismatch
Shopify returns 401 with shop_domain_mismatch
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.orders/* emails have empty firstName / lastName
orders/* emails have empty firstName / lastName
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.carts/update fires to placeholder emails
carts/update fires to placeholder emails
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.I want to test before going live
I want to test before going live
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:- Self-Service Tools
- Talk to Our Team
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.