WooCommerce Waitlist

An example of the waitlist functionality on a single product page

WooCommerce Waitlist allows customers to sign up to be notified by email when an out-of-stock product becomes available.

As a store owner you can also review who is on the waiting list for which products and sort products by the number of people registered on the waiting list.

Installation ↑ Back to top

  1. Download the .zip file from your WooCommerce account.
  2. Go to: WordPress Admin > Plugins > Add New to upload the file you downloaded with Choose File.
  3. Activate the extension.

More information at: Installing and Managing Plugins.

Upgrading to Version 2? ↑ Back to top

Improvements have been made to the plugin with the release of version 2, the most significant being:

  • You can add waitlist elements anywhere on your site with the use of a shortcode [woocommerce_waitlist product_id=123] where “product_id” equals the ID of the product for which you want the user to join the waitlist. More information about shortcodes at: WordPress Codex – Shortcode 
  • No more page reloads when a user is added to a waitlist. Waitlist updates are handled in the background, and customers need not wait for a page reload when adding themselves. Customers click a button and are greeted with a notification that they have successfully signed up.

There have been minor adjustments to the layout of waitlist elements displayed on the frontend.  Waitlist elements are always grouped together on the page and can be styled by targeting their wrapper classes. If you notice issues with styling, review the following guidelines and adjust CSS accordingly:

  • Different WooCommerce pages can be targeted using the supplied body classes. For example: .single-product for single products and .post-type-archive-product for the shop page and other product archive pages (e.g., product category pages).
  • Default WooCommerce wrapper classes can be used to specify styles for different product types. For example, .product-type-variable and .product-type-simple for variable and simple products, respectively.
  • Waitlist elements are wrapped using the .wcwl_frontend_wrap class on product archive pages and .wcwl_elements on single product pages.  This difference is due to the additional toggle button added on archive pages to avoid cluttering the page.

If extensive customizations are in place on your site, we recommend editing these to reflect the new template changes.  A waitlist can be included with the new shortcode and should make everything simpler for complicated setups or custom product types. Any legacy code should still work if the appropriate filters were utilized, but this is no longer the recommended approach.

If you have queries on the changes or need help with your customizations, please submit a support ticket and we will be happy to assist you.

Setup and Configuration ↑ Back to top

Settings Screen ↑ Back to top

There are options to customize the plugin to suit your needs on the settings screen. Go to WooCommerce > Settings > Products, and select the Waitlist link.

Display options enable you to control what your customer see in your shop:

Display options available on the Waitlist settings screen

By default all customers can use the waitlist functionality. When a customer joins a waiting list, an account is automatically created without further input. The welcome email is automatically created and sent.

Administration options allow the shop manager to specify options to make the plugin work for them:

Update options are for the sole purpose of updating the stored metadata pertaining to the plugin (this may be required when updating from an older version):

Update options available for the Waitlist plugin found on the settings page

Products Listing Screen ↑ Back to top

WooCommerce Waitlist adds a new column to the Products listing in the WordPress administration area, displaying the number of users on the waiting list for a product. This column is sortable to enable Shop Managers to quickly find the most ‘sought after’ products in the catalog.

The column added by the Waitlist plugin showing how many customers are on the waitlist for each product

Edit Product Screen ↑ Back to top

WooCommerce Waitlist adds a new product tab to the Edit Product screen. This new tab displays any customers that are currently on the waiting list for the product, any customers that were sent an in-stock notification email and subsequently removed from the waiting list (if archiving is enabled) and available options for this product.

On the waitlist tab the shop manager can add single or multiple email addresses (separated by a comma), remove customers from the waiting list, manually send out in-stock notification emails or send custom emails:

Example of the waitlist tab on the product edit screen

On the archive tab the shop manager has options to add customers back to the waiting list (these customers will remain in the archive until deleted), permanently delete customers from the archive or send the customers a custom email (if, for example, it is suspected a notification email has not reached them).  If a customer removes themselves from the archive (via the “My Waitlists” tab on the “My Account” page), this tab will also reflect this:

Example of the waitlist archive tab on the product edit screen

The options tab provides the shop manager with the ability to enforce specific options for certain products. If set here, these options will override the global options (for this product only):

Example of the waitlist options tab on the product edit screen

Waiting lists are updated instantly when working on the product edit screen. This avoids having to update/save the product post each time an edit is required.

For variable products it is advised that the product is updated when changes are made to variations (for example, altering the stock level/status) as changes will not be instantly reflected on the Waitlist tab.

