Webhook reference
Every Shopify event Enscale subscribes to, and what each one powers.
Enscale subscribes to Shopify webhooks to drive automation triggers, ad attribution, and back-in-stock alerts. They're registered automatically at install — this page is for understanding what fires what, and for debugging when something doesn't.
Order and checkout events
| Shopify topic | Workflow trigger |
|---|---|
checkouts/create | Checkout Created |
checkouts/update | Checkout Updated |
carts/create | Cart Created |
carts/update | Cart Updated |
orders/create | Order Created |
orders/paid | Order Paid |
orders/updated | Order Updated |
orders/cancelled | Order Cancelled |
orders/fulfilled | Order Fulfilled |
orders/partially_fulfilled | Order Partially Fulfilled |
orders/edited | Order Edited |
fulfillments/create | Fulfillment Created |
fulfillments/update | Fulfillment Updated |
draft_orders/create | Draft Order Created |
draft_orders/update | Draft Order Updated |
refunds/create | (Meta attribution only) |
Customer events
| Shopify topic | Workflow trigger |
|---|---|
customers/create | Customer Created |
customers/update | Customer Updated |
customers/enable | Customer Account Enabled |
customers/disable | Customer Account Disabled |
customers_marketing_consent/update | Marketing Consent Updated |
Inventory
| Shopify topic | Powers |
|---|---|
inventory_levels/update | Back In Stock trigger and waitlist notifications. |
When a waitlisted product's available count goes positive, Enscale notifies everyone waiting. See Back-in-stock alerts.
Privacy webhooks
Shopify requires every app to handle these. Enscale implements all three.
| Topic | What Enscale does |
|---|---|
customers/data_request | Assembles that customer's data. |
customers/redact | Deletes that customer's personal data. |
shop/redact | Deletes all store data, 48 hours after uninstall. |
App lifecycle
Enscale also handles app-level webhooks for uninstall, scope changes, subscription updates, and the approaching-usage-cap notice that warns you before metered charges stop.
One topic, one trigger
The mapping is deliberately 1:1 — every topic fires its corresponding trigger unconditionally, with no hidden payload conditions.
That's why there's no "abandoned checkout" or "order delivered" trigger. Those are your rules, expressed with a Condition node, rather than ours guessed at inside a webhook handler. The full raw Shopify payload is available as {{trigger.*}}.
See Building the flows people expect.
Deduplication
Related events describing the same thing collapse into one workflow run.
The clearest case: a guest starts a checkout without a phone number, so Enscale can't message them. When they enter a phone, Shopify sends checkouts/update, and Enscale runs your Checkout Created flow at that point. Create and update share one dedup key, so the customer is never messaged twice for the same checkout.
This is invisible in the builder — you still just pick "Checkout Created".
Meta Conversions API
Separately from workflow triggers, some order events feed Meta's Conversions API for ad attribution: Purchase, InitiateCheckout, OrderShipped, OrderDelivered, and OrderCanceled.
These fire only when the contact has an active ad attribution from a Click-to-WhatsApp, Click-to-Messenger, or Instagram ad. Customers who found you organically aren't reported to Meta.
The CAPI mapping is independent of the workflow trigger mapping — the two are deliberately decoupled. See Revenue attribution.
API version
Enscale currently uses Shopify Admin API version 2026-04. Version upgrades are handled by Enscale; you don't need to do anything.
Troubleshooting
| Problem | What to check |
|---|---|
| Workflow never fires | Is it Active? Does its trigger correspond to a topic above? |
| Some orders trigger, others don't | Check for a Condition node narrowing the flow. |
| Delivery events missing | Delivery comes from fulfillments/update with shipment_status, not from an order topic. |
| Restock alerts missing | The product must have inventory tracked in Shopify. |
| Nothing fires after reinstall | Reinstalling re-registers webhooks. If it persists, contact support. |
| Permission errors after an update | Shopify may need you to re-approve scopes. See Shopify installation. |