Reordering automatically when stock runs low
Most merchants asking for automatic reordering assume the hard part is the trigger. It is not — Shopify Flow watches inventory levels for free. The hard part is everything after the alert: how many to order, from which supplier, and the purchase order itself, which no app can create at all.
The alert is the easy half, and it is free. Shopify Flow triggers on inventory quantity, so "tell me when this drops below ten" is a workflow you can build yourself this afternoon at no cost. If that is all you wanted, stop reading and go build it.
What does not exist is the purchase order at the other end. No app, no workflow and no integration can create one in your Shopify admin: Shopify's API has no way to make a purchase order, which is why its own migration guidance points at an outside system for ordering. One thing did change in autumn 2026 and it is worth knowing so nobody sells it to you as more than it is: since Shopify's October 2026 API version an app can read your existing purchase orders. Reading is not creating, so nothing below changes — but "there is no purchase-order API at all" has stopped being the right way to say this. What software can put there is the incoming transfer Shopify tells integrators to use instead, and that difference is the whole of this page. So every "automatic reordering" promise ends somewhere short of the purchase order screen, and the honest question is exactly where.
What Shopify gives you
Thresholds, as numbers you keep. There is no native minimum or maximum inventory level, and Shopify says what to do instead: "Set custom minimum and maximum thresholds per variant using custom metafield definitions." You create the fields, you fill them in, and they sit there.
An alert, from Flow. Flow's triggers cover inventory quantity, so it can watch a level and email you, tag the product, or add it to a collection when it crosses.
A draft, if you ask each time. Shopify's own migration guidance mentions that "Sidekick can help draft a transfer or purchase order that respects your minimum and maximum limits." Note the shape: you ask, it drafts, you approve. It is help with the typing, not a thing that runs.
Receiving, properly. Once an order does exist, the admin handles it well — line-by-line accept, reject or cancel, and barcode scanning.
What Stocky did that this does not
Worth naming, because it is what the merchants asking this question remember. Stocky calculated a reorder point for you: "Reorder points are calculated using the lead time and number of sales per day." It also held minimum and maximum stock values and minimum order quantities per supplier.
Shopify's replacement holds none of that. The numbers move into metafields, and Shopify is precise about what metafields are: "These metafields store information for your reference." For your reference — nothing runs on them unprompted, though Sidekick will read the minimum and maximum when you ask it to draft.
The numbers are stored and nothing happens? Describe what should happen instead →
Where it actually stops
Three gaps, in the order you hit them.
1. The decision is not in the trigger. "Stock is below ten" is a fact. "Order sixty, from the supplier with the shorter lead time, rounded up to their case pack" is a decision, and it depends on rows Shopify has nowhere to put: your lead times, your case packs, your minimum order quantities, your second supplier. Shopify's own answer for those is variant metafields or metaobjects — again, for your reference.
2. There is no purchase order to create. This is the part worth being exact about, because an integrator will otherwise spend a week looking for it:
- Purchase orders became readable in Shopify's October 2026 API version.
InventoryPurchaseOrderand theinventoryPurchaseOrderslist are there, behind an access scope your app asks you for — and Shopify's reference states a second condition beside it: "The user must have permission to view purchase orders." Until then this was a preview on the unstable version only, which is what this page said, correctly, until Shopify shipped it on 2 October 2026. - Nothing creates one. That is the half worth checking against a list rather than assuming, so it was: of every mutation in the October 2026 version, not one is named for a purchase order or for a supplier, and the nineteen that come closest are all transfers and shipments. Shopify's own reference page for
InventoryPurchaseOrderlists queries and no mutations at all. - Transfers and shipments are fully programmable — create, edit, mark ready to ship, receive line by line with an accepted or rejected reason. And a transfer does not have to come from one of your own locations: its origin can be left blank, which is Shopify's own way of recording stock arriving from outside. Its migration guide says so to anyone integrating a purchasing system — "Connect your ERP to Shopify's Transfers API to create an incoming transfer with a blank origin location" — with the supplier's order number in the reference field. Shopify's admin does the same thing itself: when you create a transfer from a purchase order, "the transfer sets your supplier as the origin."
So the ceiling for anybody — us, an app, your developer — is: work out what to order, send it to the supplier, and put an incoming delivery in your admin with the supplier on it, ready for your staff to receive with a scanner exactly like any other. What cannot be created is the purchase order screen — the supplier record, the per-line cost and the payment terms it carries have no home on a transfer beyond a reference. If you want that document too, a person types it.
3. Nothing native closes the loop. Flow runs on its own and stops at the alert: it cannot decide the quantity, and it has no action that creates a purchase order — there is no call to make one with. Sidekick moves only when you ask. Neither carries the decision through while you are asleep, which is the thing people actually want.
Before you buy an app that promises this
Every app faces the same wall you do, so the question is never whether it can create a purchase order in your admin — it cannot — but which part of the job it takes off you. Three things are worth asking before money changes hands.
Where does the order end up? Inside the app, as its own record, or in your Shopify admin? If it is the app's own ledger, your purchase history lives there and leaves with it. Merchants who came off Stocky have just learned what that costs: historical purchase orders cannot be imported into Shopify, so a second migration later starts from the same place.
What does it do with your numbers? Lead times, case packs and minimum order quantities have no home in Shopify, so the app has to keep them somewhere. Ask whether you can get them out again, and in what format.
What happens when it decides? An email to you, an email to the supplier, or a draft you approve? All three are legitimate. What none of them is, is a purchase order appearing in your admin by itself.
Building the free version yourself
If your situation is simple — one supplier per product, a level you already know, and you are happy to type the order — the native route is genuinely enough, and it costs nothing:
- Put your minimum level on the product as a metafield, so the number lives with the thing it describes rather than in your head.
- In Shopify Flow, trigger on the inventory quantity changing, compare it against that number, and send yourself an email when it drops below. Store the level as a whole number — a text metafield compares as text, which is how these workflows quietly stop matching.
- When the email arrives, create the purchase order in the admin and receive it with a scanner when the stock lands.
What you are doing in step 3 is the work no automation can take from you today. Everything sold as "automatic reordering" is a way of making step 3 shorter — not a way of removing it.
Which route is yours
| What you want | Where it comes from |
|---|---|
| "Tell me when this runs low" | Shopify Flow, free |
| Minimum and maximum levels stored per product | Native metafields — you fill them in |
| A draft purchase order or transfer that respects those limits, on request | Sidekick, in your admin |
| Receiving, counting, barcode scanning | Native purchase orders and transfers |
| "Work out how much to order from whom, and act on it" | Not native — built for you |
| An incoming delivery waiting in your admin, ready to receive | Programmable — Shopify's own route for integrations |
| The purchase order document itself, created automatically | Does not exist for anyone — the API can read purchase orders, not make them |
What Shopivibe does
You describe it the way you would to someone who knows your shelves: "When this drops below the level I set for it, work out how many to order from the supplier with the shorter lead time, round it up to their case pack, and send them the order — and tell me you did."
What then happens is the part this page will be exact about, because the last row of that table applies to us too.
- Your levels, lead times, case packs and minimum order quantities live as rows you keep in your own admin — one set per supplier — because they exist nowhere in Shopify and a rule has to read them from somewhere. (They are the same rows a second supplier for one product needs.)
- The rule runs when the inventory level actually changes, not on a nightly sweep that finds out late. A product is known to us once your store has told us about it — created, edited, sold, or its stock moved — so your existing lines are loaded for you as part of the build, and the rule covers them from its first run rather than from their next delivery.
- The outcome is the order with your supplier, and the incoming delivery waiting in your admin so your staff receive it like any other — not a purchase order document, because there is no such thing to create. Receiving happens where it already happens.
That is the order placed and the delivery waiting to be received — everything short of the purchase-order screen, which Shopify's API offers nobody. The difference between it and Flow is not the alert; it is that the decision — how many, from whom — is made and acted on rather than left on your desk with a notification attached.
Two things to say plainly: your levels, lead times and case packs are set up with you by a person, from whatever you keep them in today; and the day Shopify lets anything create a purchase order — it already lets an app read one, as of October 2026 — this page changes and so does what we do.
Shopivibe solves the problem in your store and keeps what it adds maintained, including when Shopify changes something underneath. If the app cannot complete your request on the spot, somebody at Shopivibe takes it on straight away and has it working in your store within 24 hours, included in the plan at no extra charge. Shopivibe is free during early access, with 3,500 credits included. Credits beyond the included 3,500 cost $0.06 each.
Know your levels but nothing acts on them? Describe the rule you actually wanted →
Checked against Shopify's documentation and the App Store on 20 September 2026.