> For the complete documentation index, see [llms.txt](https://the-wishlist-documentation.gitbook.io/the-wishlist-documentation-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://the-wishlist-documentation.gitbook.io/the-wishlist-documentation-docs/shopify-general/how-stock-and-price-notifications-work.md).

# How Stock & Price Notifications Work

This guide explains when The Wishlist Co automatically sends a customer a **Low Stock**, **Back in Stock**, **Notify Me** or **Price Drop** notification. It also covers how these rules behave if you sell internationally with **Shopify Markets**.

***

### 1. The basics

#### Who can receive a Wishlist notification

A customer is only considered for Wishlist Low Stock, Back in Stock or Price Drop if they have the product variant (the specific size, colour, etc.) on a wishlist, and that item is:

* not deleted,
* not already purchased,
* not a notify-me item,
* not a pre-release / Coming Soon item.

**Notify Me** is separate. It covers customers who used your Notify Me button on an out-of-stock variant. Section 4 explains those rules.

#### Consent and limits

<table><thead><tr><th width="180.28125"></th><th>Low Stock</th><th width="162.3515625">Back in Stock</th><th>Price Drop</th><th>Notify Me</th></tr></thead><tbody><tr><td>Respects marketing opt-out</td><td>Yes</td><td>Yes</td><td>Yes</td><td><strong>No</strong> (see below)</td></tr><tr><td>Respects communication suppression</td><td>Yes</td><td>Yes</td><td>Yes</td><td><strong>No</strong></td></tr><tr><td>Counts towards item notification limits</td><td>Yes</td><td>Yes</td><td>Yes</td><td><strong>No</strong></td></tr></tbody></table>

* **Notify Me ignores marketing opt-in.** The customer asked for this specific alert, so it is treated as a requested service message, not marketing. Coming Soon requests are treated the same way.
* **Notification limits** can be set per notification type and overall. Limits are counted **per wishlisted item**, for the life of that item. For example, with a Price Drop limit of 2, a customer gets at most two price-drop notifications about any one wishlisted item. The limits don't reset over time.

#### Grouping and timing

* Stock and price changes are picked up within seconds for Low Stock, Back in Stock, Notify Me and (for stores not on Shopify Markets) Price Drop.
* Low Stock, Back in Stock and Price Drop are then sent after the **delay configured on that notification**. Several items that qualify for the same customer and type in that window are **grouped into one message**.  For example, if you have a price adjustment that may take 10 minutes to process, you can group multiple price drop events into a single email rather than send separate emails.
* Notify Me is sent straight away.
* For stores using Shopify Markets, market prices are checked **every 4 hours** (see section 6).

#### How stock is counted

All stock rules use **units on hand** (Shopify's available quantity), added up across the stock locations that count for your store. If a location shows negative stock (for example, it has been oversold), it counts as **0**. It doesn't reduce stock held at your other locations.

| Location rule      | What counts towards stock                 |
| ------------------ | ----------------------------------------- |
| **None** (default) | All locations                             |
| **Include only**   | Only the locations you nominate           |
| **Exclude**        | All locations except the ones you exclude |

> **Example:** Your online store fulfils from "Online Warehouse" only, but you also have retail stores in Shopify.   Set **Include only** to "Online Warehouse". Stock arriving at a retail store will then not trigger a Back in Stock notification for online shoppers.  NOTE: In the current platform release, we need to make this change for you.  In future releases you can configure the fulfilment rules yourself

The location rule applies to **all** notification types and, for Shopify Markets stores, to **every market** (see section 5).

**What a stock notification promises.** Our stock notifications are based on physical units on hand. Back in Stock means units have actually arrived at a location that counts. It doesn't mean the item can be bought through Shopify's "continue selling when out of stock" setting or through pre-orders.

#### Your stock notification settings

Each stock notification is set up under your email integration in The Wishlist Co admin console. These settings apply to every store, with or without Shopify Markets.

<table><thead><tr><th width="191.546875">Setting (as shown in the admin console)</th><th width="78.90625">Low Stock</th><th width="90.953125">Back in Stock</th><th width="86.6484375">Notify Me</th><th>What it does</th></tr></thead><tbody><tr><td>Send … notifications</td><td>✓</td><td>✓</td><td>✓</td><td>Turns the notification on or off.</td></tr><tr><td>Minimum stock level</td><td>✓</td><td>✓</td><td>✓</td><td><p>The stock threshold.</p><ul><li>Low Stock: sends when stock falls to or below it.</li><li>Back in Stock: sends when stock rises above it.</li><li>Notify Me: sends once stock is above it.</li></ul></td></tr><tr><td>Consolidate … notifications for [N] minutes</td><td>✓</td><td>✓</td><td>–</td><td>The send delay. Items that qualify for the same customer during this window are grouped into one message.</td></tr><tr><td>Check stock before sending (labelled per notification, see below)</td><td>✓</td><td>✓</td><td>–</td><td>Checks stock again just before sending, and skips the notification if it no longer applies.</td></tr><tr><td>Maximum number of times to trigger … for each wishlist item</td><td>✓</td><td>✓</td><td>–</td><td>Your notification limit for that type. It's counted per wishlisted item, for the life of the item.</td></tr><tr><td>Send a reminder after</td><td>–</td><td>–</td><td>✓</td><td>One optional follow-up after the first Notify Me message.</td></tr><tr><td>Release Notify Me alerts in controlled batches</td><td>–</td><td>–</td><td>✓</td><td>Sends Notify Me in waves instead of all at once (see section 4).</td></tr></tbody></table>

"Check stock before sending" appears as:

* Low Stock: "Don't send low stock notification for out of stock items". The notification is skipped if the item has sold out (0 units) by the time it's sent.
* Back in Stock: "Send notification only if item was out of stock". The notification is skipped if stock has fallen back to or below your minimum stock level by the time it's sent.
* Price Drop: "Don't send price drop notification for out of stock items". The notification is skipped if the item is out of stock when it's sent.

Stock locations (Include only / Exclude). Which of your locations count towards stock (see "How stock is counted" above) is set up with us rather than in the notification settings. The rule applies to every stock notification and, for Shopify Markets stores, to every market.  In the current platform release, you need to tell us which locations to include or exclude.   In a future release, this will be a setting available to you.

***

### 2. Low Stock

**What it means:** a wishlisted variant is about to sell out.

**When it sends:** when a variant's stock **drops from above your Low Stock threshold to at or below it**, while still having at least 1 unit.

**Threshold:** The ***minimum stock level*** on your Low Stock notification settings. Low Stock is off if no threshold (or 0) is set.

**Rules:**

* It sends when stock *crosses into* low stock, not every time stock changes while low.
* It doesn't send when stock drops straight to 0. That's sold out, not low stock.
* If stock is replenished above the threshold and later falls back into low stock, it can send again. Your notification limits still apply.

**Examples** (Low Stock threshold = 3):

| Stock change         | Sends?          | Why                                            |
| -------------------- | --------------- | ---------------------------------------------- |
| 10 → 3               | Yes             | Crossed into low stock                         |
| 3 → 2                | No              | Already low                                    |
| 2 → 0                | No              | Sold out, not low                              |
| 5 → 0                | No              | Went straight to sold out                      |
| 2 → 12, later 12 → 1 | Yes (at 12 → 1) | Replenished, then crossed into low stock again |

***

### 3. Back in Stock (wishlist)

**What it means:** a wishlisted variant that was out of stock is available again.

**When it sends:** when a variant's stock **rises from at or below your Back in Stock threshold to above it**.

**Threshold:** The ***Minimum Stock Level*** on your Back in Stock notification settings. Back in Stock is off if no threshold (or 0) is set. "Out of stock" means at or below the threshold, which isn't necessarily 0.

**Rules:**

* **We remember each variant's last known stock level.** A notification only sends when the variant moves from a known out-of-stock level to in stock. The first time we see a variant's stock, we record it as a starting point and don't send.
* **New arrivals don't trigger it.** Back in Stock is only sent for a variant that has been in stock before. When a new or upcoming product is stocked for the first time, wishlisters aren't told it's "back". Use Notify Me or Coming Soon to tell customers about first availability.
* **Only real inventory movements trigger it.** Stock changes that come from your inventory feed (for example Shopify inventory updates) count. Our own catalogue syncs don't trigger Back in Stock, such as when a product is first imported or re-synced to us. This prevents false alerts when our data catches up with Shopify.
* If "check stock before sending" is enabled on the notification, stock is checked again just before sending. The notification is skipped if stock has dropped back to or below your Back in Stock threshold during the send delay.
* While a **controlled restock release** is running for a variant (see section 4), wishlist Back in Stock for that variant is held. Those customers are picked up by the release's wishlist follow-up instead.

**Examples** (Back in Stock threshold = 2):

| Previous stock                       | New stock                   | Sends? | Why                                           |
| ------------------------------------ | --------------------------- | ------ | --------------------------------------------- |
| 0                                    | 5                           | Yes    | Out of stock → in stock                       |
| 2                                    | 3                           | Yes    | At threshold (counts as out of stock) → above |
| 1                                    | 2                           | No     | Still at or below the threshold               |
| 4                                    | 9                           | No     | Was already in stock                          |
| (first time seen)                    | 6                           | No     | Starting point recorded                       |
| 0 (new arrival, never been in stock) | 20                          | No     | First arrival, not a restock                  |
| 0                                    | 5, from a catalogue re-sync | No     | Not an inventory movement                     |

***

### 4. Notify Me

**What it means:** the customer used your Notify Me button on an out-of-stock variant and asked to be told when it returns.

**When it sends:** when the variant's stock is **above your Notify Me threshold**. If no threshold is set, it sends when stock is above 0.

**Threshold:** set on the Notify Me notification setting only.

**Rules:**

* **One-off.** Each Notify Me request is sent once, then the request is closed. It isn't re-sent on a later restock unless the customer signs up again.
* **Optional reminder.** If a reminder is configured, one follow-up is sent after the set time, then the request is closed.
* **Unlike wishlist Back in Stock,** Notify Me compares the current stock level with the threshold. It doesn't need to see stock move from out of stock to in stock.
* **Not tied to marketing consent** (see section 1).

**Examples** (Notify Me threshold = 0):

| Situation                                                     | Sends?                                        |
| ------------------------------------------------------------- | --------------------------------------------- |
| Customer requests Notify Me at 0 stock; stock later becomes 4 | Yes, once                                     |
| Same customer, variant sells out and restocks again           | No, the request was already fulfilled         |
| Reminder configured for 24 hours                              | One reminder 24 hours after the first message |

#### Controlled restock releases (optional)

If you enable **controlled restock batching**, Notify Me customers are released in **waves** instead of all at once. The wave size and interval are yours to set. This avoids a small restock being oversubscribed by a large waitlist.

While a release is running:

* wishlist Back in Stock for that variant is held, and
* wishlisters are included in a follow-up after the Notify Me customers.

Controlled releases are off unless you turn them on. For Shopify Markets stores, releases run per region (see section 5).

***

### 5. Shopify Markets: stock

If your store uses Shopify Markets, stock notifications are based on the stock that can actually be **shipped to each customer's country**:

* Low Stock and Back in Stock are worked out **per region**.
* Notify Me is checked against each requesting customer's country.

#### What a "region" is

We read your **Shopify shipping setup** (delivery profiles and their shipping zones) to see which of your warehouses can ship **each product** to each country. Different products can use different shipping profiles, so the answer can differ by product. For a given product, countries served by the **same set of warehouses** form one region.

> **Example:** Your Shopify shipping zones are set up as follows:
>
> * **AU Warehouse** ships to Australia and New Zealand.
> * **US Warehouse** ships to the United States and Canada.
>
> That gives two regions:
>
> * *AU + NZ*, using AU Warehouse stock.
> * *US + CA*, using US Warehouse stock.

Things to know:

* **Warehouse-to-market allocation is controlled in Shopify**, through your shipping zones. There is no separate setting in The Wishlist Co. To stop a warehouse counting for a market, remove it from that market's shipping zone in Shopify.
* **Stock is combined within a region.** If two warehouses ship to a country, their stock is added together for that region. You can't set a warehouse priority, such as "use UK stock first, AU as backup".
* **Rest of World.** Countries that should be served from a general zone must be covered by a **Rest of World** shipping zone in Shopify. A country with its own zone always uses that zone's warehouses. It doesn't also use Rest of World.
* **Country level only.** Shipping zones set by state or province are treated at country level.
* **Changes to your shipping setup are picked up every 4 hours.**

#### How your location rule combines with Markets

Your **Include only / Exclude** location rule is applied **first, across the whole store**. Markets then narrows the stock that counts to the warehouses that can ship to the customer's country. A location counts for a region only if **both** are true:

1. it can ship to that country (from your Shopify shipping zones), **and**
2. it's allowed by your location rule.

> **Example:**
>
> * AU Warehouse and US Warehouse can both ship to New Zealand.
> * Your location rule is **Exclude: US Warehouse**.
>
> New Zealand customers are notified based on **AU Warehouse stock only**. A restock at US Warehouse never counts towards New Zealand, even though Shopify could ship from it.
>
> US customers get no stock-based notifications at all, because their only warehouse is excluded everywhere.

Because the location rule applies to every market, don't use it to express per-market intent. Use your Shopify shipping zones for that.

#### Per-region Low Stock and Back in Stock

Each region is judged on its own stock, against the same threshold. There are no per-market thresholds. Each customer only receives notifications for the region that serves their country.

> **Example** (Back in Stock threshold = 2):
>
> * AU Warehouse holds 50 units. US Warehouse restocks from 0 to 6.
> * **US and Canadian** wishlisters get a Back in Stock notification.
> * **Australian and New Zealand** wishlisters don't, because their region never went out of stock.
>
> Without Markets, the store total would have gone from 50 to 56 and no one would have been notified.

> **Example** (Low Stock threshold = 3):
>
> * The UK region drops from 5 units to 2.
> * UK wishlisters get Low Stock, even though your AU warehouse still holds 50.

#### How we work out a customer's country

We use the first valid country code from:

1. **the wishlist item**, meaning the country the shopper was in when they saved it or asked to be notified;
2. **the customer profile**;
3. **the customer's default address**.

An invalid value (for example "Australia" instead of "AU") is ignored, and we move on to the next one.

Because the country saved with each item comes first, updating a customer's profile doesn't move their existing wishlist items to a different market.

| Wishlist item country | Profile country | Country used |
| --------------------- | --------------- | ------------ |
| NZ                    | AU              | NZ           |
| (none)                | AU              | AU           |
| NZ                    | (none)          | NZ           |
| (none)                | (none)          | See below    |

**If we can't determine a customer's country,** or no warehouse ships the product to it, that customer **doesn't receive** per-region Low Stock or Back in Stock notifications. (Notify Me is handled differently. See below.)

**Check stock before sending.**  If you've turned on the "check stock before sending" option for a notification (see section 1), stock is checked again just before it's sent, and only stock that can ship to the customer's country counts:

* Back in Stock must still be above your minimum stock level.
* Low Stock must still have at least 1 unit.
* A customer is skipped if their country has no shipping coverage, or their country code isn't valid.

For Shopify Markets stores, we can also turn this check on for Back in Stock and Low Stock on your behalf, whatever your setting. With it on, a customer whose country we can't determine is also skipped. Talk to us if you'd like this.

**If your shipping data is temporarily unavailable** (for example, during a sync problem), per-region detection falls back to your store-wide stock (after your location rule) rather than missing notifications. The check just before sending, if enabled, still limits them to stock that can ship to each customer.

**Inactive markets.** Countries that are only covered by an inactive (for example, draft) Shopify market are treated as not served. Customers there don't receive stock notifications.

**Product availability per market isn't checked.** We don't currently check whether a product remains published in the customer's market when sending. In practice this rarely matters: shoppers can only wishlist products their market shows them, so the item was available in their market when they saved it. It can matter in two cases:

* **You remove a product from a market** after customers there have wishlisted it. Those customers can still receive notifications for it, and the product page will show as unavailable in their market.
* **A customer's country resolves to a different market** from the one they saved the item in (for example, their saved country has changed). They may be notified about a product their new market doesn't sell.

If you remove products from specific markets, bear this in mind.

#### Notify Me and Markets

Each Notify Me request is checked against the stock that can ship to **that customer's country**, after your location rule. It's sent once that stock is above your Notify Me threshold.

> **Example:** A New Zealand customer asks to be notified. Stock arrives only at your US Warehouse, which doesn't ship to New Zealand. The customer **isn't notified yet**. They're notified when stock that can ship to New Zealand arrives.

Differences from Back in Stock:

* **If we can't determine the customer's country,** Notify Me falls back to your store-wide stock (after your location rule), rather than never sending. This mainly affects older requests saved before we recorded the shopper's country.
* **If no warehouse ships the product to the customer's country,** the request isn't sent.

Controlled restock releases (section 4) also run per region.

#### Coming Soon: an exception

**Coming Soon notifications aren't country-aware.** They use your store-wide counted stock (after your location rule), whichever market can ship it. A customer in one market can therefore get a Coming Soon notification when stock arrives at a warehouse that doesn't ship to their country. If that matters for your store, exclude that warehouse with your location rule, or tell us, so we can prioritise making Coming Soon country-aware.

***

### 6. Price Drop

#### Your Price Drop settings

These apply to every store, with or without Shopify Markets. Each is optional. With none of them set, every qualifying price fall sends a notification.

| Setting                               | What it does                                                                                                                                                                                | Default                       |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| **Minimum drop (%)**                  | Only notify when the price falls by at least this percentage                                                                                                                                | Off                           |
| **Minimum drop amount, per currency** | Only notify when the price falls by at least this amount in that currency, for example AUD 10                                                                                               | Off                           |
| **Measure price drops against**       | **Previous price:** each price change is judged on its own. **Customer's price:** each customer's drop is measured from the price when they saved the item, or when they were last notified | Previous price                |
| **Notify on any price reduction**     | Stores not using Markets only. Also notify when the price is cut without a compare-at price                                                                                                 | Off (marked-down prices only) |

* **Percentage and amount:** if both are set, a drop must meet **both**.
* **Currency not listed:** if you haven't set an amount for a currency, only the percentage applies.
* **Single-currency stores:** add one amount in your store currency.

#### Stores not using Shopify Markets

**When it sends (default):** when a wishlisted variant's **selling price falls** in Shopify **and** the new price is **below its compare-at price**, meaning the item is shown as on sale.

**With "Notify on any price reduction" on:** any fall in the selling price counts, whether or not a compare-at price is set.

**Rules:**

* **Adding a compare-at price without lowering the price doesn't send.** The selling price has to fall.
* **Minimum drop:** any fall counts unless you set a minimum (see above).
* **Every new fall counts.** If a price goes up and later comes down again, it can send again. That changes if you measure against the customer's price (see below). Your Price Drop limits still apply.
* **Timing:** picked up within seconds of the price change in Shopify.

**Examples** (no minimum set):

| Change in Shopify                        | Sends (default)?   | Sends with "any price reduction"?  |
| ---------------------------------------- | ------------------ | ---------------------------------- |
| Price $120 → $90, compare-at $120        | Yes                | Yes                                |
| Price $90 → $80, compare-at $120         | Yes                | Yes                                |
| Price $120 → $100, **no compare-at**     | **No**             | **Yes**                            |
| Price stays $120, compare-at set to $150 | No                 | No (the selling price didn't fall) |
| Price $80 → $95 → $85, compare-at $120   | Yes (at $95 → $85) | Yes (at $95 → $85)                 |

#### Stores using Shopify Markets

For Markets stores, Price Drop is worked out **per market** from your Shopify market pricing. Customers are only told about a drop in **their own market's price**.

**How it works:**

* **Checking:** every 4 hours we read the prices on each active market's price list and compare them with the previous check.
* **What counts:** a drop is when a variant's price **in a market** is lower than at the previous check. The compare-at price isn't considered: any fall in the market price counts.
* **Matching customers:** each customer is matched to a market by their country, worked out the same way as for stock (wishlist item, then profile, then default address; see section 5). Customers whose country we can't determine don't receive market price drops.
* **Your settings apply:** the minimum drop and customer's-price settings work here too, in the market's currency.
* **Timing:** up to 4 hours can pass between the price change and it being detected.

#### Fixed market prices vs prices Shopify calculates

In Shopify, a product's price in a market is either:

* **Fixed:** a specific price you set for that market, for example NZ$151; or
* **Calculated:** worked out by Shopify from your base price, the market's price adjustment and currency conversion.

What we can see differs:

|                                     | Fixed price                                | Calculated price                                                                                                               |
| ----------------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
| What we read from Shopify           | The market price, in the market's currency | Your **base price** (with the market's % adjustment), in your **store currency**. Shopify doesn't give us the converted amount |
| A drop is detected when             | You lower that market's price              | You lower your base price (or the market's % adjustment)                                                                       |
| Exchange rate movements             | No effect                                  | **No effect.** We don't see converted prices, so currency movements never cause a notification                                 |
| Currency the customer is told about | The market's currency                      | Your store currency                                                                                                            |

> **Example:** Your base price is A$159.
>
> * New Zealand uses a **fixed** price of NZ$181.
> * The United Kingdom is **calculated** from base.
>
> You lower the base price to A$129.
>
> * UK wishlisters receive a Price Drop showing **A$159 → A$129**.
> * NZ wishlisters don't, because their fixed price hasn't changed.
>
> To include NZ, lower the NZ fixed price too, for example to NZ$151. NZ wishlisters are then told NZ$181 → NZ$151.

#### When a market price isn't available

A product can lack a price for a customer's market. When it does, we fall back to your store's base price rather than skip the customer.

| Situation                                                                                                     | What happens                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| **The market has no fixed price for this product** (you set fixed prices for most products, but not this one) | The product is treated as calculated (see above). Drops are detected when your **base price** falls, and are reported in your **store currency** |
| **The customer's country isn't in any active market** with a price list                                       | They don't receive market price drops                                                                                                            |
| **The market is inactive** (for example, still in draft)                                                      | Its prices are ignored. Customers in its countries use the active market that serves them                                                        |
| **A product changes between a calculated and a fixed market price**                                           | The price moves to a different currency. That's never treated as a price drop, so the switch sends nothing                                       |

**Tip:** if you use fixed market prices, give every product a fixed price in each market. Otherwise customers in that market get price drops in your store currency for any product without one.

#### Measuring against the customer's price

With **Measure price drops against** set to **Customer's price**, each customer has their own reference price for each wishlisted item:

* It starts as **the price when they saved the item**, in their market's currency for Markets stores.
* After a Price Drop notification, it becomes **the price they were told about**.
* It only ever moves **down**. A price rise doesn't raise it.

A notification is sent when the current price is below the customer's reference price by at least your minimum drop, if you've set one.

**Examples** (minimum drop 10%):

| Price history                        | "Previous price"                | "Customer's price"                                  |
| ------------------------------------ | ------------------------------- | --------------------------------------------------- |
| Saved at $100 → $97 → $94 → $90      | Nothing (each fall is about 3%) | **Notified at $90** (10% below the saved price)     |
| Notified at $80, then $100, then $85 | Notified again at $85           | Nothing ($85 is above the $80 they were told about) |
| Saved at $100 → $120 → $110          | Notified at $110                | Nothing (still above the saved price)               |

**Things to know:**

* **Items saved before you turn this on** have no reference price yet. They use the previous-price rule until their first Price Drop notification, which then sets one.
* **If a customer's price changes currency,** for example because they moved market or a product gained a fixed market price, their reference price is reset to the new price. No notification is sent for the change.

#### Prices in your emails

Every Price Drop email (and other notification emails) already includes:

* `price`: the compare-at price, or the selling price if none is set;
* `sale_price`: the current selling price;
* `saving`.

These are always in your store currency. They're unchanged, so existing templates keep working.

You can also enable **customer price fields**, designed for Markets stores and for showing the actual drop:

| Field           | Meaning                                                                        |
| --------------- | ------------------------------------------------------------------------------ |
| `new_price`     | The customer's current price: their market's price, or your base selling price |
| `old_price`     | Price Drop only: the price before the drop that triggered this email           |
| `currency_code` | The currency of `new_price` and `old_price` (where known)                      |
| `country_code`  | The market country the price is for                                            |
| `price_source`  | `market` or `base`                                                             |

* **Where they appear:** inside the product's price in Klaviyo, Dotdigital, SendGrid and Emarsys payloads, and alongside `price` and `sale_price` for Braze and Bloomreach.
* **To use them:** ask us to enable them, then update your templates, for example to "was {{old\_price}} now {{new\_price}} {{currency\_code}}".

#### Safeguards

* **First check and market changes:** no Price Drop is sent the first time we see a variant's price in a market. Nothing is sent when a country moves to a different market, or when a market is newly added, since those are new prices rather than drops.
* **Overlapping markets:** if a country belongs to more than one market, the **most specific** market's price is used (the one covering the fewest countries).
* **Large repricing events:** if an unusually large number of drops appears in a single check, that check's drops are held back as a precaution rather than mass-sent. This protects against accidental catalogue-wide repricing.

***

### 7. Quick reference

|                                 | Low Stock                                              | Back in Stock                                | Notify Me                                            | Price Drop                                                                                                          |
| ------------------------------- | ------------------------------------------------------ | -------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| **Who**                         | Wishlisters                                            | Wishlisters                                  | Customers who asked                                  | Wishlisters                                                                                                         |
| **Trigger**                     | Stock crosses **down** to at/below threshold (but ≥ 1) | Stock crosses **up** from at/below threshold | Stock is **above** threshold                         | Price falls (stores not on Markets: must be below compare-at unless "any price reduction" is on)                    |
| **Threshold set on**            | Notification setting                                   | Notification setting                         | Notification only                                    | Optional minimum % and/or amount per currency                                                                       |
| **Repeats?**                    | Yes, on each new crossing (within limits)              | Yes, on each restock (within limits)         | No, one-off (plus optional reminder)                 | Yes, on each new fall (within limits). With "customer's price", only once below the price they were last told about |
| **Marketing opt-out respected** | Yes                                                    | Yes                                          | No                                                   | Yes                                                                                                                 |
| **Timing**                      | Seconds, then your send delay                          | Seconds, then your send delay                | Immediate                                            | Standard: seconds, then your send delay. Markets: checked every 4 hours                                             |
| **Shopify Markets**             | Per region                                             | Per region                                   | Per customer country (store-wide if country unknown) | Per market (market currency for fixed prices, store currency for calculated ones)                                   |

Coming Soon notifications use store-wide stock for Shopify Markets stores. They aren't country-aware (see section 5).

***

### 8. Checklist for Shopify Markets stores

1. **Shipping zones:** make sure each market's shipping zone in Shopify lists the warehouses that should count for it. Cover remaining countries with a **Rest of World** zone.
2. **App permissions:** The Wishlist Co needs permission to read your **shipping** and **markets** settings in Shopify. If you're asked to re-approve the app's permissions, please do so. Without them, regional stock and market prices can't be read.
3. **Location rule:** remember it applies across **all** markets. Use shipping zones for market-specific choices.
4. **Market pricing:** decide per market between fixed and calculated prices (see section 6). If you use fixed prices, give every product one; products without one are reported in your store currency.
5. **Price Drop settings:** consider a minimum drop and **Measure against: Customer's price**, so customers get fewer, more meaningful price-drop alerts.
6. **Email templates:** to show customers their own market price and currency, ask us to enable the customer price fields, then use `new_price`, `old_price` and `currency_code` in your templates.
7. **Shopper country:** make sure your theme passes the shopper's selected Shopify country to The Wishlist Co widgets (for example, `localization.country.iso_code` on the Notify Me widget). Otherwise the widget falls back to guessing the country from the browser.
8. **Changes to shipping zones:** let us know before re-organising which warehouses serve which countries. A change to a region's warehouses resets its stock history, and the first restock after the change may not send a Back in Stock notification.
