Pro plugin Version 1.5.2 Updated

Anticipo - Pre-Orders for WooCommerce documentation

Sell products before they exist: deposits, pay on release or cards charged on release. Add allocation limits, reports and an automatic release day.

Try the live demo Get Anticipo

Overview

Sell products before they exist: deposits, pay on release or cards charged on release. Add allocation limits, reports and an automatic release day.

Requirements

  • WordPress 6.4 or later
  • PHP 7.4 or later
  • WooCommerce 8.2 or later
  • Required plugins: woocommerce

Installation

Download Anticipo - Pre-Orders for WooCommerce from your ProPluginsLab account, then upload it to WordPress.

  1. Log in to your ProPluginsLab account and open My Account > Downloads.

  2. Download the plugin zip file.

  3. In your WordPress admin, go to Plugins > Add New Plugin > Upload Plugin.

  4. Choose the zip file, click Install Now, then Activate.

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

  1. Find your license key in My Account on propluginslab.io, in the license keys section. It is also in your order confirmation email.

  2. In WordPress, open WooCommerce > Licenses. It lists every active ProPluginsLab plugin on the site, one row each.

  3. 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.

The license screen with a license key field, an Activate button and the license status
WooCommerce > Licenses: paste the key and click Activate.

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 check and wp ppl-license deactivate <plugin>.

Quick start

  1. Open Pre-orders

    Go to wp-admin/admin.php?page=anticipo-preorders in your WordPress admin.

  2. Open Pre-orders

    Go to wp-admin/admin.php?page=anticipo-preorders&tab=reports in your WordPress admin.

  3. Open Pre-orders

    Go to wp-admin/admin.php?page=anticipo-preorders&tab=calendar in your WordPress admin.

  4. Open Licenses

    Go to wp-admin/admin.php?page=cwg-licenses in your WordPress admin.

#Pre-orders

Location: wp-admin/admin.php?page=anticipo-preorders

On this screen:

  • Pre-orders
Screenshot: Pre-orders
Pre-orders

#Pre-orders

Location: wp-admin/admin.php?page=anticipo-preorders&tab=reports

On this screen:

  • Pre-orders
  • Pre-orders per day
  • Most pre-ordered products
  • Where the money sits
  • By status
  • Commitment outstanding right now
Screenshot: Pre-orders
Pre-orders

#Pre-orders

Location: wp-admin/admin.php?page=anticipo-preorders&tab=calendar

On this screen:

  • Pre-orders
  • What is due to release
  • Products with open pre-orders
Screenshot: Pre-orders
Pre-orders

#Licenses

Location: wp-admin/admin.php?page=cwg-licenses

On this screen:

  • Licenses
Screenshot: Licenses
Licenses

#Edit product

Location: wp-admin/post.php?post=40&action=edit

On this screen:

  • Edit product
  • Product description
  • Publish
  • Product image
  • Product gallery
  • Product categories
  • Product tags
  • Product brands
Screenshot: Edit product
Edit product

#Edit product: Pre-order product panel

Location: wp-admin/post.php?post=40&action=edit

On this screen:

  • Edit product
  • Product description
  • Publish
  • Product image
  • Product gallery
  • Product categories
  • Product tags
  • Product brands
Screenshot: Edit product: Pre-order product panel
Edit product: Pre-order product panel

#Edit product: Most Used

Location: wp-admin/post.php?post=40&action=edit#product_cat-pop

On this screen:

  • Edit product
  • Product description
  • Publish
  • Product image
  • Product gallery
  • Product categories
  • Product tags
  • Product brands
Screenshot: Edit product: Most Used
Edit product: Most Used

#Edit product: Most Used

Location: wp-admin/post.php?post=40&action=edit#product_brand-pop

On this screen:

  • Edit product
  • Product description
  • Publish
  • Product image
  • Product gallery
  • Product categories
  • Product tags
  • Product brands
Screenshot: Edit product: Most Used
Edit product: Most Used

#Edit order

Location: wp-admin/post.php?action=edit&post=50

On this screen:

  • Edit order
  • Order actions
  • Order attribution
  • Origin
  • Customer history
  • Total orders
  • Total revenue
  • Average order value
Screenshot: Edit order
Edit order

#WooCommerce > Settings > Email > Pre-order confirmed

Location: wp-admin/admin.php?page=wc-settings&tab=email&section=anticipo_po_email_customer_preorder_confirmed

On this screen:

  • Pre-order confirmed
  • Email preview
  • Your pre-order is confirmed, order 12345
Screenshot: WooCommerce > Settings > Email > Pre-order confirmed
WooCommerce > Settings > Email > Pre-order confirmed

