Appearance
Pre-order setup
The Uisce theme ships a pre-order mode that swaps the add-to-cart button label from "Add to cart" to "Pre-order" on products you flag as pre-orderable, and renders an optional explanatory message below the button (e.g. "Ships by May 15").
The trigger is a product metafield. The theme reads product.metafields.uisce.preorder on the product page, the featured-product section, the quick-view modal, and the sticky add-to-cart bar — four add-to-cart surfaces in total. Sticky add-to-cart only swaps the label; the message only renders on the three larger surfaces (the sticky bar is intentionally compact).
Why you create the metafield definitions yourself
Shopify's Theme Store review forbids themes from shipping custom metafield or metaobject definitions. Themes may read metafields, but they must not register the definitions — that's a merchant responsibility. So Uisce ships the Liquid that reads product.metafields.uisce.preorder (and product.metafields.uisce.preorder_message), but you create the two definitions once in your Shopify admin. This guide walks you through it.
Good news: once the definitions exist, setting a product to pre-order is a one-click flag (boolean) or a "ships by" date picker (date type). Past dates auto-disable pre-order — you do not have to remember to turn it off.
Step 1: Create the pre-order trigger definition
- In your Shopify admin, go to Settings → Custom data → Products.
- Click Add definition.
- Fill in:
- Name:
Pre-order(any name — this is just the admin label) - Namespace and key:
uisce.preorder - Type: choose either True or false (boolean — simpler) or Date (richer — auto-disables when the date is past).
- Name:
- Leave Access at the default Storefronts (Uisce reads this metafield from Liquid on the storefront).
- Save.
Which type should you pick?
- Boolean (True/False) — best when you don't know the ship date yet or you want merchant ops to flip a single switch. You'll have to remember to turn it off once the product actually ships.
- Date — best when you know the ship-by date. When the date is in the past, the theme automatically reverts the label to "Add to cart" without any further merchant action. This is the recommended type for launch-dated pre-orders.
Step 2: Create the pre-order message definition
This second definition stores a per-product pre-order message that overrides the theme-level default.
- Go back to Settings → Custom data → Products and click Add definition again.
- Fill in:
- Name:
Pre-order message(any name) - Namespace and key:
uisce.preorder_message - Type: Single line text.
- Name:
- Save.
You can skip this step if every pre-order product should use the same global message — the theme setting in the next step is enough.
Step 3: Set a theme-level default message
Open the Theme Editor for your Uisce theme and navigate to Theme settings → Pre-order. Fill in the Default pre-order message field — for example:
This product is available for pre-order and will ship within 2–4 weeks.
This message is rendered under the add-to-cart button on every pre-order product that doesn't set a per-product override. Leave it blank if you don't want any message to render by default.
Step 4: Flag a product as pre-order
Open a product in your Shopify admin. Scroll to the Metafields section at the bottom of the page and set:
- Pre-order — switch on (boolean) or pick a future ship-by date (date).
- Pre-order message — optional per-product override (overrides the theme default from Step 3).
Save the product. Load the product page on your storefront — the add-to-cart button now reads "Pre-order" and the message appears below it.
Step 5: Allow purchase past zero inventory
Pre-order is a theme label swap — it does not bypass Shopify's inventory controls. If the variant has inventory tracking on and stock is zero, Shopify will still block the purchase at checkout.
To let customers pre-order past zero inventory, open each pre-orderable variant and set Inventory policy → Continue selling when out of stock. You can do this in bulk from the variants admin page.
How the four add-to-cart surfaces behave
| Surface | Label swaps? | Message renders? |
|---|---|---|
| Product page primary ATC | Yes | Yes |
| Featured product section | Yes | Yes |
| Quick-view modal | Yes | Yes |
| Sticky add-to-cart bar | Yes | No (compactness) |
The sticky bar only ever swaps the button label. The three other surfaces render the label swap and the per-product (or default) message.
How past dates auto-disable pre-order
If you set uisce.preorder as a date type and the date has passed, the Liquid helper treats the metafield as "not pre-order" — the button label reverts to "Add to cart" and the message is not rendered, even if a uisce.preorder_message is set. You do not have to remember to switch anything off; the date falling into the past is enough.
If you use the boolean type, the theme will keep showing "Pre-order" until you toggle the metafield off.
Uninstalling pre-order
- Per product: clear the product's
uisce.preordermetafield (set to false / blank). - Site-wide: clear the Default pre-order message theme setting and delete both metafield definitions from Settings → Custom data → Products. The theme will silently fall back to "Add to cart" on every product.