> For the complete documentation index, see [llms.txt](https://docs.webexp.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.webexp.dev/drift-shopify-theme/drift-pro/metafields/preorder.md).

# Pre-Order

Change the Add to Cart button label to "Pre-Order" (or any custom text) on specific products.

Pre-Order changes the Add to Cart button label on a product from "Add to Cart" to "Pre-Order" (or any custom text you want). Useful when you're launching something, taking reservations, or just want to telegraph that a product isn't an everyday in-stock buy.

Two metafields drive it:

| Metafield              | Type                 | What it does                                                             |
| ---------------------- | -------------------- | ------------------------------------------------------------------------ |
| `custom.is_preorder`   | Boolean (true/false) | When true, the ATC button label is replaced with your pre-order text     |
| `custom.preorder_text` | Single line text     | The text that replaces "Add to Cart". Defaults to "Pre-Order" when blank |

That's the whole feature — label swap. The button still adds the variant to cart like normal.

## Setting up the metafields

Do this once per metafield, then any product can use them.

### `custom.is_preorder`

1. Shopify admin → **Settings** → **Custom data** → **Products**
2. **Add definition**
3. Fill in:
   * **Name**: Is Pre-Order
   * **Namespace and key**: `custom.is_preorder`
   * **Type**: **True or false** (Boolean)
4. Save

### `custom.preorder_text`

1. Same path: **Settings** → **Custom data** → **Products** → **Add definition**
2. Fill in:
   * **Name**: Pre-Order Text
   * **Namespace and key**: `custom.preorder_text`
   * **Type**: **Single line text**
3. Save

## Enabling pre-order on a product

1. Open the product in admin
2. Scroll to **Metafields**
3. **Is Pre-Order** → toggle to **true**
4. **Pre-Order Text** → fill in your label (optional — leave blank to use the default "Pre-Order")
5. Save

Open the PDP — the ATC button now reads your pre-order text instead of "Add to Cart".

## What "Pre-Order Text" should say

A few options that work, in order of clarity:

* `Pre-Order` — the default, generic and safe
* `Pre-Order — Ships March 15` — sets a delivery expectation
* `Reserve Now` — softer than "Pre-Order"
* `Coming Soon — Order Now` — for products before launch date

Keep it short. The button is usually narrow on mobile and long labels wrap awkwardly.

## Where it appears

Pro's pre-order label runs on the **PDP Add to Cart button only**. Pro doesn't ship the quick-add overlay, so the relabel doesn't appear on product cards in feed sections — customers tap into the PDP to see it. Upgrade to Studio if you want the pre-order label on quick-add buttons as well.

## Turning pre-order off

Set `custom.is_preorder` to **false** (or clear it). The button reverts to standard "Add to Cart" / "Sold Out" behavior on the next page load.

## What if the label isn't changing?

If you've set the metafields but the button still shows "Add to Cart":

* Check that `custom.is_preorder` is set to **true**, not the string `"true"` (Boolean metafield, not text)
* Check the namespace and key are exactly `custom.is_preorder`
* Make sure you saved the product after toggling
* Hard refresh the storefront (`Cmd + Shift + R`)