#WooCommerce > Settings > Email > Pre-order date changed

Location: wp-admin/admin.php?page=wc-settings&tab=email&section=anticipo_po_email_customer_date_changed

On this screen:

  • Pre-order date changed
  • Email preview
  • New release date for your pre-order, order 12345
Screenshot: WooCommerce > Settings > Email > Pre-order date changed
WooCommerce > Settings > Email > Pre-order date changed

#WooCommerce > Settings > Email > Pre-order released

Location: wp-admin/admin.php?page=wc-settings&tab=email&section=anticipo_po_email_customer_preorder_available

On this screen:

  • Pre-order released
  • Email preview
  • Release day: your pre-order is being prepared
Screenshot: WooCommerce > Settings > Email > Pre-order released
WooCommerce > Settings > Email > Pre-order released

#Pre-orders: Settings

Location: wp-admin/admin.php?page=anticipo-preorders&tab=settings

On this screen:

  • Pre-orders
  • General
  • Display
  • Release workflow
  • Advanced
  • Payments
Screenshot: Pre-orders: Settings
Pre-orders: Settings

#Pre-orders: Status

Location: wp-admin/admin.php?page=anticipo-preorders&tab=status

On this screen:

  • Pre-orders
  • Health checks
  • Background queue
  • Activity log
Screenshot: Pre-orders: Status
Pre-orders: Status

#Pre-orders: Documentation

Location: wp-admin/admin.php?page=anticipo-preorders&tab=docs

On this screen:

  • Pre-orders
  • Set up your first pre-order in five minutes
  • What the customer sees
  • Every setting explained
  • General
  • Display
  • Release workflow
  • Advanced
Screenshot: Pre-orders: Documentation
Pre-orders: Documentation

#Pre-orders: Pre-orders

Location: wp-admin/admin.php?page=anticipo-preorders&tab=preorders

On this screen:

  • Pre-orders
Screenshot: Pre-orders: Pre-orders
Pre-orders: Pre-orders

Settings reference

Pre-orders

The Pre-orders screen
Pre-orders

#2

Dropdown Default: Last 30 days

4 options

Last 7 days
Last 30 daysDefault
Last 90 days
Last 12 months

Pre-orders

The Pre-orders screen
Pre-orders

#Subject

Text

Sent once to every order with open pre-orders for this product. Merge tags such as {customer_name}, {order_number} and {release_date} work here.

#Message

Text area

Sent once to every order with open pre-orders for this product. Merge tags such as {customer_name}, {order_number} and {release_date} work here.

WooCommerce > Settings > Email > Pre-order confirmed

The WooCommerce > Settings > Email > Pre-order confirmed screen
WooCommerce > Settings > Email > Pre-order confirmed

#Enable/Disable

Checkbox Default: On

#Subject

Text

#Email heading

Text

#Message

Text area Default: Hi {customer_name}, Thank you for pre-ordering with {site_title}. Your order {order_number} is confirmed and your items are reserved for you. Expected release:

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

Text area Default: Nothing else is needed from you right now. You can review this pre-order at any time from your account: {account_url}

#Email type

Dropdown Default: HTML

3 options

Plain text
HTMLDefault
Multipart

#Cc(s)

Text

#Bcc(s)

Text

WooCommerce > Settings > Email > Pre-order date changed

The WooCommerce > Settings > Email > Pre-order date changed screen
WooCommerce > Settings > Email > Pre-order date changed

#Enable/Disable

Checkbox Default: On

#Subject

Text

#Email heading

Text

#Message

Text area Default: Hi {customer_name}, We want to keep you in the loop about order {order_number}. The release date has moved from {old_date} to {release_date}. Your pre-order is

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

Text area Default: Sorry for the change, and thank you for your patience. You can review this pre-order here: {account_url}

#Email type

Dropdown Default: HTML

3 options

Plain text
HTMLDefault
Multipart

#Cc(s)

Text

#Bcc(s)

Text

WooCommerce > Settings > Email > Pre-order released

The WooCommerce > Settings > Email > Pre-order released screen
WooCommerce > Settings > Email > Pre-order released

#Enable/Disable

Checkbox Default: On

#Subject

Text

#Email heading

Text

#Message

Text area Default: Hi {customer_name}, Good news. The items you pre-ordered on order {order_number} have been released and are now being prepared for dispatch. Here is what is on

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

Text area Default: Thank you for backing this release early. It genuinely helps a small store plan.

#Email type

Dropdown Default: HTML

3 options

Plain text
HTMLDefault
Multipart

#Cc(s)

Text

#Bcc(s)

Text

Pre-orders: Settings

The Pre-orders: Settings screen
Pre-orders: Settings

#Enable pre-orders

