WooCommerce Pre-Orders

With WooCommerce Pre-Orders you can sell pre-orders for products and services in your WooCommerce store.

Pre-Orders can be charged upfront or when the pre-order is available by setting an optional date and time when the pre-order will be available. WooCommerce Pre-Orders requires at least WooCommerce 2.0.5 or higher.

Installation ↑ Back to top

  1. Download the extension from your dashboard.
  2. Go to: Plugins > Add New > Upload and select the ZIP file you downloaded.
  3. Click Install Now, and then Activate.

More info at: Installing and Managing Plugins.

Setup and configuration ↑ Back to top

General settings ↑ Back to top

Go to: WooCommerce > Settings > Pre-Orders.

  • Add to Cart Button Text – This controls the Add to Cart button text for products with pre-orders enabled on both the shop loop and single product pages.
  • Place Order Button Text – This controls the text shown on the Place Order button on the checkout/pay pages for orders containing a pre-order product so a more appropriate message, such as Place Pre-Order Now can be displayed, rather than Place Order
  • Single Product Page Message – This controls the message shown below the price on the single product page. Use {availability_date} and {availability_time} to represent the product’s availability date and time. This is a global setting and applies to all products with pre-orders enabled. pre-orders-singleproduct
  • Shop Loop Product Message – This controls the message shown below the price on the shop loop page. Use {availability_date} and {availability_time} to represent the product’s availability date and time. This is a global setting and applies to all products with pre-orders enabled.
    pre-orders-productcatalog
  • Availability Date Title Text – Adjust the text shown under the product when in the cart, and on the “thank you”, view order, order email templates, etc, order details tables. pre-orders-cart
  • Charged Upon Release Order Total Format – Adjust how the order total displays when a pre-order is charged upon release (e.g. when the availability date is reached). Use {order_total} to represent the order total and {availability_date} to represent the date when the pre-order will be released.
  • Charged Upfront Release Order Total Format – Adjust how the order total displays when a pre-order is charged upfront.Use {order_total} to represent the order total.
  • Disable automated pre order processing – This is used for when you’re on a staging/testing site and don’t want any pre orders to be processed automatically.

Product settings ↑ Back to top

Pre-orders can be enabled for either simple or variable product types by editing a product and using the new “Pre-Orders” tab which is added to the Product Data admin panel:

pre-orders-productsettings

As shown in the above image, the following fields are available for configuration:

  • Enable Pre-Orders – This enables the product in question for pre-order
  • Availability Date/Time – Set an optional availability date/time for when the pre-order product is “available” for purchase as a regular product. If set, this availability date and time will be displayed in a number of places on the frontend, and once the date/time is reached the product will cease to be a “pre-order” product, and behave as a normal product.
  • Pre-order Fee – This allows you to charge an optional pre-order fee on top of the regular product price
  • When to charge – This determines when a pre-order product is charged for. The options include:
    • Upon Release – A pre-order product charged “upon release” is not charged until the product is made available for purchase, that is to say, stops being a pre-order product. This can happen either by the optional Availability Date/Time being met, or by a shop admin manually completing a pre-order. Supported gateways will automatically charge a saved credit card for pre-order customers, while any gateway can be supported by a “Pay Now” email being dispatched to the pre-order customer to collect payment.
    • Upfront – A pre-order product charged “upfront” is charged at checkout as would be a normal product.
Pre-Orders applies to the product-level, meaning all variations will be marked as pre-order items. This allows users to choose which variation they want to pre-order, but does not allow you to set individual variations as pre-order items. For that scenario, you can use the Backorders functionality built into WooCommerce core.

Updating product pre-order configuration ↑ Back to top

The above product pre-order configuration can be altered from within the Product admin up and until the point when a non-cancelled pre-order exists for the product. At that point the Pre-Order tab becomes read-only:

pre-orders-activepreorder

As long as there are Active pre-orders for a product the fee and “when to charge” settings can not be changed, while the release date may be changed via the new WooCommerce > Pre-Orders > Actions tab, described later in this document.

