WhatsApp back-in-stock alerts for Shopify: how they actually work

Templates, approval, providers and the mistakes that leave an approved template unable to send a single message.

Updated September 2026 · 7 min read

In a lot of markets, an email back-in-stock alert is a message nobody reads. WhatsApp is where the shopper already is, and a restock alert is exactly the kind of message they asked for. The mechanics, though, are unlike email in every way that matters — and most of the failures happen before a single message is sent.

You cannot just send a message

WhatsApp does not allow a business to start a conversation with free text. Any business-initiated message must use a template that WhatsApp approved in advance: fixed wording with numbered placeholders — {{1}}, {{2}} — that you fill in at send time. A back-in-stock alert is business-initiated, so it always needs a template.

Templates are also classified. A restock alert promotes a purchase, so it is marketing, not utility. Submitting it as utility gets it re-categorised or rejected, and marketing templates are the ones subject to per-message pricing and to the recipient’s marketing opt-out.

Choosing how to send

There are three practical routes, and the differences are operational, not technical:

  • Meta Cloud API — direct. Cheapest per message and the most control, but you complete Business verification yourself: company documents, reviewed by Meta, usually days and sometimes weeks.
  • Twilio — fastest to start, sandbox available for testing, higher per-message cost. Templates live in Twilio’s Content Editor and are referenced by a content id.
  • YCloud — a middle ground, usually cheaper than Twilio with a similar setup.

Whichever you choose, you need a phone number registered as a WhatsApp sender with that provider. That registration — not the code — is usually the slowest part of going live.

The five mistakes that stop an approved template sending

These are the ones worth knowing in advance, because each looks like the app is broken rather than the template being wrong.

1. The language code does not match

WhatsApp matches a template by name and language together. A template approved as ar_EG is invisible to a send configured for ar, and en is not en_US. The error you get back is a generic “template does not exist”, which sends people looking for a template that is sitting right there.

2. A variable in the header

Headers can hold a variable, and restock alerts never fill one. The template is approved, looks perfect in WhatsApp Manager, and every message is rejected for a missing parameter. Keep the header as plain text, or remove it.

3. The wrong number of body variables

Send three values to a template that declares two and WhatsApp refuses the message. This bites hardest when a merchant rewrites their template — dropping the customer name, say — without telling the app that the order of variables changed. Most stores have no customer accounts, so a “name” is usually an email fragment anyway; a template without one reads better.

4. A button that cannot become the product link

A tappable button is the whole point: the shopper should land on the exact variant. WhatsApp only lets the end of a button URL vary, so the button must be a dynamic URL of your domain plus a placeholder — https://your-store.com/{{1}} — and the app appends the product path. Put a path in front of the placeholder, such as /products/{{1}}, and every alert links to /products/products/…. A static URL button is worse still: it opens the same page for every product.

5. Non-Latin product names in the link

An Arabic product name gives an Arabic URL handle. Sent as-is, WhatsApp rejects the whole message — “URL parameter generates an invalid URL”. The path has to be percent-encoded before it goes into the button.

Opt-out is not optional

A shopper replying STOP must stop receiving messages, and it has to be honoured automatically rather than by someone reading an inbox. That means handling inbound webhooks from your provider, verifying their signature, and suppressing that number from then on. Getting this wrong risks your sender’s quality rating, and the rating decides how many messages you are allowed to send at all.

What a good restock message looks like

Short, in the shopper’s language, and honest about why they are hearing from you:

Good news — the item you asked about, Merino Runner (Black / 42), is back in stock at Acme Supplies. Stock is limited, so it may not last. You are receiving this because you asked to be told when it returned.
[ Shop now ]

Note what is missing: no emoji storm, no discount code, no second product. The message has one job, and the button does the rest.

What it costs

WhatsApp charges per conversation, priced by country and category, and marketing conversations cost more than utility ones. Egypt, the Gulf and India are inexpensive relative to Europe or North America. Whatever the rate, compare it against the order value of the item being restocked — for a product worth tens or hundreds, a message that reliably gets read is rarely the expensive part.

Zoda Notify supports Meta Cloud API, Twilio and YCloud, reads your approved templates directly from your account, tells you which of the problems above applies to each one, and previews the message with a real product from your store before you save. See also: how to set up back-in-stock alerts on Shopify.