> ## Documentation Index
> Fetch the complete documentation index at: https://codebeans-cb-notifylyst.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# A shopper gets a restock alert

> From the sold-out product page to the purchase, in the shopper's shoes.

**Who:** a shopper on your store · **Goal:** buy a product that is sold out today

```mermaid theme={"system"}
flowchart LR
  A[Sold-out product page] --> B[Notify me form] --> C[Confirmation in the form] --> D[Waiting] --> E[Restock alert] --> F[Product page] --> G[Purchase]
```

**1. The shopper finds a sold-out product**

On a product page, the shopper picks a variant that is sold out. Notifylyst shows a **Notify me
when available** button — where you placed it in the theme editor, or as a tab on the edge of the
screen if you turned on the floating button. Both appear only while the selected variant is sold
out, and disappear when the shopper picks one that is in stock.

![A product page with a sold-out variant selected and the Notify me when available button below the Sold out button.](https://mintcdn.com/codebeans-cb-notifylyst/helB_Y1ZQRw5r3Uo/images/journey-shopper-01-sold-out.png?fit=max\&auto=format\&n=helB_Y1ZQRw5r3Uo\&q=85\&s=538d479d03d1e341788b5ef2a3af1962)

**2. They open the form**

The button opens the sign-up form for the selected variant. It shows:

* the headline **NOTIFY ME WHEN AVAILABLE** and **We'll notify you when available.**
* the product and a variant list — **only the sold-out variants**, each marked **(Sold Out)**
* one tab per channel you have switched on (**Email**, **Web Push**, **SMS**, **WhatsApp**)
* **Quantity required**, set to 1
* any [custom fields](https://codebeans-cb-notifylyst.mintlify.site/app/guides/sign-up-form-fields.md) you added
* the **Notify me** button and **We don't share your information with others.**

A logged-in customer finds their email already filled in.

![The Notify me when available form open over the product page, with the variant picker, channel tabs, email field, quantity and the Notify me button.](https://mintcdn.com/codebeans-cb-notifylyst/helB_Y1ZQRw5r3Uo/images/journey-shopper-02-popup.png?fit=max\&auto=format\&n=helB_Y1ZQRw5r3Uo\&q=85\&s=dee381001dd50ab6dd9a0d8e53445a77)

**3. They fill it in**

The form checks the answers before anything is sent. Typical messages:

| Problem | Message the shopper sees |
| - | - |
| Email not valid | **The email address you entered is invalid** |
| Phone missing or not valid | **Phone number is required.** / **The phone number you entered is invalid.** |
| Quantity not a number above zero | **Quantity must be a number greater than zero.** |
| A required custom field is empty | **This field is required.** |

![The sign-up form with an incomplete email address and the message The email address you entered is invalid.](https://mintcdn.com/codebeans-cb-notifylyst/helB_Y1ZQRw5r3Uo/images/journey-shopper-03-invalid-email.png?fit=max\&auto=format\&n=helB_Y1ZQRw5r3Uo\&q=85\&s=318d82c63b925fec3c4ea45372be37fa)

For **web push**, the browser asks for permission. If the prompt doesn't appear within a few
seconds, the form says: *Choose "Allow" in your browser's notification prompt. Don't see one? Click
the bell icon in the address bar.* On an iPhone, push works only after the shopper adds your store
to their Home Screen.

**4. They see the confirmation**

The form shows **Your notification has been registered.** and closes itself after a moment.

![The sign-up form showing the green confirmation Your notification has been registered.](https://mintcdn.com/codebeans-cb-notifylyst/helB_Y1ZQRw5r3Uo/images/journey-shopper-04-success.png?fit=max\&auto=format\&n=helB_Y1ZQRw5r3Uo\&q=85\&s=ed62b18e926b1a66dfefe39f27ae57dd)

> [!NOTE]
>
> **No confirmation email is sent.** The message in the form is the shopper's only confirmation.
> The sign-up appears straight away in **Analytics → Sign-ups** and on your **Dashboard**.

**5. The product comes back**

When stock for that variant goes above zero in Shopify, Notifylyst works out who to alert:

* shoppers still waiting for that variant;
* if your [delivery rule](https://codebeans-cb-notifylyst.mintlify.site/app/setup/delivery-rules.md) is **Wait for the full quantity**, only those
  whose requested quantity is now in stock;
* if you filter by location, only those whose locations have the stock;
* minus anyone who unsubscribed, whose email bounced, or who already bought it.

The product must be **Active** and published to your online store. If you set a draft product to
Active later, the waiting shoppers are alerted then.

**6. The alert arrives**

The first message goes out straight away, on the channel the shopper chose. Follow-up messages
(up to four in total, depending on your plan) go out after the delays you set — a delay of a day or
more lands in the shopper's local morning.

![The default restock email in the Notifications live preview: the subject, the store name, the product image and the message that it is now available.](https://mintcdn.com/codebeans-cb-notifylyst/helB_Y1ZQRw5r3Uo/images/journey-shopper-05-email.png?fit=max\&auto=format\&n=helB_Y1ZQRw5r3Uo\&q=85\&s=c1a1e8fd1f18795a80ff0dcc9ef81e37)

Every email ends with **Manage Notifications** and **Unsubscribe** links. The message uses the
shopper's storefront language when you have a translation for it.

**7. They click and buy**

The button takes the shopper to the product page with their variant selected. If they buy:

* the order counts as **Direct** when it comes through the alert link, or **Assist** when the
  same shopper (matched by email, phone or customer account) buys after getting an alert;
* any follow-up messages still waiting are cancelled, so they aren't reminded about something they
  own.

The sale appears on your **Dashboard** and in **Analytics → Successful orders**. A cancelled order
removes its revenue again; a refund lowers it.

## What happens behind the scenes

Shopify tells Notifylyst whenever inventory changes, so there is nothing to schedule. Before each
message goes out, Notifylyst checks again that the app is still installed, the channel is still on,
that step is still on your plan, and the variant can still be bought. If any of these fails, the
message is skipped.

## Where it can go wrong

| Symptom | Why | Fix |
| - | - | - |
| No button on a sold-out product | The **Notifylyst Restock Widget** app embed is off | Turn it on: [Storefront widget](https://codebeans-cb-notifylyst.mintlify.site/app/setup/storefront-widget.md) |
| No button on a product with zero stock | The variant is set to continue selling when out of stock (pre-order), so Shopify treats it as available | Expected — shoppers can still buy it |
| **You have already registered for a notification for that item.** | The shopper is already waiting for that variant | Nothing to do |
| **This alert option isn't available right now. Please choose another.** | That channel was switched off after the page loaded | Turn the channel on, or the shopper picks another |
| **Too many sign-up attempts. Please wait a minute and try again.** | More than 5 sign-ups a minute from one contact | Wait a minute |
| The form spins and nothing happens | A server error; the form shows nothing | Try again; contact support if it repeats |
| Shopper chose WhatsApp and heard nothing | WhatsApp alerts aren't being sent yet | Ask shoppers to use another channel until WhatsApp is live |

![The sign-up form showing You have already registered for a notification for that item.](https://mintcdn.com/codebeans-cb-notifylyst/helB_Y1ZQRw5r3Uo/images/journey-shopper-06-already-registered.png?fit=max\&auto=format\&n=helB_Y1ZQRw5r3Uo\&q=85\&s=993b879464d9975e816a1fa416c885e8)

> [card] [A shopper manages their alerts](https://codebeans-cb-notifylyst.mintlify.site/journeys/shopper-manage-alerts.md)
>
> Unsubscribe, the Manage page, and turning alerts back on.

> [card] [Message templates](https://codebeans-cb-notifylyst.mintlify.site/app/guides/message-templates.md)
>
> Change the wording, the steps and the delays.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.