Displaying pre-order countdown timer ↑ Back to top

Pre-order countdown timers may be added to the product page, or indeed any page using the new shortcode: [woocommerce_pre_order_countdown]. This shortcode supports a number of optional arguments, and in its simplest form will display the years, months, days, hours, minutes and seconds remaining until the Availability Date/Time, for the current page product. The following options may also be used to customize the timer to suit your needs:

  • product_id/product_sku – id or sku of pre-order product to countdown to. Defaults to current product, if any. This allows you to place the countdown timer for a particular product anywhere on your site that shortcodes are supported.
  • until – date/time to count down to, overrides product release date if set. Example values: “15 March 2015”, “+1 month”. More examples: http://php.net/manual/en/function.strtotime.php
  • layout – The countdown layout, defaults to y Years o Months d Days h Hours m Minutes s Seconds. See http://keith-wood.name/countdownRef.html#layout for all possible options
  • format – The format for the countdown display. Example: ‘yodhms’ to display the year, month, day and time. See http://keith-wood.name/countdownRef.html#format for all options
  • compact – If ‘true’ displays the date/time labels in compact form, ie ‘d’ rather than ‘days’. Defaults to ‘false’ (Reference: http://keith-wood.name/countdownRef.html#compact)
  • before – text to show before the countdown. Only available if ‘layout’ is not '' (an empty string)
  • after – text to show after the countdown. Only available if ‘layout’ is not '' (an empty string)

Once the Availability Date/Time is reached, the product page will refresh if open, and the product will be displayed as a normal product.

Product inventory ↑ Back to top

Product inventory is enabled/disabled and managed as for any normal product. This allows you to set stock, mark as “out of stock” and otherwise manage inventory for your pre-order product like normal. If stock management is enabled, the product inventory will be reduced with each pre-order placed, meaning you can easily and effectively limit the stock of items available for pre-order. If an item is out of stock and backorders are not allowed, then users will see the message “No longer available for pre-ordering”.

Pay Later payment gateway ↑ Back to top

The Pre-Orders plugin includes a “Pay Later” gateway which is used to provide support for any and all payment gateways pre-order products which are paid for “upon release.” The Pay Later gateway will only be displayed as an option during checkout if there is a pre-order in the cart and the pre-order amount is charged “upon release,” alongside any available supported gateways:

pre-orders-paylater

The Pay Later gateway can be configured by going to WooCommerce > Settings > Checkout > Pay Later where it can be enabled/disabled, and the displayed Title and Description can be customized.

 

WooCommerce Pay Later payment gateway settings
WooCommerce Pay Later payment gateway settings

Emails admin ↑ Back to top

The Pre-Orders plugin includes a number of pre-order specific emails (described below), which can be configured and customized like any of the WooCommerce core emails from the WooCommerce > Settings > Emails tab.

Managing pre-orders ↑ Back to top

Manage ↑ Back to top

A pre-order is managed very similarly to a standard order, with an additional “pre-ordered” stage in which the pre-order is active and can either be cancelled (order processing terminates) or completed (order processing continues as normal). The Pre-Orders plugin adds this new Order status named “pre-ordered”. An order with this status indicates that a pre-order has been placed for a product which is not yet available for fulfillment and a “Pre-Order” record is created and associated with the order (referred to as the “Parent Order”). A “Pre-Order” may have one of the following statuses, which are distinct from the regular Order status:

  • Active – A pre-order status of “active” indicates that a product has been pre-ordered and is not yet available for fulfillment. The parent Order should have a status of “pre-ordered”. The product may have been paid for already (for pre-orders which are configured to be paid “upfront”) or may require payment “upon release”.
  • Completed – A pre-order status of “completed” indicates that a product has been pre-ordered and is now available for fulfillment. The parent Order should have a status of “pending”, “processing”, “failed” or “completed”, depending on the pre-order configuration, payment status, and order handling process. The product may have been paid for already, or may still require payment. Once a pre-order status is set to “complete” the parent Order is no longer considered to be “pre-ordered” and should be managed as would any other order.
  • Cancelled – A pre-order status of “cancelled” indicates that a pre-order has been cancelled. When a pre-order is cancelled the parent Order status will transition to “cancelled” as well, and the order is no longer considered “pre-ordered” and should be managed as would any other order in terms of managing refund, etc.

Pre-orders and pre-order statuses may be viewed, managed and administered in WooCommerce > Pre-orders:

pre-orders-preorders

The Manage screen allows you to:

  • Quickly view all your pre-orders at a glance
  • Segment your pre-orders by pre-order status (Active, Cancelled, Completed)
  • Filter pre-orders by customer, products or availability date
  • Perform a bulk action on one or more pre-orders. Each bulk action results in the dispatch of an email to the affected customers, alerting them to the change in pre-order status, and an optional message can be provided in the textarea shown in the image above. The available bulk actions include:
    • Cancel – Cancel one or more pre-orders (this will also cancel the parent order record). Note that for “upfront” payment pre-orders, any charges will not be automatically reversed and must be done so manually as with a normal WooCommerce refund.
    • Complete – Complete one or more pre-orders. This will have the effect of charging the customer for “upon release” pre-orders, whether automatically by a supported gateway, or by sending them a “Payment Required” email to complete the checkout process. Either way the parent order status will move to “pending”, “processing”, “failed” or “completed” depending on the configuration of the pre-order, and the payment status. Regardless, once a pre-order is “completed” order management is handled in the normal WooCommerce way.
    • Customer Message – This allows you to send an arbitrary message to all customers with selected pre-orders, without changing the pre-order status. This could be used to provide important updates to your customers regarding the status of their pre-order, or other news.

Pre-order actions ↑ Back to top

In addition managing/administering pre-orders individually/in bulk from the “Manage” tab, certain actions can be performed on pre-orders, based on the product, from the WooCommerce > Pre-Orders > Actions tab. These actions allow you to select a pre-order product and perform an action upon all pre-orders for a given product, optionally send an email notification to the affected customers, and supply an optional customer message. The following actions are supported:

  • Email – Allows you to send a custom email to a group of pre-order customers based on their product. This will not change the pre-order status.
  • Change Release Date – This action allows you to change the Availability Date/Time for a pre-order product, and updates and optionally notifies all affected customers. This will not change the pre-order status.
  • Complete – Completes all active pre-orders for the given product, charging customers who used a supported gateway and optionally sending all affected customers a notification informing them their pre-order is available, or requires payment, depending on the pre-order configuration and order payment status. The parent order status will move to “pending”, “processing”, “failed” or “completed” depending on the configuration of the pre-order, and the payment status. Regardless, once a pre-order is “completed” order management is handled in the normal WooCommerce way.
  • Cancel – Cancels all active pre-orders, optionally sending an email notification along with a customized message. Note that for “upfront” payment pre-orders, any charges will not be automatically reversed and must be done so manually as with a normal WooCommerce refund. This action will set the parent order status to “cancelled” as well. pre-orders-actions

Order management ↑ Back to top

Once a pre-order is cancelled or completed the parent Order status changes from “pre-ordered” to one of “pending,” “processing,” “failed,” “cancelled” or “completed” depending on the action, pre-order configuration and order payment status. Once the pre-order status is no longer “active” and the order status is no longer “pre-ordered,” the parent Order can be managed as would be any normal order, in terms of completing payment, issuing refunds, etc.

Putting an order with an “active” pre-order into the trash will cause the pre-order status to change to “cancelled.” The associated customer will not be emailed in this case.

Customer experience ↑ Back to top

To provide the best and most satisfactory customer experience, pre-order products are modified in the shop/category catalog pages, product page, cart and checkout pages, and order detail tables on the “thank you,” view order and email notifications, to show text indicating that the product is available for “pre-order” and what its release date/time is, if configured.

Add to cart ↑ Back to top

Due to the complexity of the pre-order checkout process, an order may contain only a single pre-order product, and no other products, pre-order or otherwise. If a customer adds a pre-order product to a non-empty cart, the cart will be automatically emptied and the pre-order product added:

pre-orders-notices

Checkout ↑ Back to top

During checkout there are two main “modes” of collecting payment: “upfront” and “upon release.” Pre-order products that are configured to require payment “upfront” can be purchased with any gateway in the normal manner as payment is collected at the time of checkout as with a normal product. Pre-order products that are configured to be collect payment “upon release” are handled differently as payment is not authorized/settled during the checkout process, but rather later when a pre-order is completed.

Pre-orders that are paid for “upon release” can be paid for “automatically” when the pre-order is completed by a supported gateway which collects and saves (in a PCI compliant manner) payment details during checkout, or “manually” with any gateway by the sending of a “Payment Required” email to the customer to collect payment details when a pre-order is completed. Of course a “manual” payment requires extra actions/steps by the customer for the transaction to be finalized, so using a supported gateway is preferable whenever possible as it should increase customer satisfaction and reduce the rate of customers failing to complete their pre-order transaction. Manual payment is made possible by the special Pay Later Gateway added by this plugin.

Customer account ↑ Back to top

Customers can view past and current pre-orders by visiting the Pre-Orders tab on your My Account page:

 

Completed, active and canceled pre-orders are displayed, and customers have the ability to cancel active pre-orders.

Pre-order emails ↑ Back to top

The Pre-Orders plugin adds a number of pre-order emails to allow for notifications for the new pre-order and order statuses. The new emails are summarized below:

Name Type Description
New Pre-Order Admin Dispatched to the shop admin when a pre-order is placed, this is the equivalent of the standard “New Order” email and notifies the admin that a new pre-order has been received by the shop.
Pre-Ordered Customer Dispatched to the customer when a pre-order is placed, this is the equivalent of the standard “Processing Order” email and notifies the customer that their pre-order has been successfully received.
Pre-Order Release Date Changed Customer Optionally dispatched to the customer when a pre-order release date change occurs and notifies the customer of the change in availability date. An optional message may be provided by the shop admin.
Pre-Order Cancelled Customer Optionally dispatched to the customer when a pre-order is cancelled and notifies the customer of the cancellation event. An optional message may be provided by the shop admin.
Pre-Order Available Customer Optionally dispatched to the customer when a pre-order is completed and notifies the customer of the availability of their pre-order product. In the case of a payment “upon release” product with a non-supported gateway (Pay Later gateway) or with a supported gateway that encounters a payment processing error (for instance expiration of the previously provided credit card), a “payment required” message and link is included to return the customer to a pay page on your shop to remit payment for their pre-order product. An optional message may be provided by the shop admin.

All of the above emails may be customized an configured in the WooCommerce Emails Admin.

Order completion ↑ Back to top

Once the pre-order has been completed the order is no longer considered to be “pre-ordered” and order processing behaves as with a normal product. The customer will receive any and all emails and notifications they would with the purchase of any other product from your shop.

Supported gateways for automatic payments ↑ Back to top

There are several payment gateways that support automatic payments for pre-orders. This means that a customer can provide their credit card information upfront during checkout, and their card will be automatically charged when the pre-order is available.

Want to add pre-orders support to your payment gateway? Read the Pre-Orders Payment Gateway Integration Guide to learn how.

Frequently Asked Questions ↑ Back to top

Do Pre-Orders work with Subscriptions? ↑ Back to top

Not at this time.

Can multiple products with pre-order enabled be added to cart at the same time? ↑ Back to top

Each product with pre-order enabled has to be purchased separately. The extension functions this way to prevent conflicts with payments.

Questions and Support ↑ Back to top

Have a question before you buy? Please fill out this pre-sales form.

Already purchased and need some assistance? Get in touch with a Happiness Engineer via the Help Desk.

Have a suggestion regarding a feature you’d like to see included in this product? Add it to our Ideas Board.

WooCommerce - the most customizable eCommerce platform for building your online business.

Back to the top