Checkbox Default: On

Turn 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

Dropdown Default: Allow pre-order and in-stock items together

A pre-order holds the whole order until release day. Block this if you do not want in-stock items waiting alongside it.

3 options

Allow pre-order and in-stock items togetherDefault
Allow but warn the customer at checkout
Block: pre-orders must be bought on their own

#Default billing

Dropdown Default: Pay in full at checkout

How customers pay when a product does not set its own rule. Pay upfront charges the full price at checkout. Pay on release charges nothing now and sends a payment link on release day. Save card and charge on release saves the customer's card with Stripe at checkout and charges it automatically when

4 options

Pay in full at checkoutDefault
Pay nothing now, pay on release
Deposit now, balance on release
Save card now, charge automatically on release

#Default deposit type

Dropdown Default: Percentage of the price

Used when a product asks for a deposit but does not say what kind.

2 options

Percentage of the priceDefault
Fixed amount

#Default deposit value

Number Default: 25

A percentage when the deposit type is percentage, otherwise an amount per unit in your store currency.

#Let customers pay in full instead of a deposit

Checkbox Default: Off

On deposit products, the product page offers "Pay a deposit now" or "Pay in full now". Paying in full is charged like any normal order and raises no balance later. A product can switch this on or off for itself.

#Add to cart button text

Text Default: Pre-order now

Shown instead of the usual Add to cart label on pre-order products.

#Availability message

Text Default: Ships on {date}

Shown under the price on the product page. Supports {date} and {time}.

#Message when the date is unknown

Text Default: Release date to be announced

Used on products where you ticked "date not announced yet".

#Show a pre-order badge on product images

Checkbox Default: On

#Badge text

Text Default: Pre-order

#Show the availability message in shop listings

Checkbox Default: On

Leave this off on very large catalogues if you want the absolute minimum work done per listing.

#Show a countdown to release

Checkbox Default: On

A live countdown on the product page. Hidden automatically when no date is announced.

#Show remaining pre-order allocation

Checkbox Default: 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

Dropdown Default: Pre-ordered

Defaults to the Pre-ordered status this plugin adds, which keeps pre-orders out of your normal pick list.

10 options

Pending payment
Processing
Pre-orderedDefault
Awaiting balance
On hold
Completed
Cancelled
Refunded
Failed
Draft

#Status once released

Dropdown Default: Processing

Usually Processing, so released pre-orders join your normal fulfilment queue.

10 options

Pending payment
ProcessingDefault
Pre-ordered
Awaiting balance
On hold
Completed
Cancelled
Refunded
Failed
Draft

#Release automatically on the availability date

Checkbox Default: On

Switch this off to review each launch yourself and press Release manually from the Pre-orders screen.

#Orders per background batch

Number Default: 25

Lower this on shared hosting. Higher values finish a launch faster but use more memory per background run.

#Reduce stock on release rather than at checkout

Checkbox Default: 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 Default: 7,1

Comma separated. For example 14,7,1 sends three reminders. Leave empty to send none.

#Cache reports for this many minutes

Number Default: 15

Set to 0 to always recalculate. Only do that on small stores.

#Let integrations change pre-orders through the REST API

Checkbox Default: Off

Off by default. When on, an ERP or headless front end signed in with an application password can release and cancel pre-orders and set release dates. The user behind the password still needs the Manage pre-orders capability. Reading is always allowed for that user.

#My Account endpoint slug

Text Default: pre-orders

The URL segment for the customer pre-orders page. Save your permalinks after changing this.

#Activity log detail

Dropdown Default: Errors and normal activity

The log is what you read when a customer queries what happened to their order.

4 options

Off
Errors only
Errors and normal activityDefault
Everything, including debug detail

#Delete log entries older than (days)

Number Default: 90

#Delete all pre-order data when the plugin is deleted

Checkbox Default: 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 Default: 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 Default: Off

Off by default. Leave it off if you would rather chase the customer yourself.

#Try to charge the saved card automatically

Checkbox Default: Off

For deposit balances paid with the WooCommerce Stripe Gateway. The card is saved at checkout and the balance is charged to it on release. If the charge cannot be attempted or it fails, the customer is emailed a payment link instead, so nothing is ever lost.

#Charge on release: retry a declined card after these days

Text Default: 1,3

Comma separated, counted from the first failed charge. For example 1,3 tries again after one day and after three days. Once the retries are used up, or straight away if the bank asks the customer to confirm the payment, the customer is emailed a secure payment link. Leave empty to email them on the

#Charge on release: days the customer has to pay after a failed charge

Number Default: 7

Counted from the first failed charge. Retries scheduled after this are skipped.