When sending out custom emails from these tabs the default mail client on your computer will be activated.

Automated Emails ↑ Back to top

When a product is switched from ‘Out-of’stock’ status to ‘In-stock’, or when quantity increases past a set limit, WooCommerce Waitlist sends all users on the waiting list an email informing them that the product is back in stock, with a link to the product listing for making purchases.

The emails follow the same design as all other WooCommerce emails, but the subject and the heading can be altered at WooCommerce > Settings > Emails > Waitlist Mailout.

Email options for the waitlist plugin on the email settings screen

Here, it is also possible to add google analytics tracking codes to the product link sent out in the email.

Once this email is sent, WooCommerce Waitlist removes all users from the waiting list for this product. If the product is subsequently switched back to ‘Out-of-stock’, the waiting list will be empty.

Waitlist Archiving ↑ Back to top

When a product comes back into stock and automated emails are turned on, a record of the waiting list is saved.  The archive tab lists all of the customers that were sent a back in stock notification, the date that the emails were sent and provides controls to manually add the customers back to the waiting list, remove them permanently or send custom emails:

Example of the waitlist archive tab showing the available options

Opt-In Options ↑ Back to top

Options have been added to display an opt-in checkbox and a notice to users signing up to a waiting list.  With these options enabled new users will need to consent to an account being created and receiving further communications before being allowed to join the waiting list.  This can be enabled for both new users and existing users (a different notice is shown to for each):

Example of the opt-in notification shown to users

Displaying Waitlist Elements on Product Archive Pages ↑ Back to top

An option has now been added to display the waitlist elements on product archive pages.  With this enabled, users will be able to join waiting lists for products from the shop page, product category pages or any other product archive pages:

Example of a product archive page with waitlist elements displayed

Personal Data ↑ Back to top

WooCommerce Waitlists use data stored for WordPress users to handle all requests.  This means we do not actually store user email addresses anywhere else.

When processing data erasure requests (added in WordPress 4.9.6) there is an option to retain waitlist information if required, this can be found at WooCommerce > Settings >Accounts & Privacy.  When this option is selected, all waitlist data is removed when deleting personal data for a user.

Customization ↑ Back to top

WooCommerce Waitlist comes with action and filter hooks for your customization needs. For more information on using hooks in WordPress, see Plugin API.

Note: This is a Developer level section. If you are unfamiliar with hooks and filters and resolving potential conflicts, select a WooExpert or Developer for assistance. We are unable to provide support for customizations under our  Support Policy.

Action Hooks ↑ Back to top

  • wcwl_before_add_user_to_waitlist – passes the WC_Product and WP_User objects as parameters
  • wcwl_after_add_user_to_waitlist – passes the WC_Product and WP_User objects as parameters
  • wcwl_before_remove_user_from_waitlist – passes the WC_Product and WP_User objects as parameters
  • wcwl_after_remove_user_from_waitlist – passes the WC_Product and WP_User objects as parameters
  • wcwl_mailout_send_email – passes the customer ID and WC_Product ID as parameters
  • wcwl_new_signup_send_email – passes the customer ID and WC_Product ID as parameters

Filter Hooks ↑ Back to top

Options ↑ Back to top

  • wcwl_persistent_waitlists_are_disabled
  • wcwl_automatic_mailouts_are_disabled
  • wcwl_enable_waitlist_for_backorder_products

Admin ↑ Back to top

Text

  • wcwl_empty_waitlist_introduction
  • wcwl_variation_tab_title
  • wcwl_updated_nag_text
  • wcwl_dismiss_nag_text

Template paths

  • wcwl_include_path_admin_panel_tabs
  • wcwl_include_path_admin_panel_waitlist_tab
  • wcwl_include_path_admin_panel_archive_tab
  • wcwl_include_path_admin_panel_options_tab
  • wcwl_include_path_admin_panel_side_tab
  • wcwl_include_path_admin_panel_variable
  • wcwl_include_path_admin_panel_simple
  • wcwl_include_path_admin_panel_waitlist_add_new
  • wcwl_include_path_admin_panel_waitlist_actions
  • wcwl_include_path_admin_panel_archive_actions
  • wcwl_include_path_admin_panel_table_row

