How to set up back-in-stock alerts on Shopify
What to put on the page, what to get right at variant level, and how to know the alerts actually arrive.
A back-in-stock alert is a small feature with a large failure surface. The part everyone builds — a form that takes an email — is the easy half. The half that decides whether it earns anything is what happens between the sign-up and the message: which variant the shopper actually wanted, whether the stock is still there when the message goes out, and whether the message arrives somewhere they read.
1. Decide what a sign-up is attached to
Attach it to the variant, not the product. A shopper waiting for size 42 in black does not want to hear that size 38 arrived — they will open the message, find the thing they wanted still unavailable, and treat the next one as noise. On a product with five sizes and four colours, product-level alerts are wrong nineteen times out of twenty.
This also changes what you should store: the variant id, the channel the shopper chose, and when they asked. Nothing more is needed, and everything more is a privacy question you will have to answer later.
2. Put the form where the shopper already is
On Online Store 2.0 themes, this is a theme app block you place in the theme editor. Two placements work in practice:
- Below the buy button. Safe with every theme, and the shopper sees it after the price and options, where they expect the decision to happen.
- In place of the Sold out button. Stronger, because a disabled grey button is dead space. Make sure it only replaces the button while the selected variant is unavailable.
One trap worth knowing: many themes disable sold-out options in the variant picker. The shopper cannot select the colour they want, so a form that follows the selected variant can never appear for it. Either the app unlocks those options, or it offers them itself — otherwise the sold-out variants that matter most are unreachable.
3. Ask for the smallest amount of information
Email, or a phone number if you send over WhatsApp, and nothing else. Most stores do not have customer accounts on the product page, so asking for a name buys you a personalisation token and costs you sign-ups. If your market reads WhatsApp more than email, offer both and let the shopper choose.
Add a consent checkbox if you sell into the EU or UK, and use double opt-in if you plan to market to those addresses later. If the alert is the only message you will ever send, a single opt-in with a clear unsubscribe is proportionate.
4. Detect the restock properly
Shopify tells you about inventory through inventory_levels/update, which fires per location whenever available quantity changes. That covers most restocks. It does not cover a variant that becomes purchasable without an inventory movement — someone switching it to “continue selling when out of stock”, or turning tracking off. Listen to products/update as well, or those restocks pass silently.
Two more details that matter once you have volume:
- Multi-location. Quantity at one warehouse is not availability for the shopper. What you care about is whether the variant can be bought.
- Duplicate and out-of-order webhooks. Shopify can deliver the same event twice. If one delivery equals one message, some shoppers get the alert twice.
5. Re-check availability at the moment of sending
This is the rule most homegrown implementations miss. A restock of six units and a waitlist of two hundred means the first messages sell the stock out again. If your queue keeps sending, everyone after the first few gets an alert for something that is gone — the worst message you can send, because it was invited.
Check availability again as each message goes out, send in the order people joined, and stop when the stock stops.
6. Test it like a shopper, not like a developer
Before you rely on it, do the whole loop yourself:
- Sign up on a genuinely sold-out variant, with your own email or number.
- Add stock to that variant in Shopify admin.
- Wait for the message, then tap the link.
- Check it opens that exact variant, pre-selected, not the collection page.
If the message does not arrive, the answer is almost always in a delivery log with the provider’s reason attached. A log that says “failed” tells you nothing; one that says the WhatsApp template is approved in a different language tells you exactly what to fix.
7. Know what to measure
Sign-ups are a vanity number on their own. The three that matter are: alerts delivered, clicks back to the product, and orders placed after an alert. The last one is what tells you whether the waitlist is a revenue channel or a mailing list.
Common reasons alerts fail silently
- The form is on the page but the theme hides sold-out options, so nobody can reach it.
- A theme update replaced the theme and the block went with it.
- Alerts are attached to products, so shoppers stop opening them.
- The message links to the collection page and the shopper gives up.
- WhatsApp template approved in
arwhile the app sendsar_EG. - No availability re-check, so half the list gets an alert for stock already gone.
Zoda Notify handles all of the above: variant-level waitlists, placement in your theme, email and WhatsApp, availability re-checked at send time, and a delivery log that explains failures in plain words.
