# Stock display

URL: https://docs.sparklayer.io/help/storefront/stock-display

Show live stock levels to B2B customers, allow pre-orders and back-orders, add restock dates, choose stock locations and reserve stock for retail customers.

> **Quick summary**
>
> - B2B customers see a stock status on each product, such as **In stock** or **Pre-order**, and can see the number of units. SparkLayer shows the same stock (inventory) levels as your eCommerce platform. It doesn't keep separate stock.
> - You choose what each customer group sees in the group's **Stock display** rule, at **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app: stock status, exact units up to a maximum, and low and last stock thresholds. This needs Core Script version 2.0 or later.
> - Pre-orders and back-orders follow your platform's "continue selling when out of stock" setting. They aren't supported on BigCommerce. Restock dates, pre-order limits and reserved stock use product [metafields](https://docs.sparklayer.io/help/glossary.md#metafields) (extra fields on each variant), which Wix doesn't support.
> - Stock locations show a customer group stock from one location. Turn on **Multi-location stock** at **Settings > Configurations > Ordering** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/settings/general)), or **SparkLayer Wholesale > Settings > Configurations > Ordering** in the Shopify app, then set each group's **Stock location** rule.

## How it works

SparkLayer reads stock from your eCommerce platform, or from your own system if you send it through the [SparkLayer API](https://docs.sparklayer.io/developers/api.md). Whether you manage stock by hand or from an ERP, B2B customers see the same numbers. The customer group's stock display settings then decide how customers see that stock.

How a stock status reaches the customer:

1. **Stock in your platform**: Quantities and "continue selling" settings for each variant
2. **Customer group rules**: Whether to show stock, exact units, and the max, low and last thresholds
3. **Status shown**: In stock, low stock, last stock, out of stock or pre-order, in the frontend interfaces

### How the status is chosen

SparkLayer works from the **available** quantity of each variant. On Shopify, that's the **Available** quantity: stock on hand minus units committed to open orders. For example, 1 unit on hand that's committed to an order counts as 0 available, so with **Continue selling when out of stock** on, the variant shows as pre-order.

Customers see one of these statuses, each with a coloured dot:

| Status | Colour | When it shows |
| --- | --- | --- |
| **In stock** | Green | Available stock is above the **Low** threshold. If you show units, stock above **Max** shows as, for example, **100+**. |
| **Low stock** | Amber | Available stock is above 0 and at or below the **Low** threshold. Customers see the number of units left. |
| **Last stock** | Amber | Only the last items are left, as set by the **Last** threshold. |
| **Pre-order** | Blue | Available stock is 0 or less, and your platform allows the variant to be sold when it's out of stock. See [pre-orders and back-orders](#allow-pre-orders-and-back-orders). |
| **Out of stock** | Red | Available stock is 0 or less, and selling when out of stock is off. The variant can't be ordered. |
| **Unavailable** | Red | Usually, the customer's price list has no B2B price for the variant. See [Why a product shows Unavailable](https://docs.sparklayer.io/help/pricing/managing-pricing.md#unavailable). It also shows when the variant has been made un-sellable: see [How products are shown](https://docs.sparklayer.io/help/storefront/product-display.md#hide-variants-or-make-them-unavailable). To show "Price on application" instead, see [Show "price on application"](https://docs.sparklayer.io/help/pricing/managing-pricing.md#price-on-application). |

Stock labels that come from your own theme, rather than from SparkLayer's interfaces, aren't changed by any of the settings on this page.

### Which setting hides which label

All of these are in the customer group's **Stock display** rule, at **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app:

| To hide | Do this |
| --- | --- |
| **In stock**, **Low stock**, **Last stock** and **Out of stock** | Untick **Show stock availability to customers**. This doesn't hide the pre-order label. |
| The **Pre-order** label | Tick **Hide pre-order**. |
| The exact number of units | Untick **Show number of units of stock**. |

## Show stock levels to customers

You choose what each customer group sees. Stock display settings need version 2.0 or later of the Core Script, the SparkLayer code in your theme. If you're not sure which version you have, ask your developer or see [How do I show stock on a SparkLayer version before 2.0?](#for-versions-of-sparklayer-before-20).

1. Go to **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app and click a group's name. To apply the settings to every group, click **Edit** on the base customer group instead: the other groups inherit from it.
2. Under **Inherited rules**, click **+ Override** next to **Stock display** (on the base group, **+ Customize**). The rule moves up to **Customized rules**.
3. Click **Configure** and tick **Show stock availability to customers**.
4. To show exact numbers, tick **Show number of units of stock** and enter the **Max**, **Low** and **Last** values.
5. Click **Save**.

Changes to a customer group's rules apply straight away. There's nothing to publish and no sync to wait for.

| Setting | What it does |
| --- | --- |
| **Show stock availability to customers** | Customers see the stock status of each product and variant. Pre-order is always shown unless **Hide pre-order** is ticked. |
| **Hide pre-order** | Hides the pre-order stock status from customers. |
| **Show number of units of stock** | Shows the exact stock number, up to the **Max** value. |
| **Max** | The highest number shown, in green. Anything above shows as, for example, **100+**. |
| **Low** | The low stock threshold. Low stock shows in amber. |
| **Last** | The last stock threshold, for the last remaining items. |

### Show the stock key on desktop

On smaller screens, customers see a stock key under the variants table in the [product detail interface](https://docs.sparklayer.io/help/storefront/interfaces/product-detail.md) when stock display is on. It explains each colour: **In stock**, **Out of stock**, **Pre-order**, **Low stock** and **Last stock**.

To show the stock key on larger screens too, you or your developer add this line to your [custom CSS](https://docs.sparklayer.io/help/storefront/customising-design.md):

```css
--spark-pdp-stock-key-desktop: flex;
```

### Set a stock level display limit

To cap the stock number customers see on product pages, go to **Settings > Configurations** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/settings/general)), or **SparkLayer Wholesale > Settings > Configurations** in the Shopify app and enter a number in **Stock level display limit**. For example, with a limit of `100`, customers see `100+` when you have more than 100 in stock.

### Show stock on product cards

The [product card interface](https://docs.sparklayer.io/help/storefront/interfaces/product-card.md) can show customers live stock on collection pages too. See [Show stock status](https://docs.sparklayer.io/help/storefront/product-display.md#show-stock-status).

## Allow pre-orders and back-orders

Customers can add a pre-order (or back-order) product to an order even when it's out of stock. They see a pre-order message next to it, such as **On Backorder** or **Pre-order**.

### Set up pre-orders on Shopify

**Shopify only:**

1. In the Shopify admin, open the product or variant.
2. In the inventory section, tick **Track quantity** and **Continue selling when out of stock**.
3. Set the **Available** quantity to 0 or less, then click **Save**.

"Continue selling when out of stock" applies to retail customers too, so they can also buy more than you have. To limit this, you can create separate products that only B2B customers see. See [Sell pre-order products to B2B customers only](#sell-pre-order-products-to-b2b-customers-only).

On other platforms, see the [developer docs](https://docs.sparklayer.io/developers.md). Pre-orders and back-orders aren't supported on BigCommerce (see [Compare platforms](https://docs.sparklayer.io/help/platforms/compare.md)).

### Change the pre-order message

You can change the pre-order message customers see without code. At **Storefront > Options > Translation overrides** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/storefront/options)), or **SparkLayer Wholesale > Storefront > Options > Translation overrides** in the Shopify app, add a translation override for `pdp.messaging.back-order` (product page) and `product-card.messaging.back-order` (product cards). See [Languages and international](https://docs.sparklayer.io/help/storefront/languages-and-international.md).

**For developers: set the text in the Core Script**

```javascript title="Core Script"
translations: {
  en: {
    "pdp.messaging.back-order": "Pre-order",
    "product-card.messaging.back-order": "Pre-order",
  }
},
```

### Limit how many units can be pre-ordered

You can set exactly how much stock of a variant customers can pre-order or back-order. Use the `sparklayer.min_stock_level` metafield, entered as a negative number: `-20` lets customers order until stock reaches -20.

1. Make sure the field exists. On Shopify, go to **Integrations > Platform** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/integrations/platform)), or **SparkLayer Wholesale > Integrations > Platform** in the Shopify app and, in the **Metafields** card, click **Configure** next to **SparkLayer metafields**. On other platforms, use the [metafield reference](#metafield-reference).
2. On each variant, set `sparklayer.min_stock_level` to a negative whole number, for example `-6`, `-12` or `-20`.

**Lots of products? Fill them in one table (Shopify):** in your Shopify admin, go to **Products**, tick the products and click **Edit products**. Click **Columns**, tick the SparkLayer field under **Metafields**, type the values and click **Save**. See [Shopify's guide](https://help.shopify.com/en/manual/custom-data/metafields/bulk-edit-metafields).

**Set a different limit for each stock location**

If you use [stock locations](#stock-locations-inventory-locations), you can set the level for each location instead, with the `sparklayer.stock_location_data` field. Enter each location's ID from your eCommerce platform and its limit, and the form writes the value, for example `[{"location_id":"123","min_stock_level":-150}]`:

### Show a restock date

A restock date tells customers when a pre-order product is expected, for example "Pre-order. Expected shipping date: 17th April". Use it for a "due in" date (when you expect stock) or an "estimated shipping" date (when you expect to ship).

1. Make sure the `sparklayer.restock_date` field exists. On Shopify, go to **Integrations > Platform** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/integrations/platform)), or **SparkLayer Wholesale > Integrations > Platform** in the Shopify app and click **Configure** next to **SparkLayer metafields**: it adds **B2B - Restock Date**. On other platforms, create it with the type `date` (see the [metafield reference](#metafield-reference)).
2. On each variant, set the date, for example `17/11/2022` for the UK format.

**Lots of products? Fill them in one table (Shopify):** in your Shopify admin, go to **Products**, tick the products and click **Edit products**. Click **Columns**, tick **B2B - Restock Date** under **Metafields**, type the values and click **Save**. See [Shopify's guide](https://help.shopify.com/en/manual/custom-data/metafields/bulk-edit-metafields).

**Set a different restock date for each stock location**

If you use [stock locations](#stock-locations-inventory-locations), you can set a restock date for each location with the `sparklayer.stock_location_data` field. Enter each location's ID and pick its date, and the form writes the value, for example `[{"location_id":"123","restock_date":"2023-12-12"}]`:

To change the restock date wording, add a translation override for `pdp.messaging.back-order-due` at **Storefront > Options > Translation overrides** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/storefront/options)), or **SparkLayer Wholesale > Storefront > Options > Translation overrides** in the Shopify app. In the text, `{restockDate}` is replaced with the date.

**For developers: set the text in the Core Script**

```javascript title="Core Script"
translations: {
  en: {
    "pdp.messaging.back-order-due": "Due {restockDate}",
  }
},
```

The [product matrix](https://docs.sparklayer.io/help/storefront/product-display.md#show-variants-as-a-matrix-matrix-mode) can show restock dates too, with the `show-restock-date` setting.

### Sell pre-order products to B2B customers only

If you sell to retail (DTC) and B2B customers from one store, you may want B2B customers to pre-order products that retail customers can't buy, for example a pre-season range.

**Shopify only:**

Shopify can't hide or show products, or single variants, by customer type on its own. Make the pre-order version a separate product:

1. Create a new product (or range) and set it up as normal, with images and descriptions.
2. Tag it `b2b-only` with the free [B2B Catalogs](https://docs.sparklayer.io/help/storefront/b2b-catalogs.md) app, so only signed-in B2B customers see it.
3. In SparkLayer, set up B2B pricing and any settings the products need, such as [quantity rules](https://docs.sparklayer.io/help/storefront/quantity-rules.md).

Retail customers then can't see these products. This duplicates some product data, but it keeps pre-order products for B2B customers only. A product already in a cart, or added with an add-to-cart link, can still be bought: see [B2B Catalogs limitations](https://docs.sparklayer.io/help/storefront/b2b-catalogs/limitations.md#hidden-product-add-to-cart-caveats).

### Tag orders that contain pre-order products (Shopify)

**Shopify only:**

The [Shopify Flow](https://apps.shopify.com/flow) app can tag orders that contain pre-order products automatically, so your team can find and handle them separately.

The sample Shopify Flow workflow:

1. **Order created**: The workflow starts when an order (or draft order) is created
2. **Check product tags**: Checks whether a product's tags include b2b-pre-order
3. **Tag the order**: Adds the order tag b2b-pre-order
4. **Add a note**: Updates the order note to say the order contains pre-order items and may need review before fulfilment

**Step 1.** **Tag your pre-order products**

In the Shopify admin, add the tag `b2b-pre-order` to each product you're selling on pre-order or back-order.

**Step 2.** **Tag orders with Shopify Flow**

Install the [Shopify Flow app](https://apps.shopify.com/flow) and create 2 workflows, one starting from **Order created** and one from **Draft order created**. In each, check whether any line item's product has the tag `b2b-pre-order`, and if it does, add the tag `b2b-pre-order` to the order. Once they're turned on, orders and draft orders containing pre-order products get the tag. [Our support team](https://docs.sparklayer.io/help/support.md) can help you set them up.

**Step 3.** **Filter your orders**

In the Shopify admin, go to **Orders** ([open in the Shopify admin](https://admin.shopify.com/orders)), click **Add filter** and filter by the tag `b2b-pre-order`. You can save this as a view, for example **Pre-Order**, and use it for your internal workflows, such as how you fulfil these items.

### Hide pre-order messages

Customers see a product as pre-order when it meets your store's pre-order criteria. On Shopify, that's when **Track quantity** is on, **Continue selling when out of stock** is on, and the **Available** quantity is 0 or less. You can hide the message in 2 ways:

| Where | How | Effect |
| --- | --- | --- |
| **In SparkLayer** | Go to **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app, open a customer group and, in its **Stock display** rule, tick **Hide pre-order**. | The pre-order status is hidden in the [frontend interfaces](https://docs.sparklayer.io/help/storefront/interfaces.md) for that group. |
| **On Shopify** | Turn off **Track quantity** or **Continue selling when out of stock** for the product or variant. | The product is no longer treated as pre-order. On other platforms, see the [developer docs](https://docs.sparklayer.io/developers.md). |

## Stock locations (inventory locations)

If your store keeps stock in several locations, for example by region, you can choose which location's stock a customer group sees. Stock locations need the Growth plan or above.

1. Go to **Settings > Configurations > Ordering** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/settings/general)), or **SparkLayer Wholesale > Settings > Configurations > Ordering** in the Shopify app and turn on **Multi-location stock**, then save.
2. Go to **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app and click a group's name.
3. Under **Inherited rules**, click **+ Override** next to **Stock location**, then **Configure**.
4. Select a location, for example **London Warehouse**.
5. Click **Save**. **Reset** hands the rule back to the base group.

Until a group has a stock location, customers see combined stock from all locations. Each customer group can use one location.

This only changes the stock customers see. It doesn't change which location fulfils the order in your eCommerce platform.

On Shopify, your active locations sync to SparkLayer automatically. On other platforms, stock locations are managed through the [Stock API](https://docs.sparklayer.io/developers/api/stock.md). See [Set a stock location](https://docs.sparklayer.io/help/customers/customer-groups.md#set-a-stock-location) for the setup needed on each platform.

## Reserve stock for retail customers

If you run retail (DTC) and B2B from one store, both share the same stock, so large B2B orders could leave nothing for retail customers. A reserve stock quantity keeps some stock back for retail:

How reserved stock works, with a reserve of 50:

1. **Reserve set**: You set a reserve stock quantity on a variant, for example 50
2. **Both can order**: Retail and B2B customers can both order the product
3. **Stock reaches 50**: B2B customers can no longer add it to their order
4. **Retail keeps ordering**: Retail customers can still buy the reserved stock

To set it:

1. Make sure the `sparklayer.reserve_stock_quantity` field exists. On Shopify, go to **Integrations > Platform** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/integrations/platform)), or **SparkLayer Wholesale > Integrations > Platform** in the Shopify app and, in the **Metafields** card, click **Configure** next to **SparkLayer metafields**: it adds **B2B - Reserved DTC Stock Quantity**. On other platforms, see the [metafield reference](#metafield-reference).
2. On each variant, enter the quantity to keep back, for example `50`, and save.

**Lots of products? Fill them in one table (Shopify):** in your Shopify admin, go to **Products**, tick the products and click **Edit products**. Click **Columns**, tick **B2B - Reserved DTC Stock Quantity** under **Metafields**, type the values and click **Save**. See [Shopify's guide](https://help.shopify.com/en/manual/custom-data/metafields/bulk-edit-metafields).

To reserve a different amount for each customer group, use [Product rules per customer group](https://docs.sparklayer.io/help/storefront/product-settings.md).

## Change stock status messages

When stock display is on, you can change the wording of each stock status customers see. You don't need code: add a translation override for its key at **Storefront > Options > Translation overrides** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/storefront/options)), or **SparkLayer Wholesale > Storefront > Options > Translation overrides** in the Shopify app. See [Languages and international](https://docs.sparklayer.io/help/storefront/languages-and-international.md).

| Key | Default text |
| --- | --- |
| `pdp.messaging.back-order` | Pre-order |
| `pdp.messaging.back-order-due` | Due `{restockDate}` |
| `pdp.messaging.out-of-stock` | Out of stock |
| `pdp.messaging.low-stock` | Low stock |
| `pdp.messaging.last-stock` | Last stock |
| `pdp.messaging.in-stock` | In stock |
| `pdp.messaging.un-sellable` | Unavailable |

**For developers: set the text in the Core Script**

```javascript title="Core Script"
translations: {
  en: {
    "pdp.messaging.back-order": "Pre-order",
    "pdp.messaging.back-order-due": "Due {restockDate}",
    "pdp.messaging.out-of-stock": "Out of stock",
    "pdp.messaging.low-stock": "Low stock",
    "pdp.messaging.last-stock": "Last stock",
    "pdp.messaging.in-stock": "In stock",
    "pdp.messaging.un-sellable": "Unavailable",
  }
},
```

## Metafield reference

This reference is for whoever sets up your product data. All of these are variant metafields with the namespace `sparklayer`. On Shopify, create them at **Settings > Custom data > Variants** ([open in the Shopify admin](https://admin.shopify.com/settings/custom_data/productvariant/metafields)). On other platforms they're variant-level product fields: see the [developer docs](https://docs.sparklayer.io/developers.md) and your platform's metafields guide.

| Key | Type | Value | Used for |
| --- | --- | --- | --- |
| `min_stock_level` | `integer` | A negative whole number, for example `-6`, `-12` or `-20` | [Limit pre-order quantity](#limit-how-many-units-can-be-pre-ordered) |
| `restock_date` | `date` | A date in your store's format, for example `17/11/2022` (UK) | [Restock date](#show-a-restock-date) |
| `stock_location_data` | `json` | One entry per location, with the `location_id` from your platform and a `min_stock_level` and/or `restock_date` (`YYYY-MM-DD`) | Per-location pre-order limits and restock dates (Shopify) |
| `reserve_stock_quantity` | `integer` | A whole number, for example `50` | [Reserved stock](#reserving-stock) |

## Troubleshooting

**Diagnose: Stock labels or numbers looking wrong?** Find which setting controls what B2B customers see.

1. **What’s happening?** Sign in as a B2B customer, then pick the closest match.
   - A stock label still shows after I turned stock display off: go to question 2
   - The stock number differs from Shopify: go to question 3
   - It says pre-order or back-order, but there’s stock: go to fix A (Units committed to orders aren’t available)
   - No stock messages show at all: go to question 4
2. **Which label is still showing?** Each label is controlled separately.
   - Pre-order: go to fix B (Tick “Hide pre-order” on the group)
   - In stock, low stock or out of stock: go to question 5
   - Unavailable: go to fix C (“Unavailable” usually means no B2B price)
3. **Does the product show the same number in Product data lookup?** Product data lookup shows the stock SparkLayer has for the product. Where to look: Integrations > Product sync (SparkLayer).
   - Yes, it matches the storefront: go to fix A (Units committed to orders aren’t available)
   - No, it’s different: go to fix D (Sync the product)
4. **Is “Show stock availability to customers” ticked on the customer’s group?** It’s in the group’s stock display settings. Where to look: Customers > Groups (SparkLayer).
   - Yes: go to fix E (Your theme needs the stock display setting)
   - No: go to fix F (Turn on stock display for the group)
5. **Is the label in SparkLayer’s product area, or somewhere else on the page?** Your theme can show its own stock label, which SparkLayer’s settings don’t control.
   - In SparkLayer’s area: go to fix G (Check the customer’s group)
   - Somewhere else: go to fix H (That label is your theme’s)

**Fixes**

- **A. Units committed to orders aren’t available** SparkLayer shows Shopify’s Available quantity: on hand minus units committed to open orders. With 1 on hand committed to an order, 0 is available, so if the variant can be sold when out of stock it shows as pre-order. See [How the stock status is chosen](https://docs.sparklayer.io/help/storefront/stock-display.md).
- **B. Tick “Hide pre-order” on the group** Unticking “Show stock availability to customers” hides the in stock, low stock and out of stock labels only. The pre-order label has its own setting. Changes to a group apply straight away. Where: Customers > Groups (SparkLayer). See [Stock display](https://docs.sparklayer.io/help/storefront/stock-display.md).
- **C. “Unavailable” usually means no B2B price** It’s usually a price list issue, not a stock one. Next: Product missing, no B2B price or “Unavailable”?
- **D. Sync the product** SparkLayer’s stock is out of date for this product. Run a product sync and check again after a few minutes. If it stays wrong, check stock locations on the customer’s group and any reserved stock, then contact us. Where: Integrations > Product sync (SparkLayer).
- **E. Your theme needs the stock display setting** Stock messages also need SparkLayer’s theme configuration to include stock display. Tell us the theme name and we’ll add it.
- **F. Turn on stock display for the group** Tick “Show stock availability to customers” on the customer’s group and save. It applies straight away. Where: Customers > Groups (SparkLayer).
- **G. Check the customer’s group** Stock display is set per customer group, and changes apply straight away. Check you changed the group this customer is in, and that they’re signed in. Where: Customers > Groups (SparkLayer). Next: Wrong prices, payment methods or shipping for a customer?
- **H. That label is your theme’s** SparkLayer’s settings don’t control labels your theme adds. Hide it for B2B customers in your theme, or send us the page link and we’ll help.

**Why isn't stock showing to my customers?**

Check that **Show stock availability to customers** is ticked in the customer group's **Stock display** rule (or in the base customer group it inherits from), and that your Core Script is version 2.0 or later. The version is at **Storefront > Widgets > Core script version** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/frontend/core)), or **SparkLayer Wholesale > Storefront > Widgets > Core script version** in the Shopify app.

Stock messages also need SparkLayer's configuration for your theme to include the stock display setting. If no stock messages show at all, for any customer, [contact our support team](https://docs.sparklayer.io/help/support.md) and we'll check it.

**Why are the stock numbers different from my platform?**

SparkLayer shows the **available** quantity, not the quantity on hand. On Shopify, units committed to open orders aren't available, so 1 on hand and 1 committed shows as 0. See [How the status is chosen](#how-the-status-is-chosen).

If the available quantity in your platform still doesn't match, sync first: go to **Integrations > Product sync** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/integrations/products-sync)), or **SparkLayer Wholesale > Integrations > Product sync** in the Shopify app and click **Sync products now**. Then search for the variant in **Product data lookup**. See [Product and customer sync](https://docs.sparklayer.io/help/integrations/data-sync.md#check-your-products-are-syncing).

**Why does a product show a stock label I can't turn off?**

It may come from your theme rather than SparkLayer. The settings on this page only change the labels in SparkLayer's interfaces. To remove a label your theme adds, change your theme or ask your developer.

## FAQs

**Why can retail customers buy pre-order products?**

**Shopify only:**

On Shopify, "Continue selling when out of stock" applies to all customers. To keep pre-order products for B2B customers, see [Sell pre-order products to B2B customers only](#sell-pre-order-products-to-b2b-customers-only).

**How do I show stock on a SparkLayer version before 2.0?**

Before version 2.0, stock display was set in the Core Script rather than in SparkLayer, so your developer sets it there. See [Frontend integration](https://docs.sparklayer.io/developers/frontend.md) for how to update the Core Script.

```javascript title="Core Script"
display: {
stock: {
  show: true,
  max: 50,
  last: 5,
  low: 15,
},
},
```

| Setting | What it does |
| --- | --- |
| `max` | The highest stock level shown to customers. Stock above it shows as "XX+ available". |
| `last` | Tells customers stock is down to its last items, with a red "Last stock" message. |
| `low` | Tells customers stock is low, with an orange "Low stock" message. |