User Waitlist Shortcode ↑ Back to top

  • wcwl_shortcode_title
  • wcwl_shortcode_intro_text
  • wcwl_shortcode_product_title
  • wcwl_shortcode_thumbnail
  • wcwl_shortcode_remove_text
  • wcwl_shortcode_no_waitlists_text
  • wcwl_shortcode_archive_intro_text
  • wcwl_shortcode_archive_product_title
  • wcwl_shortcode_archive_remove_text
  • wcwl_shortcode_visit_shop_text

Frontend ↑ Back to top

Join Waitlist Elements

  • wcwl_join_waitlist_message_text
  • wcwl_join_waitlist_success_message_text
  • wcwl_join_waitlist_already_joined_message_text
  • wcwl_join_waitlist_button_text
  • wcwl_new_user_opt-in_text
  • wcwl_registered_user_opt-in_text

Leave Waitlist Elements

  • wcwl_leave_waitlist_message_text
  • wcwl_leave_waitlist_success_message_text
  • wcwl_leave_waitlist_button_text

Update Waitlist Elements (grouped products)

  • wcwl_waitlist_checkbox_text
  • wcwl_grouped_waitlist_message_text
  • wcwl_grouped_product_joined_message_text
  • wcwl_event_waitlist_message_text
  • wcwl_update_waitlist_button_text

Archive

  • wcwl_confirm_waitlist_button_text

Account

  • wcwl_account_tab_title
  • wcwl_account_removed_archives_message
  • wcwl_enable_waitlist_account_tab

Errors/Notices

  • wcwl_join_waitlist_user_requires_registration_message_text
  • wcwl_join_waitlist_invalid_email_message_text
  • wcwl_toggle_waitlist_no_product_message_text
  • wcwl_error_message_invalid_nonce
  • wcwl_error_message_invalid_user
  • wcwl_error_message_invalid_product
  • wcwl_email_error_message
  • wcwl_optin_error_message
  • wcwl_generic_error_message
  • wcwl_loading_message
  • wcwl_dismiss_notification_text

Emails

  • woocommerce_email_subject_woocommerce_waitlist_mailout
  • woocommerce_email_heading_woocommerce_waitlist_mailout
  • woocommerce_email_subject_woocommerce_waitlist_signup_email
  • woocommerce_email_subject_woocommerce_waitlist_signup_email
  • wcwl_tracking_url
  • wcwl_tracking_codes

Miscellaneous

  • wcwl_show_waitlist_elements_for_page
  • wcwl_show_waitlist
  • wcwl_enable_waitlist_account_tab
  • wcwl_new_user_opt-in_text
  • wcwl_registered_user_opt-in_text
  • wcwl_email_field_label
  • wcwl_email_field_placeholder

Advanced ↑ Back to top

  • wcwl_supported_products
  • wcwl_waitlist_endpoint
  • wcwl_locate_template
  • wcwl_notification_time_limit

FAQ ↑ Back to top

Can I add the waitlist to a non-product/custom product page?

The plugin now includes a shortcode for adding the waitlist elements to any page on your site, all you need is the product ID.  This is done by adding the following to your pages content: [woocommerce_waitlist product_id=123] where “product_id” equals the ID of the product you want the user to join the waitlist for.

Can a customer view all the products they are on a waiting list for? ↑ Back to top

Since version 1.7.0 customers will be able to view the products they are waiting for on the newly added “Your Waitlists” tab found on the default “My Account” page. There is also a shortcode [woocommerce_my_waitlist] which will display a list of all the products that the currently logged in user is waiting for.

Are customers put on a waitlist in a particular order? ↑ Back to top

Yes. Customers are added to the waitlist in the order they join. A date has also been added to make it clear when each customer joined.

Does WooCommerce Waitlist work with WPML? ↑ Back to top

Yes. Support has now been added for for WPML with the release of version 1.6.1.

Does this work for affiliate products? ↑ Back to top

No. At the moment, stock status has no bearing on the output of an affiliate product listing so these have been left well alone.

Does this work for variable products? ↑ Back to top

There is a known issue when using WooCommerce Waitlist in conjunction with variable products that prevents the Waitlist UI from being displayed in the Edit Product screen when the ‘Out of Stock Visibility’ option is set to ON.

You would only need to do this if you were managing waitlists internally, but did not want customers to be able to join a waitlist via the front-end of your site.

The only current solution to this problem is to turn this option off:

woocommerce waitlist disable

How do I change the subject/content of Waitlist Mailout emails? ↑ Back to top

