Shopify Flow is Shopify's free automation app. A workflow has three parts: a trigger (something happens in the store), conditions (checks on the data) and actions (what Flow does). This guide gives twelve workflows we set up for merchants, using the trigger and action names as they appear in Flow, then explains the plan limits and when a workflow needs custom code instead.
What Flow can do, and on which plan
- Plans: Shopify's help center says Flow is a free app available on the Basic, Grow, Advanced and Plus plans.
- Send HTTP request: this action, which calls an outside system, is available on Grow, Advanced and Plus.
- Custom partner app tasks: only Plus stores can use triggers and actions from custom partner apps.
- Limits: Flow's usage limits follow the API limits of your plan.
Two actions turn Flow from a tagging tool into something closer to a small integration platform:
- Send Admin API request runs most GraphQL Admin API mutations, for changes Flow has no ready-made action for.
- Run code runs a short JavaScript function to calculate or reshape data between steps.
Orders and fraud
1. Hold high-risk orders for review
- Trigger: Order risk analyzed
- Condition: the risk level is high
- Actions: Hold fulfillment order, Add order tags ("review-risk"), Send internal email to the person who reviews orders
Nothing ships until someone has looked at it, and the tag makes the queue easy to filter.
2. Tag orders by sales channel or market
- Trigger: Order created
- Condition: the order's sales channel, or its shipping country
- Action: Add order tags ("wholesale", "eu", "pos")
Tags feed reports, saved views in the admin and the rules your warehouse uses.
3. Flag large orders for a personal touch
- Trigger: Order paid
- Condition: the order total is above a threshold you choose
- Actions: Add order tags ("vip-order"), Send internal email to customer service
4. Cancel and notify on a known problem pattern
- Trigger: Order created
- Condition: a pattern you've seen before, for example a shipping address that matches a blocked list kept in a shop metafield
- Actions: Cancel order, Send internal email
Use this one carefully, and start with a hold instead of a cancellation until you trust the rule.
Inventory
5. Hide products that sell out
- Trigger: Product variant out of stock
- Condition: all variants of the product are out of stock
- Action: Unpublish product, or Add product tags ("sold-out") if your theme filters on tags
6. Bring them back when stock returns
- Trigger: Product variant back in stock
- Action: Publish product, Remove product tags ("sold-out")
7. Warn purchasing before stock runs out
- Trigger: Product variant inventory quantity changed
- Condition: the quantity has dropped below your reorder point
- Action: Send internal email to purchasing, with the product, variant and quantity in the message
Customers
8. Tag customers by lifetime spend
- Trigger: Order paid
- Condition: the customer's total spent is above your threshold
- Action: Add customer tags ("vip")
Customer tags can drive segments, discounts and email lists.
9. Follow up on first orders
- Trigger: Order paid
- Condition: it is the customer's first order
- Action: Add customer tags ("first-order"), which your email app can use to start a welcome series
10. Clean up after abandoned checkouts
- Trigger: Customer abandons checkout
- Condition: the cart value is above a threshold, and the customer accepts marketing
- Action: Add customer tags ("high-value-abandon") for a targeted follow-up
Shopify already sends its own abandoned checkout emails, so use this for a second, more personal step, not a duplicate.
B2B and operations
11. Set up new B2B companies the same way every time
- Trigger: Company created
- Actions: Add catalog to company location, Update company location payment terms, Send B2B access email
New wholesale customers get the right catalog and terms without someone remembering each step.
12. Send yourself a daily summary
- Trigger: Scheduled time (every morning)
- Actions: Get order data for yesterday's orders with a given tag, then Count, then Send internal email with the count
The Get data actions plus Count and Sum turn Flow into a simple reporting tool.
When a workflow needs a little code
Run code takes data from earlier steps through a GraphQL input query, runs a JavaScript function, and returns values that later steps can use. For example, counting the units of a product type in an order:
```js
// Input query (in the action's Input field):
// query { order { lineItems { quantity product { productType } } } }
//
// Output schema (in the Output field):
// type Output { candleUnits: Int! }
export default function main(input) {
const candleUnits = input.order.lineItems
.filter((item) => item.product?.productType === "Candle")
.reduce((sum, item) => sum + item.quantity, 0);
return { candleUnits };
}
```
A condition after this step can then check whether candleUnits is above a limit and add a tag or hold the order.
Shopify documents the limits: the code runs for at most 5 seconds with 10 MB of memory, it can't make HTTP calls or import modules, and the code itself can be up to 50,000 characters.
When Flow isn't enough
Flow covers a lot, but it isn't the right tool for everything:
- Two-way sync with another system. Send HTTP request can push data out, but keeping an ERP, warehouse or CRM in agreement needs retries, error handling and reconciliation. See our guide to Shopify ERP integration.
- Logic that runs inside checkout. Discounts, delivery options and payment rules belong in Shopify Functions, not Flow.
- Heavy calculations or external data. Run code has no network access and a 5-second limit.
- Screens for your team. Flow has no user interface for staff; an embedded app does.
In those cases a small custom app usually does the job, often alongside Flow rather than replacing it.
Tips that keep workflows reliable
- Start from Flow's templates where one exists, then adjust.
- Name workflows by outcome ("Hold high-risk orders"), not by trigger.
- Test on a development store or with a test order before turning a workflow on.
- Add the "Send Shopify alert for errors" action or watch the "Workflow error occurred" trigger, so failures reach a person.
- Keep thresholds and lists in shop metafields, so changing them doesn't mean editing the workflow.
- Review your workflows after every Shopify Edition; new triggers and actions often replace a workaround.
Want help automating your store?
We set up Shopify Flow workflows, write the Run code steps, and build custom apps and integrations when Flow reaches its limits. See our Shopify app development and Shopify API integration services, or our monthly Shopify maintenance if you'd like someone to look after your workflows.



