Overview
Anticipo - Pre-Orders for WooCommerce lets you sell a product weeks or months before it arrives. On release day the plugin hands each pre-order back to you as a normal WooCommerce order. Waiting orders sit in their own Pre-ordered status, so they stay out of your normal fulfilment queue.
On the release date, a background job releases every waiting order, reduces stock, moves the orders into your normal workflow and emails your customers. Nobody needs to be logged in for this to happen. The Pro edition adds deposits and pay on release billing, and collects balances as linked WooCommerce orders with a secure payment link. It also adds allocation limits, pre-order pricing, scheduled release reminders, bulk date shifting, reports, a release calendar, CSV export and a REST API.
The plugin is for WooCommerce store owners who launch new products, restock limited editions or pre-sell items from a supplier. It works with simple, variable and external products.
Requirements
- WordPress 6.4 or later (tested up to 7.1)
- PHP 7.4 or later
- WooCommerce 8.2 or later, installed and active
- Works with High Performance Order Storage and legacy order storage, and with the Cart and Checkout blocks
Installation
Anticipo Pro needs WooCommerce, so install and activate WooCommerce first. The Pro plugin replaces the free edition. If the free edition is active, activating Pro switches it off automatically and keeps all your existing pre-orders and settings.
Install and activate WooCommerce if it is not already on your site.
Log in to your ProPluginsLab account and open My Account > Downloads. Download the Anticipo - Pre-Orders for WooCommerce zip file.
In WordPress, go to Plugins > Add New > Upload Plugin, choose the zip file and click Install Now.
Click Activate Plugin.
Go to WooCommerce > Pre-orders and open the Documentation tab for the built-in five minute setup guide.
License and automatic updates
Anticipo works fully as soon as it is activated. The license key turns on automatic updates, so new versions arrive in WordPress like any other plugin update. Pro features never depend on it.
Activate your license
Find your license key in My Account on propluginslab.io, in the license keys section. It is also in your order confirmation email.
In WordPress, open WooCommerce > Licenses. It lists every active ProPluginsLab plugin on the site, one row each.
Paste the key into the Anticipo - Pre-Orders for WooCommerce Pro row and click Activate. The status changes to Active and automatic updates are on.
Receive updates automatically
Once the license is active, new versions of Anticipo show up under Dashboard > Updates and on the Plugins screen. Click Update now, or click Enable auto-updates in the Anticipo row on the Plugins screen and WordPress installs every future release for you.
Good to know
- Keys are checked once a day in the background, so your site never waits for the license server. If the server is briefly unreachable, the plugin keeps its last known status.
- An expired key or a key that is not accepted only stops updates. Anticipo keeps working. After renewing, click Check now in its row.
- Moving to a new domain: click Deactivate on the old site first, then activate the key on the new one. The status shows Site address changed, checking until the new address is confirmed.
- On the command line:
wp ppl-license list,wp ppl-license activate <plugin> <key>,wp ppl-license checkandwp ppl-license deactivate <plugin>.
Quick start
- Check the store wide settings
Go to WooCommerce > Pre-orders > Settings. Make sure Enable pre-orders is ticked, then choose your Default billing (pay in full, pay on release or deposit) and review the Add to cart button text and Availability message. Click Save settings.
- Turn a product into a pre-order
Edit the product you want to sell early. In the Product data box, open the Pre-order tab, tick Enable pre-orders and set the release date. Dates are entered in your store timezone. Click Update.
- Check the product in your shop
View the product in your store. It now shows your pre-order button text, the availability message with the release date filled in, a pre-order badge and a countdown to release.
- List upcoming products on a page (optional)
Add
[anticipo_preorder_products]to any page to show every product currently taking pre-orders, soonest release first. - Review the customer emails
Go to WooCommerce > Settings > Emails and open the pre-order emails, such as Pre-order confirmed, to adjust the subject, heading and message.
- Follow your pre-orders
As orders come in, they appear under WooCommerce > Pre-orders. Use the Release calendar tab to see what is due to release and the Reports tab to see what is booked, collected and outstanding.
#Pre-orders list
Go to WooCommerce > Pre-orders. The first tab, Pre-orders, lists every pre-ordered line in your store with these columns: Order, Product, Customer, Qty, Billing, Status, Release date, Value and Placed.
To narrow the list:
- Use the three drop-downs (Every status, Every billing mode, Every product) and click Filter.
- Type in the search box and click Search pre-orders.
- Click a sortable column heading (Order, Qty, Status, Release date, Value, Placed) to sort.
You can release or cancel pre-orders by hand, one at a time or in bulk. Tick the rows you want, choose an action from Bulk actions and click Apply. Use Screen Options to adjust the list view.
#Release calendar
The Release calendar tab helps you plan launches. Releases run automatically in the background, so you use this screen for planning rather than for watching.
What is due to release groups your open pre-orders by release day. For each day it shows the number of Pre-orders, the Units, the Value and the amount still To collect.
Products with open pre-orders lists each product with its Release date, Open units and Allocation (units claimed against the product's cap). In the Actions column you can:
- Click Release now to release that product's pre-orders straight away.
- Enter a number of days and click Shift days to move the release date. Shifting a date updates every open pre-order for that product and emails the affected customers in the background.
#Reports
The Reports tab shows demand and money for your pre-orders. Choose a period (Last 7 days, Last 30 days, Last 90 days or Last 12 months) and click Apply.
The summary cards show:
- Pre-orders taken, Units reserved and Customers
- Value booked (full value of everything reserved)
- Collected so far (deposits and upfront payments)
- Still to collect (balances due on release day)
- Cancellation rate (worth watching after a date change)
- Average line value
Below the cards you find:
- Pre-orders per day: a chart of units reserved each day.
- Most pre-ordered products: units, value and outstanding amount per product.
- Where the money sits: lines, collected and outstanding amounts per billing mode.
- By status: lines, units and value per pre-order status.
- Commitment outstanding right now: a sentence that sums up what you currently owe customers and what has not been collected yet.
Report figures are cached. You can change how long under Settings > Advanced > Cache reports for this many minutes.
#Settings
The Settings tab holds the store wide behaviour. Every product can override the release date and wording on its own Pre-order tab. The screen is split into five groups:
- General: switch pre-orders on or off, decide whether pre-orders can share a cart with in-stock items, and set the default billing and deposit.
- Display: what shoppers see, such as the button text, availability message, badge, countdown and allocation progress bar. Use
{date}for the release date and{time}for the release time in the text fields. - Release workflow: the order statuses before and after release, automatic release, batch size, when stock is reduced and when release reminders are sent.
- Advanced: report caching, the My Account endpoint slug, the activity log and data removal.
- Payments: how long customers have to pay a balance, what happens if they never pay, automatic charging of saved cards and customer self cancellation.
Click Save settings at the bottom after making changes. Every field is listed in the settings reference below.
#Status
The Status tab is where you look first when something seems wrong.
Health checks reports on Action Scheduler, Database tables, Schema version, Overdue releases, Order storage and Translation plugin. A green dot means the check is fine.
Background queue lists the scheduled jobs the plugin has queued, with the Job name, when it Runs at and its Arguments. For example, you see a release job for each product with a release date, plus daily maintenance and reminder jobs.
Activity log shows everything the plugin has done, newest first, with When, Level, Order and Message. Use it when a customer asks what happened to their order. You can change how much is recorded with Activity log detail on the Advanced settings group.
#Built-in documentation
The Documentation tab contains a guide inside your dashboard. Click a heading to expand it. Topics include:
- Set up your first pre-order in five minutes, and what the customer sees
- Every setting explained, with defaults
- The Pre-order tab on a product, and listing upcoming pre-orders on a page
- What happens on release day, including releasing early, missed releases and stock
- The emails, where to edit them, merge tags and changing the layout
- Running a multilingual store
- Keeping your store fast
- If something looks wrong
- Developer reference: hooks, helper functions and template overrides
#The Pre-order tab on a product
You turn a product into a pre-order from the product edit screen. It works for simple, variable and external products.
- Edit the product and scroll to the Product data box.
- Click the Pre-order tab.
- Tick Enable pre-orders and set the release date and time. Dates are entered in your store timezone and stored in UTC, so changing the site timezone later never moves a launch.
- Click Update.
On this tab you can also:
- Take pre-orders before a date is announced by ticking "date not announced yet". When you fill in the date later, every waiting customer is emailed automatically.
- Set a cut-off date so orders close before release.
- Give the product its own button text, availability message and Badge text (for example "Coming soon" or "Limited edition") instead of the store wide wording.
- Set the product's own billing rule, such as a deposit. Products that do not set a rule use Default billing from the settings.
- Cap the total units and the maximum per customer (allocation limits).
- Add pre-order pricing: a discount or premium that stops applying when the product releases.
Variations inherit the release date and rules from the parent product, and Pro also supports per variation release dates.
#What happens on release day
When Release automatically on the availability date is on, the plugin releases each product's waiting orders on its release date. For each order it:
- Reduces stock (when Reduce stock on release rather than at checkout is on).
- Moves the order from the Status for orders awaiting release to the Status once released, usually Processing, so it joins your normal fulfilment queue.
- Emails the customer.
- For deposit and pay on release orders, collects the balance as a real, linked WooCommerce order with a secure payment link. If Try to charge the saved card automatically is on, the plugin tries the saved payment method first and falls back to emailing a payment link.
Releases run in the background through WooCommerce Action Scheduler in small batches, so a large launch never blocks a page load. A nightly sweep catches anything that was missed.
To release by hand, use Release now on the Release calendar tab, or bulk actions on the Pre-orders tab.
#Emails
The plugin's emails are real WooCommerce emails. You manage them under WooCommerce > Settings > Emails. They include pre-order confirmed, release date changed, pre-order released and pre-order cancelled for the customer, plus a new pre-order notice for the store. The Documentation tab lists every email, who it goes to and when it is sent.
Two examples:
- Pre-order confirmed is sent to the customer as soon as their pre-order is paid for. It confirms what has been reserved, when it is expected and anything still to pay.
- Pre-order date changed is sent when you change a release date on a product that already has pre-orders.
Each email has Enable/Disable, Subject, Email heading, Message, Additional content, Email type, Cc(s) and Bcc(s). The Message is the text shown above the table of pre-ordered products. You can use these merge tags in it: {site_title} {site_url} {customer_name} {order_number} {order_date} {release_date} {product_list} {old_date} {account_url} {pay_url} {balance} {due_date} {days}.
The Email preview below the fields shows how the email looks. Click Send a test email to send one to yourself, and Save changes to keep your edits. The HTML and plain text templates can be overridden from your theme.
Settings reference
WooCommerce > Pre-orders > Settings
| Setting | Type | Default | What it does |
|---|---|---|---|
| Enable pre-orders | checkbox | on |
Turns every pre-order feature off without losing any data or settings. Existing pre-orders stay in the database and resume when you switch this back on. |
| Mixed carts | select | Allow pre-order and in-stock items together |
Whether pre-order and in-stock items can be bought together. Options: Allow pre-order and in-stock items together, Allow but warn the customer at checkout, Block: pre-orders must be bought on their own. A pre-order holds the whole order until release day. |
| Default billing | select | Pay in full at checkout |
How customers pay when a product does not set its own rule. Options: Pay in full at checkout, Pay nothing now, pay on release, Deposit now, balance on release. |
| Default deposit type | select | Percentage of the price |
Used when a product asks for a deposit but does not say what kind. Options: Percentage of the price, Fixed amount. |
| Default deposit value | number | 25 |
A percentage when the deposit type is percentage, otherwise an amount in your store currency. |
| Add to cart button text | text | Pre-order now |
Shown instead of the usual Add to cart label on pre-order products. |
| Availability message | text | Ships on {date} |
Shown under the price on the product page. Supports {date} and {time}. |
| Message when the date is unknown | text | Release date to be announced |
Used on products where you ticked "date not announced yet". |
| Show a pre-order badge on product images | checkbox | on |
Shows a badge on the images of pre-order products. |
| Badge text | text | Pre-order |
The store wide badge wording. A product can set its own wording on its Pre-order tab. |
| Show the availability message in shop listings | checkbox | on |
Shows the availability message in shop listings as well as on the product page. Leave this off on very large catalogues if you want the minimum work done per listing. |
| Show a countdown to release | checkbox | on |
A live countdown on the product page. Hidden automatically when no date is announced. |
| Show remaining pre-order allocation | checkbox | on |
Only appears on products that set a maximum number of pre-orders. Displays a progress bar such as "82 of 100 claimed". |
| Status for orders awaiting release | select | Pre-ordered |
The order status used while an order waits for release. Defaults to the Pre-ordered status this plugin adds, which keeps pre-orders out of your normal pick list. |
| Status once released | select | Processing |
The order status after release. Usually Processing, so released pre-orders join your normal fulfilment queue. |
| Release automatically on the availability date | checkbox | on |
Switch this off to review each launch yourself and press Release manually from the Pre-orders screen. |
| Orders per background batch | number | 25 |
How many orders each background run releases. Lower this on shared hosting. Higher values finish a launch faster but use more memory per run. |
| Reduce stock on release rather than at checkout | checkbox | on |
On by default. The units do not exist yet, so reducing stock at checkout would make your inventory figures wrong for weeks. |
| Send release reminders this many days before | text | 7,1 |
Comma separated. For example 14,7,1 sends three reminders. Leave empty to send none. |
| Cache reports for this many minutes | number | 15 |
How long report figures are cached. Set to 0 to always recalculate. Only do that on small stores. |
| My Account endpoint slug | text | pre-orders |
The URL segment for the customer pre-orders page. Save your permalinks after changing this. |
| Activity log detail | select | Errors and normal activity |
How much the activity log records. Options: Off, Errors only, Errors and normal activity, Everything, including debug detail. |
| Delete log entries older than (days) | number | 90 |
Log entries older than this number of days are removed. |
| Delete all pre-order data when the plugin is deleted | checkbox | off |
Off by default. Deactivating never removes data. Only deleting the plugin with this box ticked does. |
| Days the customer has to pay the balance | number | 7 |
Counted from release day. The customer gets a final reminder one day before the deadline. |
| Cancel the pre-order if the balance is never paid | checkbox | off |
Off by default. Leave it off if you would rather chase the customer yourself. |
| Try to charge the saved card automatically | checkbox | off |
Only works when the gateway supports saved payment methods and the customer saved one at checkout. If the charge cannot be attempted or fails, the customer is emailed a payment link instead. |
| Let customers cancel their own pre-orders | checkbox | on |
Adds a Cancel button to the customer pre-orders page in My Account. |
| Stop self cancellation this many days before release | number | 2 |
Customers cannot cancel their own pre-orders within this many days of release. |
WooCommerce > Settings > Emails > Pre-order confirmed
| Setting | Type | Default | What it does |
|---|---|---|---|
| Enable/Disable | checkbox | on |
Enable this email notification. |
| Subject | text | - | The email subject. When empty, the placeholder "Your pre-order is confirmed, order {order_number}" is used. |
| Email heading | text | - | The main heading in the email. When empty, the placeholder "Your pre-order is reserved" is used. |
| Message | textarea | - | The text shown above the pre-order table. Available tags: {site_title} {site_url} {customer_name} {order_number} {order_date} {release_date} {product_list} {old_date} {account_url} {pay_url} {balance} {due_date} {days} |
| Additional content | textarea | Nothing else is needed from you right now. You can review this pre-order at any time from your account: {account_url} |
Extra text shown in the email. |
| Email type | select | HTML |
The email format. Options: Plain text, HTML, Multipart. |
| Cc(s) | text | - | Addresses that receive a copy of this email. |
| Bcc(s) | text | - | Addresses that receive a blind copy of this email. |
WooCommerce > Settings > Emails > Pre-order date changed
| Setting | Type | Default | What it does |
|---|---|---|---|
| Enable/Disable | checkbox | on |
Enable this email notification. |
| Subject | text | - | The email subject. When empty, the placeholder "New release date for your pre-order, order {order_number}" is used. |
| Email heading | text | - | The main heading in the email. When empty, the placeholder "Your release date has moved" is used. |
| Message | textarea | - | The text shown above the pre-order table. Available tags: {site_title} {site_url} {customer_name} {order_number} {order_date} {release_date} {product_list} {old_date} {account_url} {pay_url} {balance} {due_date} {days} |
| Additional content | textarea | Sorry for the change, and thank you for your patience. You can review this pre-order here: {account_url} |
Extra text shown in the email. |
| Email type | select | HTML |
The email format. Options: Plain text, HTML, Multipart. |
| Cc(s) | text | - | Addresses that receive a copy of this email. |
| Bcc(s) | text | - | Addresses that receive a blind copy of this email. |
Shortcodes
[anticipo_preorder_products]
Lists every product currently taking pre-orders as a normal shop grid, soonest release first. Products with no announced date are listed last.
[anticipo_preorder_products limit="12" columns="4"]
| Attribute | Default | Description |
|---|---|---|
limit | - | The number of products to show. |
columns | - | The number of columns in the grid. |
orderby | - | Sort order: release_date or title. |
category | - | Product category slugs to limit the list to. |
empty | - | The message shown when nothing is on pre-order. |
On your site
Shoppers see pre-order products clearly marked in your store:
- A pre-order badge on the product image, in shop listings and in the cart. The wording comes from Badge text in the settings, or from the product's own Badge text.
- Your Add to cart button text (for example
Pre-order now) instead of the usual Add to cart label. - The availability message under the price, with the release date filled in (for example
Ships on {date}). - A live countdown to release on the product page, when a date is announced.
- An allocation progress bar such as "82 of 100 claimed" on products with a maximum number of pre-orders.
When you add the [anticipo_preorder_products] shortcode to a page, shoppers see a grid of upcoming products with the same badges, messages and buttons.
Logged-in customers also get a Pre-orders tab in My Account. It lists everything they have reserved, its status and when it arrives. If you allow self cancellation, it also shows a Cancel button.
Frequently asked questions
Does this work with variable products?
Yes. Variations inherit the release date and rules from the parent product. Pro also supports per variation release dates.
Why is my stock not going down when someone pre-orders?
This is by design. Stock is reduced on release day, because the units do not exist yet. If you are pre-selling from stock you already hold, turn off Reduce stock on release rather than at checkout under WooCommerce > Pre-orders > Settings > Release workflow.
How are deposits and balances collected?
Choose Deposit now, balance on release or Pay nothing now, pay on release as the Default billing, or set a rule on a product. On release day the balance is collected as a real, linked WooCommerce order with a secure payment link. The customer has the number of days set in Days the customer has to pay the balance. No card details are stored by the plugin.
Can I show all my upcoming pre-orders on one page?
Yes. Add [anticipo_preorder_products] to any page. It shows every product currently taking pre-orders, soonest release first. It accepts limit, columns, orderby, category and empty.
Can the badge say something other than "Pre-order"?
Yes. Set the store wide wording in Badge text under Settings > Display, or give a single product its own wording in the Badge text field on its Pre-order tab.
Does it work with High Performance Order Storage?
Yes, and with legacy post based storage. It also works with the Cart and Checkout blocks. The Status tab shows which order storage your store uses.
What happens to my data from the free edition?
Activating Pro switches the free edition off automatically and keeps all of your existing pre-orders and settings.
Is my data deleted if I remove the plugin?
Only if you ask for it. Deactivating never deletes anything. Deleting the plugin removes data only when Delete all pre-order data when the plugin is deleted is ticked under Settings > Advanced.
Troubleshooting
- The release date passed and nothing happened
Open WooCommerce > Pre-orders > Status. Health checks tells you whether Action Scheduler is running and whether any release is overdue, and Background queue shows the scheduled release jobs. Also check that Release automatically on the availability date is ticked in the settings. You can release by hand with Release now on the Release calendar tab. On a very low traffic site, pointing a real server cron at
wp-cron.phpmakes scheduled jobs punctual.- The Pre-orders tab in My Account returns a 404
Go to Settings > Permalinks and click Save Changes without changing anything. This regenerates the rewrite rules. Do the same whenever you change My Account endpoint slug.
- The pre-order button is not showing on a product
Check that Enable pre-orders is ticked under WooCommerce > Pre-orders > Settings > General. Then edit the product, open the Pre-order tab in the Product data box and make sure Enable pre-orders is ticked there too, and click Update.
- A customer asks what happened to their order
Open the Activity log on the Status tab. It lists everything the plugin has done, newest first, with the order number. If the log is too thin, raise Activity log detail under Settings > Advanced.
- Launches are slow or run out of memory on shared hosting
Lower Orders per background batch under Settings > Release workflow. Smaller batches use less memory per background run.
- A customer never paid their balance
By default the pre-order is not cancelled, so you can follow up yourself. To cancel unpaid balances automatically, tick Cancel the pre-order if the balance is never paid under Settings > Payments. The deadline is set by Days the customer has to pay the balance.