The content of the email and the subject line are both editable via the WooCommerce email system. WooCommerce Waitlist adds a new section to the ‘Emails’ tab of WooCommerce Settings where this can be managed. More information at: Configuring WooCommerce Settings.

The “Back in stock” notification email can also be completely customized by overwriting the file in your theme. This is done by copying the relevant file over from woocommerce-waitlist/templates/emails/ into your theme’s WooCommerce template override directory (theme/woocommerce/emails/).  For more information check out this article.

What if I don’t want users to be automatically emailed when a product is back in stock? ↑ Back to top

We have you covered. Add the following snippet to the functions.php file in your theme, and no email will be sent and users remain on the waitlist.

add_filter( 'wcwl_automatic_mailouts_are_disabled', '__return_true' );

What if I want to email users automatically, but don’t want them to be removed from the waitlist? ↑ Back to top

That’s possible also. Add the following snippet to the functions.php file in your theme, and users remain on the waitlist until they purchase that product.

add_filter( 'wcwl_persistent_waitlists_are_disabled', '__return_false' );

Why does Waitlist only show up for some products? ↑ Back to top

If you’re using the Advanced Notifications extension, be sure to disable the backorder setting.
backorders

Do I have to show the “My Waitlists” tab on the my account page? ↑ Back to top

Not at all! Simply add the following snippet to your functions.php file in your theme and the Waitlist tab will not be loaded.
add_filter( 'wcwl_enable_waitlist_account_tab', '__return_false' );

If you would like to display customer waitlists on another page simply use the shortcode [woocommerce_my_waitlist]

Can I change the text on the Waitlist buttons? ↑ Back to top

Of course, just customize the following snippet by replacing the text ‘Custom Text’ for the join/leave buttons respectively. Add it to your functions.php file in your theme to see the changes.
add_filter( 'wcwl_join_waitlist_button_text', 'change_waitlist_join_button_text' );
function change_waitlist_join_button_text( $text ) {
return __( 'Custom Text' );
}
add_filter( 'wcwl_leave_waitlist_button_text', 'change_waitlist_leave_button_text' );
function change_waitlist_leave_button_text( $text ) {
return __( 'Custom Text' );
}

How can I hide the “add to cart” button for out of stock variations?

By default, when an out of stock variation is selected, WooCommerce disables the “add to cart” button but it remains visible.  When displaying the waitlist button as well this can become confusing for customers. The following CSS snippet can be added to your theme’s custom CSS option (if provided) in the WordPress Admin or your child theme’s style.css:
.woocommerce-variation-add-to-cart-disabled {
display: none;
}

How can I change the language of the plugin?

The plugin is fully translatable using the provided .pot file (found in the assets/language directory in the plugin). We suggest the following steps to translate manually (the plugin also supports WPML and can be used with other translation plugins such as Loco Translate):

  • Download and install a free program called Poedit
  • Within Poedit, Click File > New from POT/PO file… and choose the plugins .pot file
  • Choose your translation language
  • Translate each required string using either the bottom boxes to enter your own translations or the recommendations in the sidebar provided by Poedit
  • Once you’ve finished click File > Save, change the filename to reflect the plugin and add the country code at the end of the filename, this is important! (e.g. woocommerce-waitlist-fr_FR.po for French)
  • If a .mo file is not automatically generated when the .po file is saved you can generate one by clicking File > Compile to MO. This should be named the same as your .po file (woocommerce-waitlist-fr_FR.mo)
  • Save both of these files into the site directory wp-content/languages/plugins/ (if this directory does not exist you can create it (You will need to do this in your servers file manager or over FTP)
  • Change the site language in the WordPress admin by going to Settings and your translations should appear
  • If they don’t appear immediately try clearing your cache and hard refreshing the page (ctrl+shit+r)

Does this work for WooCommerce Product Bundles? ↑ Back to top

Support for Product Bundles has been added since version 2.1.0.  By default, product bundles will now have a waitlist just like other products.  A bundle is considered out of stock if any mandatory products within the bundle are not available (optional products are ignored) and notifications will be sent to a user when the bundle is available again (e.g. all mandatory products within that bundle become available).  If you have complex product bundles (e.g. involving variable products that handle stock at the variation level) please get in touch using the link below to ensure our plugin will work as you require.

Does this work for WooCommerce Composite Products? ↑ Back to top

Unfortunately, we do not currently offer waitlist support for composite products but the plugin will work alongside this extension.  This is another feature we would like to implement in a future version.

Questions & 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 the developer via the Help Desk.

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

Back to the top