Home / Blog

Shopify Flow low stock alerts: what the free route does, and where it stops

Abstract artwork in Restoc's colours

Yes. Shopify Flow, Shopify's own free automation app, can send you an email when a variant's inventory falls below a number you choose. The build is three steps: a trigger that watches inventory quantity, a condition that compares the new quantity to your threshold, and a send internal email action. Ten minutes, no extra subscription.

What Flow will not do is work out what that number should be, or stop telling you once you already know. Both limits come from the same place. Flow is a rules engine that reacts to one event using the data attached to that event. It has no memory of last month's sales, and no memory of this morning's alert. That is fine for some stores and quietly expensive for others. Here is the build, then the two walls you hit.

The build, step by step

Open Flow, create a workflow, and wire it like this.

  1. Trigger: inventory quantity changed. This fires whenever a variant's stock moves, which includes orders, returns, and manual edits in Admin.
  2. Condition: product variant inventory quantity is less than or equal to your threshold. Type the number. Ten, twenty, whatever you have decided.
  3. Action: send internal email. Put the purchasing address in, and pull the variant name and current quantity into the body using Flow's variables so the email is useful at a glance.
  4. Turn it on. Test it by editing a variant's quantity down past the threshold in Admin.

Flow also has a Slack action, so the same workflow can post to a purchasing channel instead of, or alongside, an inbox. Availability of Flow depends on your Shopify plan, so check the app listing in the App Store before you plan around it.

That is the whole free route. It works. It is worth knowing exactly what you have bought with those ten minutes.

Limit one: the threshold is a number you typed, not a number your store earned

A reorder point is not a round number you like. It is average daily sales multiplied by supplier lead time, plus whatever buffer you want for variance. The point of calculating it is that the alert arrives while there is still time to place the order and receive the goods.

Flow's condition compares inventory to a constant, or to a value you have stored in a metafield. It does not read your order history and it does not compute a trailing average per variant. So you have two options, and both have a cost.

Option one is a single threshold for the whole catalogue. Take a candle selling twelve units a day with a twenty-one day lead time. Its reorder point is somewhere above two hundred and fifty units. Now take a brass stand selling four units a month from the same supplier. Its reorder point is single digits. A store-wide threshold of ten alerts the candle roughly three weeks too late and alerts the stand on a schedule that means nothing.

Option two is a per-variant threshold in a metafield, with a branch or a condition reading it. That is accurate on the day you set it. Then velocity drifts, a product gets featured, your supplier's lead time stretches from fourteen days to thirty, and the numbers are stale with nothing to tell you so. Maintaining two hundred metafields by hand is not automation, it is a spreadsheet with extra steps.

Limit two: it fires again on every sale

The trigger is "quantity changed". The condition is "below ten". Once a variant sits at nine, every subsequent order re-runs the workflow, re-passes the condition, and sends another email. Sell nine more units, get nine more emails. In a busy week with forty SKUs under threshold, you get a stream of mail that all says the same thing.

That is the real failure mode, and it is worse than silence. An alert channel you have learned to skim is an alert channel that will not stop you missing a reorder window on the one SKU that mattered.

The usual workaround is tag state. When the alert fires, add a tag such as low-stock-alerted to the product, and add a condition so the workflow only sends when that tag is absent. Then build a second workflow that removes the tag when inventory climbs back above the threshold. It does work, with three caveats worth knowing before you commit:

  • Tags live on the product, not the variant. A product with six sizes shares one tag, so the first size to dip silences the other five.
  • If the recovery workflow ever fails to fire, that SKU goes permanently quiet and nothing tells you.
  • You are now maintaining two workflows and a tag convention to approximate "tell me once".

When the free route is the right answer

If you run thirty SKUs with steady velocity, one supplier, and a lead time you could recite from memory, Flow plus one typed number is enough. Same if you only want a backstop on three hero SKUs you already watch. Do not pay for software to do a job you were going to do anyway.

It stops being the right answer when the threshold should differ per SKU, should move as the store moves, and should speak once per crossing rather than once per sale. At that point you are not missing a feature, you are missing a calculation and a piece of state, and Flow holds neither.

What a dedicated reorder alert does instead

Restoc is built for exactly the two gaps above, and it is on the waitlist now rather than launched, so treat this as what it is built to do.

It installs through Shopify OAuth and pulls inventory levels and sales history via webhooks plus a scheduled sync job. It is a web app, with no mobile app and no browser extension. The reorder point engine takes a sales velocity window you choose, seven, fourteen or thirty days, and your lead time per SKU, and produces the threshold rather than asking you to type it. Alerts go to email or a Slack webhook when a SKU crosses its reorder point, delivered through an idempotent background job, which is the engineering way of saying one alert per crossing and not one per order. The dashboard shows current stock, days of inventory remaining, and reorder status per active SKU, and a weekly report lists everything below its reorder point with a suggested order quantity, viewable in-app and exportable as CSV. The free trial runs 60 days and is built so at least one full weekly reorder cycle completes before the first charge, because a reorder tool you have not seen complete a cycle is a tool you cannot judge.

If you want the maths behind the threshold before you decide which route to take, work your own numbers first. The method is the same whether a workflow or an app applies it.

Is Shopify Flow free?

Flow is Shopify's own automation app and carries no separate charge. Availability depends on your Shopify plan, so check the app listing in the Shopify App Store before building a process around it.

Can Shopify Flow calculate a reorder point for me?

No. A Flow condition compares inventory to a constant or to a metafield value you maintain yourself. It does not read order history or compute average daily sales, so it cannot derive a threshold from velocity and lead time.

How do I stop Flow from emailing me about the same SKU every day?

The common workaround is to tag the product when the alert fires, condition the workflow on that tag being absent, and build a second workflow that removes the tag when stock recovers. It works, but tags are product-level rather than variant-level, so products with multiple sizes share one state.

Can Flow send low stock alerts to Slack instead of email?

Yes, Flow has a Slack action, so the same trigger and condition can post into a purchasing channel. The two limits are unchanged: the threshold is still a number you typed, and the workflow still re-fires on every inventory change.