{"id":209583,"date":"2024-10-29T18:02:27","date_gmt":"2024-10-29T18:02:27","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/email-and-domain-blocker\/"},"modified":"2026-04-01T01:58:08","modified_gmt":"2026-04-01T01:58:08","slug":"email-and-domain-blocker","status":"publish","type":"plugin","link":"https:\/\/ml.wordpress.org\/plugins\/email-and-domain-blocker\/","author":17241614,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.2","stable_tag":"1.2","tested":"6.7.5","requires":"5.8","requires_php":"7.2","requires_plugins":null,"header_name":"Email and Domain Blocker","header_author":"Kaleem Abbasi","header_description":"Block specific email addresses and email domains from registration in WooCommerce.","assets_banners_color":"763658","last_updated":"2026-04-01 01:58:08","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/iamkaleemabbasi.gumroad.com\/coffee","header_plugin_uri":"https:\/\/kaleemabbasi.com\/email-and-domain-blocker-for-woocommerce\/","header_author_uri":"https:\/\/kaleemabbasi.com","rating":5,"author_block_rating":0,"active_installs":300,"downloads":2283,"num_ratings":3,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"kaleemabbasi","date":"2024-10-29 18:06:29"},"1.1":{"tag":"1.1","author":"kaleemabbasi","date":"2025-09-03 21:51:45"},"1.2":{"tag":"1.2","author":"kaleemabbasi","date":"2026-04-01 01:58:08"}},"upgrade_notice":{"1.2":"<p>Major update: fixes domain matching bug, adds disposable email blocking, bulk import, dashboard widget, custom error messages, and WordPress native registration support. Upgrade strongly recommended.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":3},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3177633,"resolution":"128x128","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3177632,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.1","1.2"],"block_files":[],"assets_screenshots":{"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3178226,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Admin settings screen with blocked domains, emails, disposable blocking, and custom error message options.","2":"Test Email Checker \u2014 instantly check if an email is allowed or blocked.","3":"Logs tab with stats, table, export, and pagination.","4":"Import tab \u2014 bulk import blocked domains\/emails from a text or CSV file.","5":"Dashboard widget showing today, this week, and all-time blocked attempt counts."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[247340,165276,603,4248,286],"plugin_category":[41,45,58],"plugin_contributors":[233823],"plugin_business_model":[],"class_list":["post-209583","plugin","type-plugin","status-publish","hentry","plugin_tags-domain-blocker","plugin_tags-email-blocker","plugin_tags-registration","plugin_tags-spam-prevention","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_category-user-management","plugin_contributors-kaleemabbasi","plugin_committers-kaleemabbasi"],"banners":{"banner":"https:\/\/ps.w.org\/email-and-domain-blocker\/assets\/banner-772x250.png?rev=3177632","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/email-and-domain-blocker\/assets\/icon-128x128.png?rev=3177633","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/email-and-domain-blocker\/assets\/screenshot-2.jpg?rev=3178226","caption":"Test Email Checker \u2014 instantly check if an email is allowed or blocked."}],"raw_content":"<!--section=description-->\n<p>Tired of fake signups and spam accounts in your WooCommerce store?\n<strong>Email and Domain Blocker for WooCommerce<\/strong> lets you block unwanted emails or domains from registering \u2014 keeping your store clean and your customers real.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<ul>\n<li>Block specific email addresses (e.g. <code>baduser@gmail.com<\/code>)<\/li>\n<li>Block entire domains (e.g. <code>@spam.com<\/code>)<\/li>\n<li>Wildcard support (e.g. <code>*@gmail.com<\/code>, <code>*@*.ru<\/code>, <code>test*@domain.com<\/code>)<\/li>\n<li><strong>Disposable email auto-blocking<\/strong> \u2014 block 200+ known throwaway providers (Mailinator, TempMail, YOPmail, etc.) with one checkbox<\/li>\n<li><strong>Custom error message<\/strong> \u2014 set your own message shown to blocked users<\/li>\n<li><strong>WordPress native registration blocking<\/strong> \u2014 optionally apply rules to <code>\/wp-login.php?action=register<\/code> as well<\/li>\n<li><strong>Bulk Import<\/strong> \u2014 upload a <code>.txt<\/code> or <code>.csv<\/code> file to import a list of blocked domains\/emails in one click<\/li>\n<li><strong>Dashboard Widget<\/strong> \u2014 at-a-glance stats (today \/ this week \/ all time) right on your WordPress dashboard<\/li>\n<li><strong>Test Email Checker<\/strong> \u2014 instantly check if an email would be blocked<\/li>\n<li>Optional logging of blocked attempts<\/li>\n<li><strong>Logs tab<\/strong> \u2014 view, paginate, clear, and download blocked attempts as CSV<\/li>\n<li>Newline and comma-separated list support \u2014 one item per line or comma-separated<\/li>\n<li>Simple, accessible admin UI with usage examples and tab navigation<\/li>\n<\/ul>\n\n<p><strong>Use cases:<\/strong><\/p>\n\n<ul>\n<li>Stop spam signups with disposable or free mail services<\/li>\n<li>Block competitors or fraud-prone domains<\/li>\n<li>Restrict registrations to company emails only<\/li>\n<li>Bulk-block entire country TLDs (e.g. <code>*@*.ru<\/code>)<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to the <code>\/wp-content\/plugins\/<\/code> directory or install via WordPress Plugins screen.<\/li>\n<li>Activate the plugin through the \"Plugins\" menu in WordPress.<\/li>\n<li>Go to <strong>Settings &gt; Email &amp; Domain Blocker<\/strong> to configure.<\/li>\n<li>Enter blocked emails\/domains (one per line or comma-separated).<\/li>\n<li>Optionally enable logging, disposable email blocking, and WordPress registration blocking.<\/li>\n<li>Test with the built-in <strong>Test Email Checker<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20block%20users%20from%20logging%20in%3F\"><h3>Does this block users from logging in?<\/h3><\/dt>\n<dd><p>No. It only blocks <strong>new registrations<\/strong>. Existing accounts remain completely unaffected.<\/p><\/dd>\n<dt id=\"can%20i%20use%20wildcards%3F\"><h3>Can I use wildcards?<\/h3><\/dt>\n<dd><p>Yes! Examples:\n* <code>*@gmail.com<\/code> \u2014 blocks all Gmail addresses\n* <code>*@*.ru<\/code> \u2014 blocks all .ru domains\n* <code>test*@domain.com<\/code> \u2014 blocks any address starting with \"test\"<\/p><\/dd>\n<dt id=\"how%20do%20i%20block%20an%20entire%20domain%3F\"><h3>How do I block an entire domain?<\/h3><\/dt>\n<dd><p>Enter <code>@spam.com<\/code> (with the @) in the Blocked Domains field. The plugin will correctly match only emails from that exact domain.<\/p><\/dd>\n<dt id=\"what%20is%20disposable%20email%20blocking%3F\"><h3>What is disposable email blocking?<\/h3><\/dt>\n<dd><p>Enable the \"Block Disposable Emails\" checkbox to automatically block 200+ known throwaway email providers (Mailinator, TempMail, YOPmail, Guerrilla Mail, etc.) without entering them manually.<\/p><\/dd>\n<dt id=\"can%20i%20block%20registrations%20on%20the%20standard%20wordpress%20login%20page%20too%3F\"><h3>Can I block registrations on the standard WordPress login page too?<\/h3><\/dt>\n<dd><p>Yes! Enable the \"Block WordPress Registration\" option in Settings to also apply your rules to <code>\/wp-login.php?action=register<\/code>.<\/p><\/dd>\n<dt id=\"how%20do%20i%20import%20a%20large%20list%20of%20blocked%20domains%3F\"><h3>How do I import a large list of blocked domains?<\/h3><\/dt>\n<dd><p>Go to the <strong>Import<\/strong> tab and upload a <code>.txt<\/code> or <code>.csv<\/code> file with one domain per line (or comma-separated). You can choose to append to or replace your existing list.<\/p><\/dd>\n<dt id=\"where%20can%20i%20see%20blocked%20attempts%3F\"><h3>Where can I see blocked attempts?<\/h3><\/dt>\n<dd><p>Enable logging in Settings. Blocked attempts will appear in the <strong>Logs tab<\/strong>, where you can view, clear, or download them as CSV.<\/p><\/dd>\n<dt id=\"is%20this%20compatible%20with%20paid%20memberships%20pro%20or%20other%20woocommerce%20membership%20plugins%3F\"><h3>Is this compatible with Paid Memberships Pro or other WooCommerce membership plugins?<\/h3><\/dt>\n<dd><p>Yes. It hooks into WooCommerce's registration filter, so it works with any plugin that uses WooCommerce accounts.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens to my data if I delete the plugin?<\/h3><\/dt>\n<dd><p>All plugin data (blocked lists, log table, settings) is completely removed when you delete the plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2<\/h4>\n\n<ul>\n<li>Fixed: Domain matching now correctly compares the @domain portion only \u2014 previously <code>@gmail.com<\/code> would also match <code>@notgmail.com<\/code>.<\/li>\n<li>Fixed: Restored full i18n\/translation support (all strings wrapped in <code>__()<\/code> \/ <code>esc_html__()<\/code>).<\/li>\n<li>Fixed: Tab parameter is now properly allowlisted, not just sanitized.<\/li>\n<li>Fixed: Replaced <code>wp_add_inline_style()<\/code> with a proper enqueued stylesheet.<\/li>\n<li>Added: <code>uninstall.php<\/code> \u2014 drops <code>wp_edb_logs<\/code> table and all options on plugin deletion.<\/li>\n<li>Added: WooCommerce dependency notice when WooCommerce is not active.<\/li>\n<li>Added: <strong>Disposable email auto-blocking<\/strong> \u2014 200+ known throwaway providers with one checkbox.<\/li>\n<li>Added: <strong>Custom error message<\/strong> \u2014 override default block messages with your own text.<\/li>\n<li>Added: <strong>WordPress native registration blocking<\/strong> \u2014 optional, applies rules to <code>\/wp-login.php?action=register<\/code>.<\/li>\n<li>Added: <strong>Bulk Import tab<\/strong> \u2014 upload <code>.txt<\/code> \/ <code>.csv<\/code> files to import blocked lists (append or replace mode).<\/li>\n<li>Added: <strong>Dashboard Widget<\/strong> \u2014 at-a-glance blocked attempt stats (today \/ this week \/ all time).<\/li>\n<li>Added: Newline-separated list support (in addition to comma-separated).<\/li>\n<li>Added: \"Page X of Y\" indicator in Logs pagination.<\/li>\n<li>Added: \"Blocked this week \/ total\" stats bar on the Logs tab.<\/li>\n<li>Added: Enter key support in the Test Email Checker input.<\/li>\n<li>Improved: All JavaScript strings are now localized (passed from PHP via <code>wp_localize_script()<\/code>).<\/li>\n<li>Improved: <code>edb_parse_list()<\/code> helper normalizes all list inputs consistently.<\/li>\n<li>Improved: Tested up to WordPress 6.7.<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Added wildcard support for blocking emails\/domains.<\/li>\n<li>Added Test Email Checker (AJAX).<\/li>\n<li>Added optional logging system.<\/li>\n<li>Added Logs tab with view, clear, and CSV export.<\/li>\n<li>Improved admin UI with help text and examples.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release \u2014 block specific emails and domains from WooCommerce registration.<\/li>\n<\/ul>","raw_excerpt":"Block emails or domains from WooCommerce and WordPress signups. Supports wildcards, disposable email blocking, bulk import, CSV export, and logs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/209583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=209583"}],"author":[{"embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kaleemabbasi"}],"wp:attachment":[{"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=209583"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=209583"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=209583"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=209583"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=209583"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ml.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=209583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}