Allow pre-orders for products


This is an advanced tutorial and is not supported by Shopify. Knowledge of web design languages such as HTML, CSS, Javascript and Liquid is required. We suggest hiring a Shopify Expert if you are not comfortable proceeding with the following tutorial.

This customization lets you sell specific products as pre-orders. You can also use this method to continue selling products that are on back-order.

Product with pre order button

Authorizing payment for pre-orders

According to law, when selling items as pre-orders, you are not supposed to capture payment immediately unless the customer fully understands that they are purchasing a product or service that will be delivered at a later date. But you can authorize the payment without capturing the funds immediately. This allows you to capture payment at a later date when you are fulfilling the order.


Authorization periods expire after a certain period of time. After an authorization expires, you may no longer legally capture payment for that order. Shopify Payments has an authorization period of 7 days. To authorize payments for a longer period, you must use a third-party payment gateway.

To set your payment gateway to only authorize a payment without capturing it:

  1. From your Shopify admin, click Settings, then click Payments (or press G S P).

  2. Scroll down to find the Payment authorization section.

  3. Select Manually capture payment for orders:

    Payment authorization
  4. Click Save.


You can still capture funds immediately for a pre-order product, as long as you communicate to your customers that you are charging them in advance for an item that will ship at a later date.

Create a pre-order product page template

To have a product's page say Pre-order instead of Add to cart, you must make a new product template and assign it to your products that can be pre-ordered.

To create a new product template:

  1. From your Shopify admin, click Online Store, and then click Themes (or press G W T).

  2. Find the theme you want to edit, click the ... button, and then click Edit HTML/CSS.

  3. Under Templates, click Add a new template.

  4. From the drop-down menu, select product and name the template pre-order:

    Pre order create new template
  5. Click Create template.

    The new product.pre-order.liquid template will automatically open in the code editor.

  6. In the code editor, find and replace the button label "Add to cart" with the text "Pre-order".

    The code that you need to replace is different in every theme. See the replacement code section for advice on finding the code to replace, and a list of replacement codes for official Shopify themes.

  7. Click Save to confirm your changes to the new product template.

Assign the template to a product

  1. From your Shopify admin, click Products (or press G P P):


  2. Click the name of the product you want to make available for pre-order:

  3. In the Theme templates section, change product to product.pre-order:

    Pre order change template
  4. Click Save to confirm your change to the product.

Inventory levels

If you are tracking product inventory, then you might want to let customers continue to purchase pre-order products even if they are out of stock (have an inventory amount of 0).

There is a setting for this for each product you've created in Shopify. To edit this setting:

  1. From your Shopify admin, click Products (or press G P P):


  2. Click the name of the product you want to make available for pre-order:

  3. Click Edit next to the first variant:

    Pre order edit variant
  4. Check Allow customers to purchase this product when it's out of stock:

    Pre order inventory policy
  5. Click Save.


This setting is controlled variant by variant, so you must change the setting for each variant of a pre-order product. You can edit all the variants of a product at the same time by using bulk editing.

Replacement code

The code that you need to replace in product.pre-order.liquid is different depending on your store theme. The following method should work with similar custom or third-party themes, but every theme is different.

Essentially, you need to replace the label of the "Add to cart" button with the text "Pre-order", whether the label appears directly in the button code or it is dynamically loaded with a translation filter.

Boundless, Brooklyn, Simple, and Venture


addToCart : {{ 'products.product.add_to_cart' | t | json }},

Replace with:

addToCart : {{ 'Pre-order' | json }},

Classic and Launchpad-Star


add_to_cart : "{{ 'products.product.add_to_cart' | t }}",

Replace with:

add_to_cart : "Pre-order",



$addToCartText.html({{ 'products.product.add_to_cart' | t | json }});

Replace with:

$addToCartText.html({{ 'Pre-order' | json }});



<button type="submit" name="add" value="{{ 'products.product.add_to_cart' | t | escape }}" class="btn__shoppingbag">{{ 'products.product.add_to_cart' | t }}</button>

Replace with:

<button type="submit" name="add" value="{{ 'products.product.add_to_cart' | t | escape }}" class="btn__shoppingbag">Pre-order</button>

New Standard


$addText.html({{ 'products.product.add_to_cart' | t | json }});

Replace with:

$addText.html({{ 'Pre-order' | json }});

Pop and Supply


<span id="addToCartText">{{ 'products.product.add_to_cart' | t }}</span>

Replace with:


Want to discuss this page?

Visit the Shopify Community