---
title: "Shopify event triggers - Workflow Suite"
description: "Start a workflow on any Shopify event: orders, products, inventory, customers, fulfillment, returns, discounts, subscriptions, markets and more."
canonical: "https://docs.workflow-suite.app/shopify-events"
---

# Shopify events

Shopify reports what happens in your store as events: an order was created, a product was updated, a refund was issued. Workflow Suite offers every event Shopify lets an app subscribe to, more than 200 of them, as a trigger.

## The categories

| Category | Examples |
| --- | --- |
| Products | Product created, Product updated, Product deleted, Product published to a sales channel |
| Collections | Collection created, Collection updated, Collection deleted |
| Inventory | Inventory quantity changed, Inventory item updated, Location created |
| Inventory transfers | Inventory shipment created, Inventory shipment items received, Inventory transfer completed |
| Orders | Order created, Order paid, Order fulfilled, Order cancelled, Order edited, Order risk assessed |
| Payments | Order transaction created, Payment dispute created, Payment terms created, Refund created |
| Draft orders | Draft order created, Draft order updated, Draft order deleted |
| Carts and checkouts | Cart created, Checkout started, Checkout updated |
| Fulfillment | Fulfillment created, Shipment tracking event created, Fulfillment order placed on hold |
| Returns | Return requested, Return approved, Return closed |
| Customers | Customer created, Customer tags added, Customer joined a segment, Email marketing consent changed, Customer purchasing summary changed |
| Companies | Company created, Company location created, Company contact created |
| Discounts | Discount created, Discount updated, Discount code added |
| Subscriptions | Subscription billing attempt failed, Subscription billing attempt succeeded |
| Custom data | Metafield definition created, updated, deleted |
| Sales channels | Product feed created, Collection listing added |
| Markets | Market created, Market updated, Store language created |
| Shipping and taxes | Delivery profile updated, Tax service created |
| Store | Theme published, Domain created, Bulk operation finished |

The trigger picker is the full, current list. Search it by what happened, for example `refund` or `tracking`.

## What the event looks like

The event is what Shopify sends for that topic. Your steps read it under `event.payload`:

```liquid
Order {{ event.payload.name }} for {{ event.payload.total_price }} {{ event.payload.currency }}
```

A few things that help in daily use:

- `event.payload.admin_graphql_api_id` is the resource's id in the form Shopify actions expect. Ready-made actions accept this id or the plain number.
- Lists such as `event.payload.line_items` can be repeated over with [Repeat for each](https://docs.workflow-suite.app/repeat-for-each.md).
- The variable picker next to every field lists the fields of the trigger's sample event, so you rarely type a path by hand.
- If you need data the event does not carry, for example a product's title on an inventory event, add a Shopify query step first. See [Every Shopify mutation and query](https://docs.workflow-suite.app/shopify-mutations-and-queries.md).

## Turning the workflow on

When you turn a workflow on, the app subscribes your store to the event. When no workflow uses an event any more, the subscription is removed. You do not manage subscriptions yourself.

A subscription only works for store data you granted on the **Permissions** page. If the permission is missing, the editor tells you before you turn the workflow on.

> [!WARNING]
> **Order, customer and draft order events need Shopify's approval**
> Events of the order, customer, draft order, checkout, fulfillment and company families contain protected customer data. Shopify delivers them only to apps it has approved for that data, and it can leave out fields such as name, email, phone and address unless those are approved too. If a workflow with such a trigger never starts, this is the first thing to check. See [Permissions and store data access](https://docs.workflow-suite.app/permissions-and-store-data-access.md).

## Updated events fire often

**Product updated** or **Order updated** start for every change, including changes your own workflow makes. Two things keep that under control:

- Prefer a change trigger when you care about one field. **Product variant price changed** starts only when a price changed, and tells you the old and the new price. See [Change triggers with before and after values](https://docs.workflow-suite.app/change-triggers.md).
- Loop protection recognises the echo of a workflow's own change. See [Loop protection](https://docs.workflow-suite.app/loop-protection.md).

Shopify may deliver the same event more than once. The app recognises repeated deliveries and starts one run.
