Complete trigger reference
Every trigger this app adds to Shopify Flow, what makes it fire, the permission it needs, and where you switch it on. There are 98 triggers in total.
Looking for the one that fits your use case? Start with Choosing the right trigger.
Products (11)
Field-level product changes. Native Flow tells you a product was updated; these tell you what changed, so a workflow can react to a title edit without also running on every price change.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Product Update | Shopify webhook | read_products |
Triggers page |
| Product Tags Added | Webhook + change detection | read_products |
Triggers page |
| Product Tags Removed | Webhook + change detection | read_products |
Triggers page |
| Product Status Changed | Webhook + change detection | read_products |
Triggers page |
| Product Title Changed | Webhook + change detection | read_products |
Triggers page |
| Product Handle Changed | Webhook + change detection | read_products |
Triggers page |
| Product Description Changed | Webhook + change detection | read_products |
Triggers page |
| Product Vendor Changed | Webhook + change detection | read_products |
Triggers page |
| Product Type Changed | Webhook + change detection | read_products |
Triggers page |
| Product Published to Channel | Webhook + change detection | read_publications + read_products |
Triggers page |
| Product Unpublished from Channel | Webhook + change detection | read_publications + read_products |
Triggers page |
Product variants (4)
Variant-level pricing and identifier changes, each detected independently.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Product Variant Price Changed | Webhook + change detection | read_products |
Triggers page |
| Product Variant SKU Changed | Webhook + change detection | read_products |
Triggers page |
| Product Variant Barcode Changed | Webhook + change detection | read_products |
Triggers page |
| Product Variant Unit Price Changed | Webhook + change detection | read_products |
Triggers page |
Collections (4)
Collection updates, plus the individual fields most often used for SEO and merchandising automation.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Collection Update | Shopify webhook | read_products |
Triggers page |
| Collection Handle Changed | Webhook + change detection | read_products |
Triggers page |
| Collection Title Changed | Webhook + change detection | read_products |
Triggers page |
| Collection Description Changed | Webhook + change detection | read_products |
Triggers page |
Metafields (5)
Custom-data changes. The generic Metafield Update trigger covers 10 owner types and is configured per definition on the Metafield Triggers page. The typed triggers additionally deliver the order, product, variant, or customer as a native Flow reference.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Metafield Update | Webhook + change detection | read_products |
Metafield Triggers page |
| Order Metafield Update | Webhook + change detection | read_orders |
Metafield Triggers page |
| Product Metafield Update | Webhook + change detection | read_products |
Metafield Triggers page |
| Product Variant Metafield Update | Webhook + change detection | read_products |
Metafield Triggers page |
| Customer Metafield Update | Webhook + change detection | read_customers |
Metafield Triggers page |
Metaobjects (1)
Changes to metaobject entries, configured per definition on the Metaobject Triggers page.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Metaobject entry updated | Shopify webhook | read_metaobjects |
Metaobject Triggers page |
Customers (11)
Customer record changes, including tags, note, state, marketing consent, and the opt-in personal-data fields.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Customer Update | Shopify webhook | read_customers |
Triggers page |
| Customer Tags Added | Webhook + change detection | read_customers |
Triggers page |
| Customer Tags Removed | Webhook + change detection | read_customers |
Triggers page |
| Customer Note Changed | Webhook + change detection | read_customers |
Triggers page |
| Customer State Changed | Webhook + change detection | read_customers |
Triggers page |
| Customer Name Changed | Webhook + change detection (protected data) | read_customers |
Triggers page (protected data, opt-in) |
| Customer Email Changed | Webhook + change detection (protected data) | read_customers |
Triggers page (protected data, opt-in) |
| Customer Phone Changed | Webhook + change detection (protected data) | read_customers |
Triggers page (protected data, opt-in) |
| Customer Address Changed | Webhook + change detection (protected data) | read_customers |
Triggers page (protected data, opt-in) |
| Customer Email Marketing Consent Changed | Shopify webhook | read_customers |
Triggers page |
| Customer SMS Marketing Consent Changed | Shopify webhook | read_customers |
Triggers page |
Orders (10)
Order changes at a granularity native Flow does not offer: individual line items, fulfillment transitions, financial status, notes, attributes, and tags.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Order Update | Shopify webhook | read_orders |
Triggers page |
| Order Tags Added | Webhook + change detection | read_orders |
Triggers page |
| Order Tags Removed | Webhook + change detection | read_orders |
Triggers page |
| Order Note Changed | Webhook + change detection | read_orders |
Triggers page |
| Order Attributes Changed | Webhook + change detection | read_orders |
Triggers page |
| Order Line Items Changed | Webhook + change detection | read_orders |
Triggers page |
| Order Fulfillment Changed | Webhook + change detection | read_orders |
Triggers page |
| Order Display Status Changed | Polling | read_orders |
Triggers page |
| Order Financial Status Changed | Webhook + change detection | read_orders |
Triggers page |
| Order Shipping Address Changed | Webhook + change detection (protected data) | read_orders + read_customers |
Triggers page (protected data, opt-in) |
Draft orders (10)
Full draft order lifecycle coverage for B2B negotiation, wholesale invoicing, and custom order workflows.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Draft Order Update | Shopify webhook | read_draft_orders |
Triggers page |
| Draft Order Tags Added | Webhook + change detection | read_draft_orders |
Triggers page |
| Draft Order Tags Removed | Webhook + change detection | read_draft_orders |
Triggers page |
| Draft Order Note Changed | Webhook + change detection | read_draft_orders |
Triggers page |
| Draft Order Attributes Changed | Webhook + change detection | read_draft_orders |
Triggers page |
| Draft Order Line Items Changed | Webhook + change detection | read_draft_orders |
Triggers page |
| Draft Order Status Changed | Webhook + change detection | read_draft_orders |
Triggers page |
| Draft Order Email Changed | Webhook + change detection (protected data) | read_draft_orders |
Triggers page (protected data, opt-in) |
| Draft Order Shipping Address Changed | Webhook + change detection (protected data) | read_draft_orders |
Triggers page (protected data, opt-in) |
| Draft Order Billing Address Changed | Webhook + change detection (protected data) | read_draft_orders |
Triggers page (protected data, opt-in) |
Companies (B2B) (5)
B2B company and company-location changes, including tax-exemption edits that Shopify does not emit a webhook for.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Company Update | Shopify webhook | customer_read_companies |
Triggers page |
| Company Location Update | Shopify webhook | customer_read_companies |
Triggers page |
| Company Location Tax Exemptions Changed | Polling | customer_read_companies |
Triggers page |
| Company Contact Updated | Shopify webhook | customer_read_companies + read_customers |
Triggers page |
| Customer Removed from Company | Shopify webhook | customer_read_companies + read_customers |
Triggers page |
Discounts (6)
The complete discount lifecycle, including expiry, which Shopify does not report at all.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Discount Created | Shopify webhook | read_discounts |
Triggers page |
| Discount Updated | Shopify webhook | read_discounts |
Triggers page |
| Discount Deleted | Shopify webhook | read_discounts |
Triggers page |
| Discount Expired | Polling | read_discounts |
Triggers page |
| Discount Code Added | Shopify webhook | read_discounts |
Triggers page |
| Discount Code Removed | Shopify webhook | read_discounts |
Triggers page |
Inventory (4)
Per-location stock triggers. Shopify's native inventory triggers are variant-aggregate with no location; these carry the location plus the old, new, and delta quantities.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Inventory Level Changed at Location | Webhook + change detection | read_inventory + read_products |
Triggers page |
| Out of Stock at Location | Webhook + change detection | read_inventory + read_products |
Triggers page |
| Back in Stock at Location | Webhook + change detection | read_inventory + read_products |
Triggers page |
| Product Variant Cost Changed | Webhook + change detection | read_inventory + read_products |
Triggers page |
Locations (5)
Location lifecycle events across warehouses, retail stores, and pickup points.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Location Created | Shopify webhook | read_locations |
Triggers page |
| Location Updated | Shopify webhook | read_locations |
Triggers page |
| Location Deleted | Shopify webhook | read_locations |
Triggers page |
| Location Activated | Shopify webhook | read_locations |
Triggers page |
| Location Deactivated | Shopify webhook | read_locations |
Triggers page |
Markets (4)
Market lifecycle events for international and B2B selling.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Market Created | Shopify webhook | read_markets |
Triggers page |
| Market Updated | Shopify webhook | read_markets |
Triggers page |
| Market Deleted | Shopify webhook | read_markets |
Triggers page |
| Market Status Changed | Webhook + change detection | read_markets |
Triggers page |
Content (blogs & pages) (3)
Online store content changes. Shopify publishes no webhooks for content, so these are detected by polling.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Blog Update | Polling | read_content |
Triggers page |
| Blog Post Update | Polling | read_content |
Triggers page |
| Page Update | Polling | read_content |
Triggers page |
Storefront (12)
What shoppers do on your online store, collected by the app's web pixel. All of them need Storefront Behaviour Access (read_customer_events), the ones that send a product also need Product, Variant & Collection Data Access (read_products), they start switched off, respect the shopper's analytics consent, and are best effort rather than guaranteed. Read Storefront triggers before enabling one - they can be far higher volume than anything above.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Storefront Product Viewed | Storefront pixel | read_customer_events + read_products |
Triggers page |
| Storefront Collection Viewed | Storefront pixel | read_customer_events |
Triggers page |
| Storefront Cart Viewed | Storefront pixel | read_customer_events |
Triggers page |
| Storefront Product Added to Cart | Storefront pixel | read_customer_events + read_products |
Triggers page |
| Storefront Product Removed from Cart | Storefront pixel | read_customer_events + read_products |
Triggers page |
| Storefront Checkout Started | Storefront pixel | read_customer_events |
Triggers page |
| Storefront Search | Storefront pixel | read_customer_events + read_products |
Triggers page |
| Storefront Search Returned No Results | Storefront pixel | read_customer_events |
Triggers page |
| Out-of-Stock Variant Viewed | Storefront pixel + inventory check | read_customer_events + read_inventory + read_products |
Triggers page (also enables Storefront Product Viewed) |
| Signed-In Customer Visited | Storefront pixel | read_customer_events + read_customers |
Triggers page (visit window in its settings) |
| B2B Buyer Visited | Storefront pixel | read_customer_events + customer_read_companies |
Triggers page (visit window in its settings) |
| Custom Storefront Trigger | Storefront pixel | read_customer_events |
Custom triggers, one per event name you publish |
Checkout (3)
Two of these are collected by the pixel during checkout. The third is a webhook trigger that fires when an order arrives from a customer with no previous orders.
| Trigger | Fires from | Permission | Turn it on |
|---|---|---|---|
| Checkout Error Shown | Storefront pixel | read_customer_events |
Triggers page |
| Checkout Discount Code Rejected | Storefront pixel | read_customer_events |
Triggers page |
| First-Time Customer Order | Shopify webhook | read_orders + read_customers |
Triggers page |
Not in this list: custom triggers
When none of the 98 fits, you can write your own: pick a Shopify event, capture a real payload, and write a short transform that decides when to fire and what to send. See Custom triggers. On the storefront, publish your own event from your theme and it arrives as Custom Storefront Trigger - see Custom Storefront Triggers.
Summary
| How it fires | Triggers |
|---|---|
| Webhook + change detection | 44 |
| Shopify webhook | 26 |
| Webhook + change detection (protected data) | 8 |
| Polling | 6 |
| Storefront pixel | 14 |
| Total | 98 |

