Back in stock notification without an app on Shopify
No, Shopify has no built-in restock notification. Here is exactly what you can build for free with Flow and Shopify Email, where it dead-ends, and what the popular forum recipe gets wrong.
08/02/2026

No, Shopify does not have a built-in back in stock notification you can just turn on. What you can build with native tools is a workflow that tags a customer when an item restocks and lets you email that tag as a segment, and it has one real dead end you need to know about before you start.
What actually exists natively
Shopify Flow, the store automation tool, ships a trigger called Product variant back in stock. It starts a workflow when a variant’s inventory goes from 0 or less up to 1 or more. For it to fire, the product’s Inventory tracked setting has to be turned on, otherwise Shopify has no zero to watch for.
Flow itself is free, but it is not on every plan. Shopify’s documentation lists it as available on Basic, Grow, Advanced, and Plus. If you are on Shopify’s Starter plan, this whole native path is not open to you and you can skip straight to an app.
That is the entire native toolkit: a trigger that fires on restock, and a set of actions you can attach to it. The trigger part is solid. What you attach to it is where things get interesting.
The honest step by step
Here is what building this actually looks like, assuming you are on a plan with Flow:
- In Shopify Flow, create a new workflow and choose the Product variant back in stock trigger.
- Make sure Inventory tracked is on for the products you care about, or the trigger will never fire for them.
- Add an action. This is the part where most people’s plan runs into a wall, because the obvious action, sending an email to the customer who asked, is not something Flow can do.
Where it dead ends
Flow has a Send internal email action, and it is tempting to assume that is your notification. It is not built for that job. Shopify’s own documentation says you “can’t use variables to customize the email address to which the message is sent.” In other words, the recipient is fixed when you build the workflow. You cannot pipe in “whoever signed up for this variant” as a variable, because Flow has no concept of a per customer recipient list here.
That same page is direct about what this action is for: “The Send internal email action is best used to send emails to staff. To automate emails to customers, create a marketing automation.” That is the whole story. Flow can tell your team an item is back. It cannot, on its own, tell the customer who asked for it. This is the point where most people building the native path from scratch hit a wall they did not see coming, because everything up to here felt like it was working.
The workaround that does work, and its cost
There is a real path around the dead end, and it uses tools Shopify already gives you. Flow has an Add customer tags action. You can have the back in stock trigger add a tag to the customer’s profile, something like restock-notify-blue-medium-hoodie. customer_tags is a native filter Shopify’s customer segmentation supports, so you can build a segment out of anyone carrying that tag. Then you send that segment an email through Shopify Email.
Shopify Email gives you 10,000 free emails a month on Basic, Grow, Advanced, and Plus, and that allowance does not roll over. If you do not use it, you lose it, but for most stores running this by hand that ceiling is not the limiting factor. The real cost is your own time: you need to build a separate Flow workflow and a separate tag per product variant you want to track, and a separate Shopify Email send (or a filtered segment) each time you actually restock. It works. It is just work, every single time, done by a person.
What the popular recipe gets wrong
If you search this question, you will most often find a version of this recipe: capture the customer’s email with Shopify Forms using a hidden field for the variant ID, tag the customer with Flow, then email the segment with Shopify Email, capped at 100 records per run. It is a reasonable-sounding plan and it has three real problems.
First, Shopify Forms has no hidden field type. Its documented custom field types are single line text, dropdown, radio buttons, multi-line text, multiple choice, date, number, and file upload. There is nothing that silently captures a variant ID behind the scenes. If you want the signup tied to a specific variant, that capture has to come from custom theme code, not the Forms app.
Second, the “100 records per run” cap is stated wrong. Shopify’s own guidance says the 100 object cap applies to Get data actions inside a workflow, not to an entire workflow run. A For each loop has its own separate documented limit, 1,000 items, which is a different number for a different part of the workflow. If you are budgeting for a big restock based on “100 per run,” you are working from the wrong ceiling.
Third, and this is the one that actually breaks the plan, the recipe assumes Flow emails the customer directly. It cannot, for the reason above. Skipping the tag-plus-segment step and trying to fire a direct customer email from Flow is the single most common way this build stalls out, because it looks like it should work right up until you go to test it.
The recipe is a genuine attempt at a real problem, and the first two points are close enough to right that they are easy to pass along. The third is the one that costs you an afternoon, because everything looks fine until you go to test it.
When the native path is genuinely the right call
If you have a handful of products, restock once or twice a month, and do not mind building a tag and a segment by hand each time, this is a completely fine answer. You are not leaving anything meaningful on the table by skipping an app. A small catalog with occasional restocks does not need automated variant level tracking or send-by-send auditing, it needs someone to remember to hit send, and that someone is you. There is no shame in that being the whole system. Plenty of stores should just stop here.
When it stops being worth it
The math changes once you have more products, restocks that happen weekly instead of monthly, or variants where a specific size or color matters more than the product as a whole. At that point you are maintaining a separate workflow and tag per variant, remembering which segment maps to which restock, and building the send by hand every time inventory ticks over. And if a customer says they never got their email, you have no record to check against, since the native tools do not give you a per subscriber log of what was sent and when. If adding the notify button is already something you are handling with an app, or you need alerts tracked down to the specific variant rather than the whole product, that is usually the point where doing this by hand costs more time than it saves.
The disclosure
We build Kelso, a back in stock app for Shopify with a free plan. If the native path above covers what you need, genuinely, use it, it costs nothing and it works. If you get to the point where you are maintaining workflows by hand for every restock, you can see what an app-based version looks like at apps.shopify.com/kelso-back-in-stock-alerts.