WooCommerce Pre Order Plugin
A pre-order is an order placed for an item that has not yet been released. The idea for pre-orders came when people found it hard to get popular items in stores due to their popularity.
WooCommerce Pre Order Plugin allows the customer(s) to purchase a product from the store which is currently out of stock. And a customer can even purchase products which have not arrived at the store.
The plugin is very flexible in many ways as customers can order the items with multiple stock units with partial payment as well if allowed by the admin.
Note: If a client has applied ajax to the add-to-cart functionality via any third-party plugin on the product page then it will break the plugin functionality because by default WooCommerce does not support ajax to the add-to-cart functionality on the product page, it is applicable on all archive pages like shop, cart pages.
The shipping will not be generated at the time of pre-order, else it will be generated once the product will come back in stock and the buyer places the order again.
Note -
Video Preview
Why WooCommerce Pre Order Plugin?
Support
Dear Customers, if you have a question/query, please raise a ticket at webkul.uvdesk.com. We will do our best to answer as quick as it is possible. Don’t give us a low rate without contacting support on the issue you’ve faced with. We are always happy to help you.
Features Of WooCommerce Pre Order Plugin
- Works with types of products like Simple, Downloadable, Virtual, Grouped, and Variable.
- The customer can order out-of-stock products.
- The admin can set preorder status and availability date.
- The admin can set custom amount to be paid for pre ordered product.
- The admin can set the add pre-order product permission as Automatic, manual, or both
- The admin can set the email notification as automatic, manual, or both.
- Admin can add dynamic text on the pre-order button.
- Added a custom message on the pre-order product page.
- The admin can restrict any payment method for pre-order products like COD.
- By using this plugin customer can either pay the entire amount at once or can pay some of the amounts.
- Email notification to all registered customers for the new pre-order product.
- Email notification to the customers once pre-order product available in stock.
- Admin can enable/disable the pre-order reminder email to all the customers.
- The admin can enable/disable the pre-order In-Stock reminder email to all the customers.
- Customers can combine pre-orders and regular products in a single purchase.
- Customers can include multiple pre-order items in one order.
Give Your Valuable Review
Highlighted Features
1 – Partial Payment
The module provides the option for advance payments, which can be either full or partial.2 – Notification Mode
Admin can choose to send emails automatically, manually, or both, ensuring customers receive notifications accordingly..3 – Arrival Date
The admin can set the product delivery date directly on the product page.4 – Product Addition Mode
The admin can specify the mode for adding pre-order products as automatic, manual, or both. .Business Use
WooCommerce Pre-Order Extension allows businesses to offer products for sale before they are officially available.
This helps store owners measure customer interest and predict demand before investing fully in production.
By letting customers place orders in advance, the extension ensures that popular items don’t sell out quickly after launch, improving customer satisfaction and loyalty.
This also serves as a marketing tool to create buzz and anticipation for upcoming products, maximizing sales opportunities in competitive eCommerce markets.
ChangeLog
"Initial release v 1.0.0" "Current release v 3.1.1"
3.1.1 (2026-06-22) Fixed: An issue that prevented database tables from being created on certain new PHP versions.
v 3.1.0 (2026-05-27) This release adds flexible pre-order quantity controls, a configurable pre-order start date, full guest pre-ordering, a completion-deadline window with automatic reminders, optional mixed-cart restriction, a "Notify Me" back-in-stock waitlist, customisable front-end labels and colours, and a reorganised settings panel — a big step up in how shoppers place, complete, and get notified about pre-orders. = What's New = * New: Guest pre-ordering. Customers can place pre-orders without creating an account; the order's billing email is used as their identity. (Requires WooCommerce guest checkout to be enabled, and the feature to be turned on in settings.) * New: "My Pre-Orders" page for guests. A guest enters their email, receives a one-time verification code by email, and views all their pre-orders. Enable the page and set how long the guest stays signed in from the settings. * New: Guests can pay the balance from the My Pre-Orders page — once a product is back in stock, "Complete Final Order" adds it to the cart at the remaining amount for checkout. * New: "Notify Me" back-in-stock waitlist. A "Notify Me" button beside the pre-order button lets shoppers subscribe to be emailed when a product is back in stock — guests enter their email, logged-in customers subscribe with one click. Subscribers are emailed automatically on restock. * New: Days-to-Complete window. Set how many days a customer has to complete the final payment after a product is back in stock — per product, or a global default. Overdue customers are emailed a reminder daily, with an optional auto-cancel. * New: Restrict mixed cart. Optionally prevent mixing pre-order and regular products in the same cart, with a configurable message; balance-payment items are always kept on their own. * New: Pre-order start date. Choose a date and time before which customers cannot pre-order; until then the product shows a "Coming soon" message instead of the pre-order button. * New: Default pre-order quantity per product. The quantity field on the product page is pre-filled with your chosen value (and reflects what is already in the cart). * New: Minimum and maximum pre-order quantity per product, enforced on the product page and again at checkout. * New: Option to lock the pre-order quantity so customers cannot change the pre-filled default. * New: Pre-orders can be created without an expected availability date — the countdown is hidden and an "Available soon" label is shown instead. * New: "Start Date" column on the Pre Order Products list, and a "View Product" link on the pre-order edit screen. * New: Settings panel reorganised — pre-order options are now grouped into dedicated Configuration sub-tabs (General, Cart & Checkout, Mails, Labels, Appearance, and more) so related options sit together and are easier to find. * New: "Labels" settings to customise every customer-facing pre-order string — product page, cart, checkout, emails, and My Account — without touching code or template files. * New: "Appearance" settings to control the pre-order colour palette and per-surface typography (badges, buttons, countdown, messages, "Coming soon" / "Available soon" lines). Styles are emitted inline with `!important` so the chosen colours and fonts win over the active theme. * New: Background-colour setting for the "Coming soon" message on the single product page. * New: Shop-listing availability message — products in the shop loop now show a "Stay updated! Pre-orders for this item start on …" / "Available for Pre-Order." / "This item will be available on …" / "Available soon" line below the title, with its own colour and typography settings (separate colour for the "Available soon" variant). * New: Pre-order configuration set on a variable parent product is now inherited by every variation automatically — no need to configure it again per variation. * New: The "Notify Me" button is now restricted to the pre-order planning phase (hidden once a product is back in stock or pre-orders are open), and logged-in shoppers who have already subscribed see a "Subscribed" state instead of a duplicate button. = Improved = * Improved: Pre-order date messages now show both date and time using your site's configured date and time formats. * Improved: Pre-order products no longer show "Out of stock" on the storefront — they show a clear "Available on Pre Order" message with the remaining pre-order stock. * Improved: The "Coming soon" and "Available soon" messages are colour-styled (red / green) for clarity. = Admin Improvements = * Improved: Products with zero stock or marked out of stock are now reliably converted to pre-order when saved (with auto-convert enabled). * New: New settings for guest pre-ordering — enable the feature (only when WooCommerce guest checkout is on), set the guest sign-in session length, and allow or lock customer quantity changes. * New: Guests are prevented from pre-ordering with an email that already belongs to a registered account (asked to log in), from placing a duplicate pre-order for the same product, and from changing their verified email at checkout. * New: "Stock Subscribers" tab listing every "Notify Me" subscriber — product, email, guest or registered, notify status, subscribed date, and last-notified date — with email search. * New: "Days to Complete" field per product plus a global default, with an option to automatically cancel pre-orders whose completion window has passed. * New: "Allow Mixed Cart" setting with a configurable message shown when the restriction blocks the cart. * New: Mail Settings additions — editable templates with on/off toggles for the Days-to-Complete overdue reminder and the back-in-stock "Notify Me" email. * Fixed: The "Enable Guest Pre-Order", "Allow Customer To Change Quantity", and "Convert Product To Pre-Order" settings now save the selected value reliably — previously, certain selections could silently collapse to the disabled / default option on save. = Customer-Facing Fixes = * Fixed: Guest pre-orders now charge the correct advance (deposit) price instead of the regular sale price. * Fixed: Pre-order stock now reduces correctly for guest pre-orders. * Fixed: The checkout button now correctly reads "Place Pre Order" for a guest's initial pre-order instead of "Place Final Order". * Fixed: The date and time picker now opens on the "Pre-order Start Date" field. * Fixed: Guests now stay signed in to the My Pre-Orders page for the configured session length. * Fixed: The pre-order Status (Enabled / Disabled) setting on the edit screen is now saved and displayed correctly. * Fixed: A rare error on the Pre-Order Products page when a product had been deleted. * Fixed: Pre-order button now shows correctly for variations of a variable product — the parent product's pre-order configuration is honoured for the status check, availability date, start date, and the shop badge. * Fixed: Cart now charges the pre-order (advance) price for variations instead of the regular product price. * Fixed: "Login to Pre-Order" no longer appears on a variation when guest pre-ordering is enabled — guests can pre-order variations the same way they pre-order simple products. * Fixed: The "PRE-ORDER NOW" badge now shows on variable products in the shop listing. * Fixed: Countdown timer no longer flashes an "Expired" state momentarily when the availability date passes. * Fixed: My Account → Pre-Orders no longer triggers a fatal error if the underlying WooCommerce order has been deleted — the deleted row is skipped, and a cleanup hook removes orphan pre-order records when an order is trashed or permanently deleted. * Fixed: The WooCommerce sale-price "Save %" badge now wraps cleanly across themes for pre-order products. = For Developers = * Changed: Database schema bumped to 1.0.10 — adds `start_date`, `default_qty`, `min_qty`, `max_qty`, `days_to_complete` columns and makes `availability_date` nullable; adds `completion_deadline` and `last_reminded_at` to `wkwoo_pre_orders`; `wkwoo_pre_orders.user_id` is now varchar and stores the guest billing email; and adds a new `wkwoo_preorder_subscribers` table for the back-in-stock waitlist. Upgrades apply automatically via dbDelta plus targeted, idempotent ALTERs. * Changed: Pre-order helpers accept either a numeric WordPress user id or an email identity, so the same queries serve logged-in and guest customers. * New: Guest verification uses a rate-limited, hashed one-time code and an HMAC-signed, http-only session cookie set early on `template_redirect`; balance payment reuses the WooCommerce order-pay link. * New: A daily Action Scheduler sweep emails overdue Days-to-Complete reminders (or auto-cancels), and restock notifications are dispatched via a deferred async Action Scheduler job that re-checks stock before sending. * New: Filters `wkpodr_coming_soon_text` and `wkpodr_available_soon_text` to customise the pre-window messages. * Changed: All inline `<script>` / `<style>` and `style=""` attributes removed from PHP per WordPress standards — moved into the bundled JS and SCSS assets. * New: Per-surface typography and palette registry (`Wkwoo_Preorder_Appearance`) with sensible defaults, font-size self-healing when stored as `0`, and a `wkpodr_appearance_inline_css` filter to amend the emitted styles. * New: Admin settings templates are now modularised into per-sub-tab files under `templates/admin/` for easier customisation and theming. * New: `Wkwoo_Preorder_Subscriber_Helper` and a dedicated list table back the "Notify Me" waitlist; the subscribers table is created and queried via the same singleton pattern as the other helpers. * New: Pre-order rows are now cleaned up automatically on `woocommerce_trash_order` and `woocommerce_delete_order`, preventing orphan `wkwoo_pre_orders` rows when a merchant deletes an order. * Fixed: Ambiguous `id` column in the admin pre-order product search SQL is now fully qualified (`pr.id`) when the search joins `wp_posts`, preventing rare "ambiguous column" errors on some MySQL configurations. * Changed: Tested with WooCommerce 10.8.
v 3.0.0 (2026-04-22) This is a major release that rebuilds the plugin's data storage from the ground up for better performance, adds full WooCommerce Block Checkout support, and introduces variable product pre-ordering. = What's New = * New: Full support for WooCommerce Block-based Cart and Checkout pages. The "Place Pre Order" and "Place Final Order" button labels, deposited/remaining price badges, and stock validation all work seamlessly with the block checkout. * New: Pre-order support for variable products and individual variations. Customers can select a variation and place a pre-order just like a simple product. * New: Dedicated Pre-Order Products page on the frontend with pagination, displaying all available pre-order products in a shop-like layout. * New: Pre-order countdown timer on single product pages with three display styles — Compact, Small Block, and Big Block. Configurable from admin settings. * New: Richer pre-order status tracking with five states — Pre Ordered, Completed, Cancelled, Notified, and Notified Again — giving admins and customers clearer visibility into the pre-order lifecycle. * New: "Complete Final Order" button on the customer's order view page. After receiving the in-stock notification, customers can click to add the product to their cart at the remaining balance price and complete the payment. * New: Pre-order configuration auto-disables when a product comes back in stock, regardless of notification mode (automatic, manual, or both). New visitors immediately see the regular price. * New: Option to enable or disable coupon usage for pre-order products from the admin panel. * New: "Deposited amount" and "Remaining amount" labels in the cart and mini-cart for pre-order line items. = Improved Performance = * Improved: All pre-order data now stored in dedicated custom database tables instead of WordPress meta. This eliminates expensive database JOINs on stores with large order volumes. * Improved: The "My Account > Pre Orders" page loads significantly faster — uses a lightweight indexed query instead of scanning the entire orders table. * Improved: Admin Pre Order List loads directly from the custom table with built-in pagination and search by order ID. * Improved: Automatic data migration from the old meta-based storage runs in the background via Action Scheduler after upgrading. No manual steps required. = Admin Improvements = * Improved: Pre Order List now shows five clear status labels — Pre Ordered, Completed, Cancelled, Notified, and Notified Again — with a notification badge for each row. * Improved: "Notify" and "Notify Again" row actions are automatically hidden for completed and cancelled pre-orders. * Improved: Bulk notify action shows a clear error message when trying to notify completed or cancelled pre-orders. * Improved: Expected availability date on the admin order page now reads from the pre-order configuration instead of legacy order-item data. * Fixed: Pre-order quantity was not being saved correctly when products were auto-converted to pre-order on going out of stock. * Fixed: Availability date was not migrated properly during the upgrade from older versions. * Fixed: Quantity restoration on order cancellation was not working due to incorrect data source. = Customer-Facing Fixes = * Fixed: Variable product variations can now be added to the cart as pre-orders without the "not enough stock" error. * Fixed: Block checkout no longer rejects pre-order products during payment with a "not enough units in stock" error. * Fixed: Customers who completed a pre-order cycle now see the regular price when purchasing the same product again. * Fixed: "Complete Final Order" button now appears correctly for both customers and admins viewing the order page. * Fixed: Cart correctly shows the advance price for initial pre-orders and the remaining balance for final orders. * Fixed: The "Pre Order" button text now displays correctly on the shop loop for pre-order products. * Fixed: Out-of-stock pre-order products remain visible in the shop catalog when "Hide out of stock items" is enabled in WooCommerce settings. * Fixed: Mini-cart price display for pre-order products. * Fixed: PHP 8.1 deprecation warning on pre-order product listing page pagination. = For Developers = * New: Dedicated helper classes for querying custom tables — flexible filtering by order ID, user ID, product ID, status (including array-based IN queries), with pagination and sorting support. * New: Playwright end-to-end test suite covering the complete pre-order lifecycle across four phases (product creation, customer pre-order, admin notification, balance payment). * Changed: Pre-order status checks now return 'enabled' or empty string. All callers should use `'enabled' === $status` instead of `wc_string_to_bool()`. * Changed: Store API cart-item extension namespace `wc-woocommerce-pre-order` exposes `is_preorder`, `preorder_id`, and `label` fields for custom block integrations. * Changed: Webpack build produces `frontBlock.js` with Store API integration. Run `npm run build` to rebuild
2.4.1 (2025-02-03) Added: Compatibility with the latest WooCommerce version. Fixed: Security and validation issues.
2.4.0 (2025-01-29) Added: Enable customers to place pre-orders and regular products together in a single order. Added: Allow customers to add multiple pre-order products in a single order. Fixed: Fixed an issue where Pre-Order products were not appearing on the Pre-Order Products page in the admin panel when "Convert to product for Pre-Order" was set to "Automatic," and all quantities of a product were purchased by a user. Added: Implemented a tooltip on the "Create Pre-Order" page to provide additional information.