The back-office work you can stop doing by hand.

Shopify Flow is a free workflow builder that runs inside your store: a trigger (an order is paid, inventory drops, a customer is created), a condition, and an action (add a tag, hold fulfilment, send an email, call an app). It is available on Basic, Grow, Advanced and Plus; only the Send HTTP Request action is limited to Grow and above, and tasks from custom partner apps are Plus-only. For a D2C brand the first dozen workflows pay for themselves in a week: holding high-risk orders, tagging COD orders for confirmation, flagging serial returners, alerting on low stock, and tagging customers by value so every other tool can act on it. The risk is not building them, it is forgetting them: a year in, Flow is where the logic nobody remembers lives.
What Flow is, and what it costs
Flow is Shopify's own automation app. You pick a trigger from the events your store already emits, add conditions, and choose actions from what Shopify and your installed apps expose. It runs on Shopify's side, so nothing loads on your storefront and nothing needs a server.
It is free on the Basic, Grow, Advanced and Plus plans. Two things are gated: the Send HTTP Request action, which lets a workflow call an external API, needs Grow or above, and tasks created by custom partner apps need Plus. Usage limits scale with your plan's API limits, which only matters if you build something that fires on every cart update.
If you are on Basic and need to reach an outside system, a connector app in Flow (many apps expose their own triggers and actions) or a MESA or Zapier workflow does the job.
The twelve workflows to build first
Ordered roughly by money saved per hour spent building.
- Hold high-risk orders. Trigger on order risk analysed; if the risk level is high, hold fulfilment, tag
review, and notify whoever checks. Fraudulent orders get fulfilled because nobody looked in time. - Tag COD orders for confirmation. Trigger on order created; if the gateway is cash on delivery, tag
cod-confirmand, through your WhatsApp or SMS app's connector, send the confirmation message. This is the automation behind the RTO reductions that actually stick. - Cancel unpaid orders after a window. Pending payment orders older than a set number of hours get cancelled and their inventory released, so a stuck UPI attempt does not hold a size-M for a day.
- Flag serial returners. Trigger on return request; count returns against orders for that customer; past a threshold, tag the customer for manual review and switch them to store credit only. The returns guide explains why this beats a stricter policy for everyone.
- Low stock alerts. Trigger on inventory quantity changed; below a threshold per product, email or Slack the person who reorders. Set the threshold from lead time, not from a round number.
- Unpublish sold-out products from collections. Or add a
sold-outtag the theme uses to push them to the end, and reverse it when stock returns. Cheap, and it keeps collection pages from starting with three greyed-out cards. - Tag customers by value. On order paid, if lifetime spend crosses a tier, tag
viportier-2. Every other tool, from Klaviyo segments to support priority, can read a tag. - Tag first orders and repeat orders. A first-order tag drives the welcome series and the post-purchase survey; the repeat tag drives reviews requests and referral asks. Tags are the cheapest segmentation you will ever build.
- Attribute orders by discount code. Tag orders with the code used, or with the campaign the code belongs to, so the finance export shows which promotion the discount came from without a lookup.
- Notify on refund or chargeback. A message to the owner the moment a refund over a threshold is issued or a chargeback opens. Silence here is how a bad support week goes unnoticed.
- Delay review requests until delivery. Trigger on fulfilment delivered, wait the number of days your product needs, then hand off to the reviews app. Review requests sent on dispatch collect reviews of the courier.
- Approve B2B company requests by rule. If you run native B2B, auto-approve requests that meet criteria, tag the rest for a human.
Building them so they stay correct
- One workflow, one job. A workflow named "Order created: everything" grows until nobody dares edit it. Small workflows with descriptive names are the whole maintenance strategy.
- Tags are state, so name them like it. A prefix per domain (
risk:,cod:,tier:) and a document that lists what each one means and which workflow sets it. - Make actions safe to repeat. Triggers can fire more than once for the same object. Adding a tag twice is harmless; sending a WhatsApp message twice is not. Check for the tag before sending.
- Test with the run log, not with a real customer. Flow records every run with the data it saw. Create a test order, watch it flow, then enable for real.
- Add the workflow to the store's runbook the same day you turn it on. Flow logic is invisible from the theme, the apps and the code, which means the next developer will not find it until something they change breaks it.
- Review the list quarterly. Disable what no longer applies. A workflow for a 2025 campaign still tagging orders is noise in every report.
Where Flow stops and something else starts
- Anything that needs to change the storefront or the cart. Flow acts after events happen. Cart and checkout logic is Functions.
- Systems with no connector. If the app or your ERP does not expose Flow actions, you need Send HTTP Request (Grow and above) or an integration tool in the middle.
- Heavy data work. Flow can loop over lists and fetch data, but a workflow that walks every product nightly is a script, and it should be one.
- Multi-step human approval. Flow can tag and notify; it does not model "manager, then finance". That is an app or a build.
Common mistakes
- Never opening it. Most stores we audit have Flow installed and zero workflows, while paying for two apps that do what three workflows would.
- Automating a process that was never defined. If nobody can say what happens to a high-risk order today, write that down first and automate second.
- Letting agencies leave undocumented workflows behind. Ask for the list at handover. It belongs in the same place as the theme's changelog.
- Using tags without a naming scheme. After a year the customer tag list is a museum.
FAQ
Is Shopify Flow free, and which plans include it?
Shopify Flow is a free app available on the Basic, Grow, Advanced and Plus plans. Two capabilities are gated: the Send HTTP Request action, which lets a workflow call an external API, is available on Grow, Advanced and Plus, and tasks created by custom partner apps are Plus-only. Usage limits in Flow follow the API limits of your plan.
What is the most useful Shopify Flow workflow for a D2C brand?
Holding high-risk orders is usually the first to pay for itself: trigger on order risk analysed, hold fulfilment when the risk is high, tag the order and notify someone. Close behind it for Indian brands is tagging cash-on-delivery orders and sending the confirmation message through a connected WhatsApp or SMS app, which is the mechanism behind most sustained RTO reductions.
Can Shopify Flow send WhatsApp or SMS messages?
Not on its own, but through connectors. Many messaging, marketing and support apps expose their own actions inside Flow, so a workflow can trigger a WhatsApp confirmation or an SMS from those apps. If your app has no connector, the Send HTTP Request action on Grow and above can call its API directly, or an integration tool such as MESA or Zapier can sit in between.
Can Shopify Flow change prices or discounts in the cart?
No. Flow reacts to events after they happen, such as an order being created or inventory changing, and acts on the admin side by tagging, holding, notifying or updating records. Logic that changes what checkout calculates, such as discounts, shipping rates or payment methods, is the job of Shopify Functions.
How do I stop Flow workflows from running twice on the same order?
Design actions to be safe to repeat, because triggers can fire more than once for the same object. Adding a tag twice is harmless. Sending a message twice is not, so check for a marker tag in a condition before the action and add the tag in the same workflow. Use Flow's run log to verify with a test order before enabling the workflow for real customers.
How do I keep Shopify Flow automations maintainable?
One workflow per job with a descriptive name, a naming scheme for the tags they set, a runbook entry for each workflow written the day it is enabled, and a quarterly review that disables what no longer applies. Flow logic is invisible from the theme, the code and the apps, so a new developer will not find it until something they change collides with it.
