{"id":309015,"date":"2026-05-11T05:47:31","date_gmt":"2026-05-11T05:47:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wt-waitlist\/"},"modified":"2026-05-11T05:47:12","modified_gmt":"2026-05-11T05:47:12","slug":"wt-waitlist","status":"publish","type":"plugin","link":"https:\/\/es-ec.wordpress.org\/plugins\/wt-waitlist\/","author":23487023,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.1","stable_tag":"1.0.1","tested":"6.9.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"WT Waitlist","header_author":"webmasters.team","header_description":"Lightweight back-in-stock waitlist for WooCommerce \u2014 automatic email notifications when an out-of-stock product (or variation) returns.","assets_banners_color":"ae2f4a","last_updated":"2026-05-11 05:47:12","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/webmasters.team\/","header_plugin_uri":"https:\/\/webmasters.team\/en\/plugins\/wt-waitlist\/","header_author_uri":"https:\/\/webmasters.team","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"webmastersteam","date":"2026-05-11 05:47:12"}},"upgrade_notice":{"1.0.1":"<p>Compliance fix for the unsubscribe page styling. No behavior changes.<\/p>","1.0.0":"<p>First public release. Requires WooCommerce \u2265 7.0 and PHP 8.0+.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3528253,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3528253,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3528253,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3528253,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3528253,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3528253,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3528253,"resolution":"3","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Waitlist form on a WooCommerce out-of-stock product page.","2":"Subscriber management screen in the admin with filters, statuses and CSV export.","3":"Notification email delivered when the product is back in stock."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[155593,4906,259748,4422,286],"plugin_category":[45],"plugin_contributors":[261801],"plugin_business_model":[],"class_list":["post-309015","plugin","type-plugin","status-publish","hentry","plugin_tags-back-in-stock","plugin_tags-notifications","plugin_tags-stock-notifier","plugin_tags-waitlist","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-webmastersteam","plugin_committers-webmastersteam"],"banners":{"banner":"https:\/\/ps.w.org\/wt-waitlist\/assets\/banner-772x250.png?rev=3528253","banner_2x":"https:\/\/ps.w.org\/wt-waitlist\/assets\/banner-1544x500.png?rev=3528253","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wt-waitlist\/assets\/icon-128x128.png?rev=3528253","icon_2x":"https:\/\/ps.w.org\/wt-waitlist\/assets\/icon-256x256.png?rev=3528253","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wt-waitlist\/assets\/screenshot-1.png?rev=3528253","caption":"Waitlist form on a WooCommerce out-of-stock product page."},{"src":"https:\/\/ps.w.org\/wt-waitlist\/assets\/screenshot-2.png?rev=3528253","caption":"Subscriber management screen in the admin with filters, statuses and CSV export."},{"src":"https:\/\/ps.w.org\/wt-waitlist\/assets\/screenshot-3.png?rev=3528253","caption":"Notification email delivered when the product is back in stock."}],"raw_content":"<!--section=description-->\n<p><strong>WT Waitlist<\/strong> is a \"back in stock\" waitlist for WooCommerce without bloat. Customers leave their email on an out-of-stock product page, and when the stock returns \u2014 the plugin sends a notification in the background through Action Scheduler.<\/p>\n\n<p>Built by the <a href=\"https:\/\/webmasters.team\">webmasters.team<\/a> team. Open-source code, no external APIs, all data stored locally in the WordPress database.<\/p>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li><strong>Signup form replaces Add to cart<\/strong> for out-of-stock products, with variation support (per size\/color).<\/li>\n<li><strong>Custom database tables<\/strong> (<code>{prefix}_waitlist_subscriptions<\/code>) \u2014 we do not clutter <code>wp_postmeta<\/code>, the plugin scales to tens of thousands of subscriptions.<\/li>\n<li><strong>Action Scheduler queue<\/strong> (bundled with WooCommerce): batch of 50 emails per tick, automatic retries, retry log visible in <code>WooCommerce \u2192 Status \u2192 Scheduled Actions<\/code>.<\/li>\n<li><strong>5 min throttle<\/strong> per product \u2014 prevents duplicate sends when multiple hooks fire (e.g. quantity change followed by status change).<\/li>\n<li><strong>One-click unsubscribe<\/strong> via a link in the email (SHA-256 token), no confirmation or login required.<\/li>\n<li><strong>GDPR-ready<\/strong>: consent logging (anonymized IP, timestamp, user agent), integration with WordPress Privacy Tools (export and erasure of data per email).<\/li>\n<li><strong>CSV export<\/strong> of subscribers from the admin panel (streamed, no timeouts on large lists).<\/li>\n<li><strong>Anti-spam<\/strong>: honeypot plus rate limiter per IP (10 submissions per hour).<\/li>\n<li><strong>Theme compatibility<\/strong>: classic themes (Storefront, Twenty Twenty-One\/Two\/Three) plus block themes (Twenty Twenty-Four\/Five) \u2014 the form attaches through a hook for classic templates and through a <code>render_block<\/code> filter for FSE.<\/li>\n<li><strong>Zero external dependencies<\/strong>: apart from WooCommerce, requires only plain PHP 8.0+.<\/li>\n<\/ul>\n\n<h4>Shortcode fallback<\/h4>\n\n<pre><code>[wt_waitlist product_id=\"123\"] \u2014 use this if your custom product template does not fire the standard hooks.\n<\/code><\/pre>\n\n<h4>What WT Waitlist does NOT do (by design)<\/h4>\n\n<ul>\n<li>No SMS, no Mailchimp\/MailerLite integrations in the free version.<\/li>\n<li>No double opt-in (minimal flow \u2014 leave email, get notification).<\/li>\n<li>No WYSIWYG editor for email templates (HTML template lives in the plugin file, override with the <code>wt_waitlist\/notification_context<\/code> filter).<\/li>\n<\/ul>\n\n<p>These features are planned for the Pro edition. The free edition covers 100% of the core waitlist flow.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce (required).<\/li>\n<li>Install <strong>WT Waitlist<\/strong> via WP Admin \u2192 Plugins \u2192 Add new, or manually over FTP (folder <code>wt-waitlist<\/code> in <code>wp-content\/plugins\/<\/code>).<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open the <strong>WT Waitlist<\/strong> menu in the admin panel and configure data retention plus the administrator notification email address.<\/li>\n<\/ol>\n\n<p>On first activation the plugin creates its database tables and schedules a daily job that purges old subscriptions.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20does%20the%20form%20appear%20on%20the%20product%20page%3F\"><h3>How does the form appear on the product page?<\/h3><\/dt>\n<dd><p>Automatically \u2014 the plugin hooks into the standard WooCommerce action (<code>woocommerce_single_product_summary<\/code>) for classic themes and into the <code>render_block<\/code> filter for block themes (FSE). The form is shown only when the product is out of stock.<\/p><\/dd>\n<dt id=\"what%20if%20my%20theme%20or%20template%20does%20not%20fire%20woocommerce%20hooks%3F\"><h3>What if my theme or template does not fire WooCommerce hooks?<\/h3><\/dt>\n<dd><p>Use the shortcode <code>[wt_waitlist product_id=\"123\"]<\/code> \u2014 it works everywhere, from page builders to custom single product templates.<\/p><\/dd>\n<dt id=\"how%20many%20emails%20are%20sent%20at%20once%3F\"><h3>How many emails are sent at once?<\/h3><\/dt>\n<dd><p>Action Scheduler processes batches of 50 subscribers per tick. For a product with 1000 subscribers we queue 20 batches, each processed asynchronously, without blocking the PHP request.<\/p><\/dd>\n<dt id=\"do%20emails%20go%20through%20my%20wp%20mail%20configuration%3F\"><h3>Do emails go through my WP Mail configuration?<\/h3><\/dt>\n<dd><p>Yes. We use <code>wp_mail()<\/code> \u2014 if you have WP Mail SMTP, SendGrid, Amazon SES etc. configured, the mail travels through them. The plugin does not hardcode any provider.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20the%20data%20after%20uninstalling%20the%20plugin%3F\"><h3>What happens to the data after uninstalling the plugin?<\/h3><\/dt>\n<dd><p>The <code>uninstall.php<\/code> file drops the tables and deletes the options. Clean. If you deactivate without deleting, the data stays \u2014 you can reactivate without losing subscriptions.<\/p><\/dd>\n<dt id=\"gdpr%20compliance%3F\"><h3>GDPR compliance?<\/h3><\/dt>\n<dd><p>The plugin stores anonymized IPs (last octet zeroed), consent timestamp and user agent. It integrates with WordPress Privacy Tools \u2014 a customer can request data export or deletion through the standard WordPress flow.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: replaced inline <code>&lt;style&gt;<\/code> block in the unsubscribe page with <code>wp_register_style()<\/code> + <code>wp_print_styles()<\/code> (WP guideline compliance).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<p>First public release.<\/p>\n\n<ul>\n<li>Waitlist form on product pages (simple + variable), classic and block theme support.<\/li>\n<li>Custom database tables (<code>{prefix}_waitlist_subscriptions<\/code>, <code>{prefix}_waitlist_email_log<\/code>).<\/li>\n<li>Stock-status change detection through WooCommerce hooks.<\/li>\n<li>Notification queue through Action Scheduler with 5 min throttle and batches of 50.<\/li>\n<li>One-click unsubscribe with SHA-256 token.<\/li>\n<li>Admin panel: subscriber list with filters and CSV export.<\/li>\n<li>Product-edit widget showing waitlist count.<\/li>\n<li>Integration with WordPress Privacy Tools (export + eraser).<\/li>\n<li>Shortcode <code>[wt_waitlist]<\/code> as fallback.<\/li>\n<li>Honeypot plus rate limiter (10\/hour per IP).<\/li>\n<li>Automatic purge of old subscriptions (configurable retention).<\/li>\n<\/ul>","raw_excerpt":"Lightweight waitlist for WooCommerce \u2014 automatic email notifications when an out-of-stock product (or variation) is back in stock.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/309015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=309015"}],"author":[{"embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/webmastersteam"}],"wp:attachment":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=309015"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=309015"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=309015"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=309015"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=309015"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=309015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}