OPERATIONS · SHOPIFY PLUS · INTEGRATIONS · 27 MAY 2025 · 7 MIN READ
Shopify Flow: automation that replaces an app
Shopify lists Flow as free on Basic, Grow, Advanced and Plus, and it quietly replaces a whole category of small monthly apps. It is also the wrong tool for about a third of what people ask it to do.
Shopify Flow automates anything that can be expressed as "when this happens in the store, check something, then do something" — tagging orders and customers, holding risky fulfilments, writing metafields, alerting your team, calling the Admin API, and calling an external service over HTTP. Shopify publishes it as free on Basic, Grow, Advanced and Plus, with feature access varying by plan. Before you buy an app that does one small thing on an order, check whether four Flow steps already do it.
IN SHORT
- Flow runs on a trigger–condition–action model, and Shopify lists it as free across Basic, Grow, Advanced and Plus, with some actions gated by plan.
- The tasks most commonly bought as apps — auto-tagging, fraud holds, low-stock alerts, VIP segmentation, internal notifications — are a handful of Flow steps each.
- The "Send HTTP request" action requires Grow, Advanced or Plus, and it is what turns Flow from a tagging tool into a lightweight integration layer.
- Flow tasks built by a custom app are only available to Shopify Plus stores that have the app installed.
- Flow has no state between runs and no transactional guarantees, so it is the wrong place for anything that must be exactly once or must reconcile.
- A workflow nobody owns is worse than an app nobody uses, because it is invisible until it fires on the wrong order.
What Flow actually is
Three building blocks, and that is the whole model. A trigger is something that happened — an order was paid, inventory went out of stock, a customer subscribed, a scheduled time arrived. A condition decides whether to carry on. An action does something. You chain them in the admin, no code, and the workflow runs on Shopify's infrastructure rather than yours.
The trigger list is longer than most merchants realise. Shopify documents triggers across order lifecycle and risk, fulfilment orders and their holds and failures, inventory quantity changes, product and variant changes, customer accounts and segment membership, returns from requested through to reopened, subscription contracts and billing attempts, draft orders, disputes, B2B companies and locations, and metaobject entries. There is also a scheduled time trigger, which is the one that turns Flow from a reactive tool into something that can sweep the store on a timetable.
The action list is where it stops being a toy. Tagging and metafields on almost every resource, internal emails, holding and releasing fulfilment orders, marking fulfilled, purchasing shipping labels, for-each loops, waits, an explicit "fail workflow run", logging — and three that matter more than the rest: Get data (pull related records mid-workflow), Send Admin API request (run a GraphQL mutation Flow has no purpose-built action for), and Send HTTP request (call anything else).
The apps it replaces
There is a category of Shopify app that exists because Flow is unfamiliar rather than because Flow is insufficient. Each one costs a small monthly fee, adds an OAuth grant to your store, and does something a four-step workflow does natively. Auditing these is the fastest win available on most stores we inherit.
- Order and customer auto-tagging by value, product, country, discount code or payment method. This is the single most-installed thing Flow already does.
- Fraud and risk holds — high-risk order triggers a fulfilment hold and an internal email, instead of someone noticing on Monday.
- Low-stock and out-of-stock internal alerts, including per-location.
- VIP and repeat-buyer segmentation written to a customer tag or metafield, then used by segments, discounts and theme logic.
- First-order and second-order flags for merchandising, without a retention app.
- B2B and wholesale routing: tag by company, hold for approval, email the account manager.
- Publishing and unpublishing products on a schedule, via the scheduled time trigger and a status condition.
Where the real leverage is: HTTP and the Admin API
The two actions that change what Flow is for are Send HTTP request and Send Admin API request. The first calls an external endpoint — your ERP, a Slack or Teams webhook, a 3PL, an internal service. Shopify documents it as requiring Grow, Advanced or Plus, so it is not available on Basic. The second lets a workflow issue a GraphQL mutation directly, which means Flow is not limited to the actions someone built a UI for.
That combination is genuinely useful, and it is also where people get overconfident. We have seen Flow used as the entire integration between Shopify and a warehouse system: order paid, send HTTP request to the WMS, done. It works in testing and it works for months, and then the WMS has a bad afternoon, a hundred requests fail, and there is no queue holding them, no dead-letter list, and no way to find out which hundred orders never landed.
The line we draw: Flow may notify any system, and it may write to a system where a missed write is recoverable by the next sync. It should not be the only path by which an order reaches a system that fulfils it. That job wants retries, idempotency and a record of what has been sent — which is an integration, not a workflow.
What Flow is genuinely bad at
Four things, and knowing them is most of the skill.
State across runs. Each run sees its own trigger and whatever it fetches. "Email them if this is the third time this month" is not a workflow; it is a counter, and the counter has to live in a metafield you maintain yourself, with all the race conditions that implies.
Exactly-once guarantees. Flow is not transactional. If a step calls an external service and the response is lost, nothing reconciles. For money, inventory commitments and anything a customer will notice twice, build the idempotency where the data lives, not in the workflow.
Customer-facing email. Flow's email actions are aimed at internal notifications, order invoices and similar. Marketing email belongs in a marketing tool that handles consent, unsubscribes and deliverability. Flow deciding *who* gets an email and handing that to the marketing tool is the right shape.
Volume work. A for-each loop over a large collection, on a schedule, is a bulk operation wearing a workflow costume. Shopify ties Flow's usage limits to the API limits of the store's plan, so a heavy sweep competes with everything else you do against the API. Move it.
The governance problem nobody plans for
The failure mode on mature stores is never "Flow could not do it". It is thirty-one enabled workflows, four of which contradict each other, written by three people, two of whom have left. A tag gets added by one workflow and stripped by another. Nobody can say what happens to a high-risk B2B order because it depends which workflow won.
Flow is free, which means it accumulates the way free things do. Treat workflows as production code: name them so the list reads as an inventory, keep a one-line note of who owns each and why it exists, disable rather than delete so the history survives, and review the whole list on a schedule. Half the workflows on a store two years old are for a campaign that ended.
One practical habit worth more than the rest: before you build a workflow that writes a tag, search the existing list for that tag. Most conflicts are two people solving the same problem eight months apart.
How we decide: Flow, app, or code
The question is not "can Flow do this" — it usually can. The question is what happens when it fails, and whether anyone will notice.
- Flow — the action is reversible, a missed run is an annoyance rather than a loss, and the logic fits on one screen.
- An app — somebody else maintains a genuinely hard domain (tax, subscriptions, reviews) and you are not going to do it better for less.
- Code — the process must be reliable, auditable, or reconciled; it needs state; or the logic has enough branches that a diagram would help. A custom back end with retries and a log beats a workflow with thirty conditions.
Questions this raises
What can you automate with Shopify Flow?
Anything that fits "when this happens, check something, do something": tagging orders and customers, writing metafields, holding or releasing fulfilment orders, sending internal emails, publishing products on a schedule, calling the Admin API with a GraphQL mutation, and calling external services over HTTP. Triggers cover orders, risk, fulfilment, inventory, products, customers, returns, subscriptions, draft orders, B2B companies and metaobjects, plus a scheduled time trigger.
Is Shopify Flow free, and which plans have it?
Shopify publishes Flow as free on Basic, Grow, Advanced and Plus, with feature access varying by plan. The "Send HTTP request" action requires Grow, Advanced or Plus, and Flow tasks built by a custom app are available only to Plus stores that have the app installed.
Does Shopify Flow have a run limit?
Shopify does not publish a fixed monthly run quota. It states that usage limits in Flow follow the API limits governed by the store's plan, which means a heavy scheduled workflow is competing for the same budget as your integrations. Treat that as the real ceiling.
Can Shopify Flow replace an integration with an ERP or WMS?
It can notify one, and it can write to one where a missed write is picked up by the next sync. It should not be the only path an order takes to a system that fulfils it, because Flow has no queue, no idempotency and no dead-letter list. A failed call is simply gone.
Should you use Flow or buy an app?
Buy the app when somebody else is maintaining a hard domain — tax, subscriptions, reviews. Use Flow when the action is reversible and the logic fits on one screen. A surprising share of small single-purpose apps, particularly tagging and alerting apps, are four Flow steps with a subscription attached.
Why do Shopify Flow workflows conflict with each other?
Because nothing stops two workflows acting on the same resource, and free tools accumulate. The usual symptom is one workflow adding a tag another removes. Name workflows so the list reads as an inventory, record who owns each, and search for a tag before writing a workflow that sets it.
NEXT STEP
Free store audit
A senior Shopify engineer reviews your storefront, theme performance and checkout, then sends a prioritised list of fixes.