#Charge on release: cancel the order if it is still unpaid at the deadline

Checkbox Default: On

The reserved stock is released and any gift card balance used at checkout is returned.

#Charge on release: seconds between charges

Number Default: 2

Spaces out the charges after a big release so Stripe never rate limits the store.

#Charge on release: amounts below the card minimum

Dropdown Default: Mark as paid (write off)

Card payments have a minimum, 0.50 in US dollars with Stripe. When less than that is left to charge on release, for example after a cancelled item or a gift card, the order is either marked as paid and the amount written off, with an order note and an admin notice that state the exact amount, or the

2 options

Mark as paid (write off)Default
Email the customer a payment link

#Charge on release: skip the card when a gift card covers the whole pre-order

Checkbox Default: On

When gift cards or discounts leave nothing to charge on release, checkout asks for no card and offers no payment step. The order is Pre-ordered as usual and settles on release with nothing charged.

#Hide buy now, pay later on pre-orders

Checkbox Default: On

While the cart holds a pre-order, whatever its billing, Afterpay, Clearpay, Klarna and Affirm are hidden in the WooCommerce Stripe Gateway, both inside the Stripe payment option and as separate payment methods, and PayPal Pay Later buttons and messages are hidden in WooCommerce PayPal Payments, also

#Let customers cancel their own pre-orders

Checkbox Default: On

Adds a Cancel button to the customer pre-orders page in My Account.

#Stop self cancellation this many days before release

Number Default: 2

So nobody cancels the morning a launch ships.

Shortcodes

[anticipo_preorder_products]

Shortcode registered by the plugin.

[anticipo_preorder_products]

On your site

These pages show what visitors see on your site.

Screenshot: Coming soon
Coming soon
Screenshot: Product page with the pre-order countdown
Product page with the pre-order countdown
Screenshot: My Account, Pre-orders
My Account, Pre-orders

Frequently asked questions

Does this work with variable products?

Yes. Variations follow the parent product by default. On each variation you can switch pre-orders on or off and give it its own release date, or mark its date as not announced yet. Billing, pricing and limits come from the parent product, and the limit counts every variation together.

Which payment gateways work?

Any gateway for pay upfront, deposit and pay on release: the balance is a normal WooCommerce order paid through the payment link. Save card and charge on release, and the automatic charge of deposit balances, need the official WooCommerce Stripe Gateway. Developers can add another gateway with the anticipo_po_release_charge_gateways and anticipo_po_pre_charge filters.

Can customers use Afterpay, Klarna or PayPal Pay Later on a pre-order?

Not while "Hide buy now, pay later on pre-orders" is on, which it is by default (Settings, Payments). While the cart holds a pre-order in any billing mode, Afterpay and Clearpay, Klarna and Affirm are hidden in the WooCommerce Stripe Gateway, both inside the Stripe payment option on the classic and block checkout and as separate payment methods, and PayPal Pay Later buttons and messages are hidden in WooCommerce PayPal Payments, also on pre-order product pages. Cards and the normal PayPal button stay. Switch the setting off to offer them again.

Can a gift card pay for a charge on release pre-order?

Yes. The gift card is used at checkout and only the rest is charged on release. When gift cards or discounts cover the whole order and "Skip the card when a gift card covers the whole pre-order" is on (the default), checkout asks for no card and has no payment step. The order is Pre-ordered as usual and settles on release with nothing charged. A customer account is still required.

What if only a few cents are left to charge on release?

Card payments have a minimum, 0.50 in US dollars with Stripe. When less than that is left, for example after a cancelled item, "Amounts below the card minimum" decides: "Mark as paid (write off)", the default, marks the order as paid and states the exact amount written off in an order note and an admin notice; "Email the customer a payment link" sends the "Pre-order payment needs attention" email so the customer can pay it online, with the usual payment deadline.

Do coupon usage limits work on pre-orders?

Yes. A coupon counts as used as soon as the pre-order is placed, while the order waits in Pre-ordered or Awaiting balance, with the classic and the block checkout alike. Moving on to Processing later does not count it again, and a cancelled or failed order gives the use back.

Is shipping charged at checkout with pay on release?

Yes. With deposit and pay on release, shipping and fees are paid at checkout and the product price is collected on release. With save card and charge on release, nothing at all is paid at checkout and shipping is part of the release charge.

What happens to a customer's money when they cancel?

Customers can cancel from My Account until the cut-off you set. They are told the store has been notified and will refund what they paid. The store gets an email, an order note and an admin notice on the order screens with the amount to refund, for a deposit or a full payment alike. Refunds are not made automatically: refund from the order screen, then click "Mark as refunded" on the notice. When nothing else is left on the order, the order is cancelled too.