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.
New to Shopify Flow? Build Your first workflow, step by step first. Want something that works right away? Workflow templates are ready-made workflows you can import.

Products (11)
Step by step, with the fields each trigger sends: Product triggers, step by step.
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)
Step by step, with the fields each trigger sends: Product variant triggers, step by step.
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)
Step by step, with the fields each trigger sends: Collection triggers, step by step.
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)
Step by step, with the fields each trigger sends: Metafield triggers, step by step.
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)
Step by step, with the fields each trigger sends: Metaobject trigger, step by step.
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)
Step by step, with the fields each trigger sends: Customer triggers, step by step.
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)
Step by step, with the fields each trigger sends: Order triggers, step by step.
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)
Step by step, with the fields each trigger sends: Draft order triggers, step by step.
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)
Step by step, with the fields each trigger sends: B2B company triggers, step by step.
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)
Step by step, with the fields each trigger sends: Discount triggers, step by step.
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)
Step by step, with the fields each trigger sends: Inventory triggers, step by step.
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)
Step by step, with the fields each trigger sends: Location triggers, step by step.
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)
Step by step, with the fields each trigger sends: Market triggers, step by step.
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)
Step by step, with the fields each trigger sends: Blog and page triggers, step by step.
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)
Step by step, with the fields each trigger sends: Storefront triggers, step by step.
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)
Step by step, with the fields each trigger sends: Checkout triggers, step by step.
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 |

