Description
Smart Waitlist for WooCommerce automatically notifies customers when an out-of-stock product is back in stock.
When a product runs out of stock, a “Notify Me When Available” form appears on the product page. Customers enter their name and email to join the waitlist. The moment you restock the product, every pending subscriber receives a personalized notification email — automatically.
Core Features
- Automatic restock detection — hooks directly into WooCommerce stock management; no manual steps required.
- Variable product support — per-variation waitlists, so customers subscribe to the exact variant they want.
- Double opt-in support — require email confirmation before users are added to the waitlist (now a core free feature).
- Smart form display — form appears only on out-of-stock products; hidden when stock is available.
- Duplicate prevention — customers cannot accidentally subscribe twice.
- Honeypot spam protection — invisible field blocks automated spam submissions.
- HMAC-signed unsubscribe links — every notification email contains a secure, one-click unsubscribe link.
- Batch notifications — large waitlists are processed in background batches via WP-Cron to avoid timeouts.
- Admin dashboard — searchable, filterable, sortable subscriber list with bulk actions (delete, mark as notified).
- Per-product settings — enable or disable the waitlist individually for any product.
- Waitlist capacity limits — optionally cap the number of subscribers per product (or per variation) to control stock flow.
- WooCommerce Settings integration — configure waitlist emails under WooCommerce > Settings > Emails and waitlist behavior under WooCommerce > Settings > Products > Waitlist.
- Theme-overridable templates — copy templates to your theme for complete HTML customisation.
- GDPR tools — personal data export and erasure via WordPress Privacy Tools (Tools Erase Personal Data).
- Developer-friendly — action and filter hooks throughout; documented phpdoc on every method.
- WPCS-compliant — all database queries use
$wpdb->prepare(); all output is escaped; nonces on every form. - HPOS compatible — declared compatible with WooCommerce High-Performance Order Storage.
Pro Version
Upgrade to the Pro Version (available at https://payhip.com/b/aH2Oq ) for advanced features:
- WhatsApp Business API notifications
- Coupon-with-notification (send discount codes alongside the restock alert)
Privacy
This plugin stores subscriber names, email addresses, and optionally phone numbers in a dedicated database table ({prefix}swfwc_waitlist). Data is retained until manually deleted by the site administrator or until the subscriber unsubscribes. No data is shared with third parties. Plugin data is fully removed on uninstall.
Personal data can be exported and erased via Tools Erase Personal Data in compliance with GDPR Article 17 and Article 20.
Consider updating your site’s Privacy Policy to reflect this data collection.
Email Setup Guide
Email Configuration
- Configure a reliable SMTP or transactional email plugin first.
- Send a test email from the SMTP plugin and confirm it arrives.
- Go to WooCommerce Settings Emails.
- Enable and review Waitlist Signup Confirmation.
- Enable and review Waitlist Restock Notification.
- Test the waitlist flow with one out-of-stock product and one real email address.
Email Production Checklist
- SMTP or transactional email test succeeds.
- SPF, DKIM, and DMARC are configured for the sending domain.
- Signup confirmation email arrives.
- Restock notification email arrives after stock changes to
instock. - Unsubscribe links work.
- Emails are not consistently landing in spam.
Pro Version Features Setup
If you upgrade to the Pro version, you will get access to:
* WhatsApp Cloud API Integration for template-based restock messages.
* Auto-generated WooCommerce Coupons sent directly inside email alerts.
License
Smart Waitlist for WooCommerce is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version.
Smart Waitlist for WooCommerce is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Installation
Upload Installation
- Download the plugin ZIP file.
- Log in to your WordPress admin panel.
- Go to Plugins Add New Upload Plugin.
- Choose the ZIP file and click Install Now, then Activate.
After Activation
- Go to WooCommerce Settings Products Waitlist to configure the plugin.
- Review the waitlist emails under WooCommerce > Settings > Emails.
- Customise email subjects, headings, and email types from WooCommerce’s email settings.
- The waitlist form will automatically appear on any out-of-stock product.
FAQ
-
Does this work with variable products?
-
Yes. The form appears when a customer selects a specific variation that is out of stock. Subscribers are tracked per variation, so notifications are only sent when that exact variation comes back in stock.
-
Can I customise the form appearance?
-
Yes. Copy
templates/notify-form.phpfrom the plugin folder to{your-theme}/smart-waitlist-for-woocommerce/notify-form.phpand modify it freely. CSS custom properties inpublic/css/swfwc-public.cssmake colour/spacing changes easy without overriding templates. -
Can I customise the notification email?
-
Yes. Go to WooCommerce > Settings > Emails and update the waitlist email subjects, headings, and email types. You can also customise the HTML template by copying
templates/emails/email-notification.phpto your theme. -
{product_name},
{product_url},{customer_name},{site_name},{unsubscribe_url} -
How do customers unsubscribe?
-
Every notification email contains a signed unsubscribe link. Clicking it marks the subscriber as unsubscribed immediately — no login required.
-
Is the unsubscribe link secure?
-
Yes. Each link contains an HMAC-SHA256 token signed with your site’s WordPress auth salt. Tokens expire after 90 days and cannot be guessed or forged.
-
Does it work with WooCommerce HPOS?
-
Yes. The plugin declares compatibility with WooCommerce High-Performance Order Storage (HPOS / custom order tables).
-
What happens if I have thousands of subscribers?
-
For waitlists with more than 50 subscribers, notifications are automatically queued in batches of 25 via WP-Cron, with 30 seconds between batches. This prevents PHP timeouts and server overload.
-
Will my data be deleted if I uninstall the plugin?
-
Yes. The uninstall routine drops the
swfwc_waitlisttable and removes all plugin options. This action is irreversible. -
Can I disable the waitlist for specific products?
-
Yes. Each product has a “Waitlist” meta box in the product editor where you can set it to Enabled, Disabled, or “Inherit global setting”.
-
Does the plugin support GDPR right-to-erasure requests?
-
Yes. The plugin integrates with WordPress Privacy Tools (Tools Erase Personal Data). Submitting an erasure request for a customer’s email will permanently delete all their waitlist records.
-
Can I limit how many people join a single product’s waitlist?
-
Yes. Go to WooCommerce Settings Products Waitlist and set Max Subscribers per Product. Leave it at
0for unlimited (the default). -
Can I use the plugin behind a reverse proxy or load balancer?
-
Yes. Define your trusted proxy IP addresses using the
swfwc_trusted_proxy_ipsfilter or theSWFWC_TRUSTED_PROXY_IPSconstant, and the plugin will correctly identify real client IPs from theX-Forwarded-Forheader. Without this configuration the direct connection IP is used, which is the safe default.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Smart Waitlist for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Smart Waitlist for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.0.0
- Breaking (internal only): Renamed every internal identifier — classes, functions, hooks, options, the custom database table, post meta, cron hooks, nonces, and asset handles — from the “SWW”/”sww_” prefix to “SWFWC”/”swfwc_”. The old prefix was too short and collision-prone for the WordPress.org Plugin Directory. A one-time, automatic migration preserves all existing waitlist data, settings, and per-product toggles on upgrade; no action needed.
- Fix: “Max Subscribers per Product” is now a free, fully configurable setting under WooCommerce Settings Products Waitlist. The subscriber-cap enforcement was already active in the free plugin; only the control to configure it was previously (incorrectly) hidden.
- Fix: Removed all inline
<style>/<script>blocks from PHP templates. CSS moved intoadmin/css/swfwc-admin.css; JS moved intoadmin/js/swfwc-admin.jsusingwp_localize_script()for nonces/strings. - Fix: Plain-text double opt-in confirmation email now escapes the confirmation link with
esc_url()instead ofesc_url_raw()at the point of output. - Fix: Corrected Plugin URI and Author URI to resolve correctly; corrected the readme Contributors field.
- Fix: Added
Requires Plugins: woocommerceheader plus a defensive activation-time WooCommerce check for older WordPress versions. - Housekeeping: Text domain corrected to
smart-waitlist-for-woocommerce(matching the plugin slug) throughout.
1.1.2
- Critical fix: Bulk status updates now pass dynamic parameters to
$wpdb->prepare()with variadic binding, restoring bulk mark-as-notified compatibility. - Email: Double opt-in confirmation now uses a dedicated WooCommerce email class with HTML/plain-text templates and WooCommerce Settings > Emails controls.
- Cleanup: Removed legacy Gumroad license code and Pro features to focus on a lightweight freemium-first build.
- Fix: Addressed casing issues in activation and deactivation hooks.
- Documentation: Updated plugin version and compatibility metadata.
1.1.1
- Security: Rate limiter now only trusts X-Forwarded-For headers from configured trusted proxy IPs (SEC-02).
- Security: Removed
SWFWC_get_pending_subscribers_extra_wherefilter to eliminate SQL injection surface (SEC-01). Replaced with typed$confirmed_onlyboolean parameter. - Security: Unsubscribe tokens now include a 90-day expiry timestamp with backwards compatibility for existing tokens (SEC-06).
- Bug fix: Re-subscribing after unsubscribing no longer silently fails to send the confirmation email. MySQL’s
insert_id=0onON DUPLICATE KEY UPDATEis now handled by re-fetching the row ID (BUG-01). - Performance: Removed blocking
sleep()call inside the WhatsApp cron worker. Retries are now scheduled as async events to avoid blocking the cron queue (PERF-01). - Performance: Batch processing now fetches all subscriber rows in a single
IN()query instead of N individual SELECTs (BUG-02). - Performance: Admin list table status counts now use a single
GROUP BYquery instead of four separateCOUNT(*)queries (WC-04). - Reliability: Notification lock transient prevents duplicate batches when the stock-change hook fires more than once in quick succession (WC-01).
- Database: Added
user_idindex toswfwc_waitlisttable schema (DB-01). - Database:
delete_by_product()now busts caches for all variation IDs, not only variation 0 (DB-04). - GDPR: Added personal data exporter (
wp_privacy_personal_data_exporters) hook for data portability compliance. - GDPR: Added personal data eraser (
wp_privacy_personal_data_erasers) hook for right-to-erasure compliance. - GDPR: Added optional GDPR consent checkbox (disabled by default; enable via
SWFWC_show_consent_checkboxfilter). - GDPR: Privacy policy URL appended to form privacy note via
wp_get_privacy_policy_url(). - Architecture:
SWFWC_Email_Confirmationnow acceptsSWFWC_Databasevia constructor, restoring the DI contract (ARCH-01). - Architecture: Button position option is now read at render-time instead of at hook-registration time (ARCH-02).
- Architecture: Singleton
__clone()now throws an exception instead of silently succeeding (ARCH-03). - Compatibility: Bumped DB schema version to 1.2.0 to trigger
dbDeltaon existing installs for the new index.
1.0.0
- Initial release.
- Core waitlist functionality: subscribe, notify on restock, unsubscribe via link.
- Variable product / variation support.
- Admin dashboard with WP_List_Table (search, filter, bulk actions).
- WooCommerce email class integration.
- Async batch processing via WP-Cron.
- HMAC-signed unsubscribe URLs.
- Honeypot spam protection.
- WooCommerce HPOS compatibility declaration.
- Theme-overridable templates.
- Full uninstall cleanup.