Description
Stop fake and unwanted WooCommerce orders before they happen. Checkout Guard blocks suspicious checkouts using simple rules you control, with no external fraud service, no scoring engine, and no monthly fee.
Often you already know what you want to block: a throwaway email domain, a repeat offender’s IP, a country you don’t ship to. Checkout Guard puts those controls directly in your WooCommerce checkout.
🛡️ Block throwaway email services
Switch on one setting and Checkout Guard rejects checkouts from around 22,000 known disposable-email domains: Mailinator, Guerrilla Mail, YOPmail, Temp-Mail and thousands more. The list ships with the plugin, so it works the moment you enable it, with no signup and no API key.
🛡️ Block by email address, domain or pattern
Block individual addresses or whole domains, with wildcard support:
*@bad-domain.comblocks every address at that domainspam*@bad-domain.comblocksspammer@bad-domain.combut leavesnice@bad-domain.comalone*.edublocks every address ending in that TLD
Catch-all entries such as * or *@* would block every order on your store, so they are rejected when you save.
🛡️ Reject junk names
Catches checkouts where the name is obviously not a name: test, asdf, qwerty, John Doe and similar. Matching is exact and whole-field, so a customer called Testa or Contestabile is never affected by the entry test.
You can read the full list on the settings screen before switching the rule on.
🛡️ Check that the email can actually receive mail
Optionally look up the address’s domain during checkout and turn the order away if it cannot receive mail at all. If the lookup itself fails, the order goes through, so a DNS problem never costs you a sale.
🛡️ Block by IP address
Block individual IPv4 addresses, or use wildcards to cover a range:
203.0.113.*
Useful when you identify a recurring source of unwanted checkout attempts. If your store sits behind Cloudflare or another proxy, Checkout Guard reads the forwarded visitor IP rather than the edge server’s.
🛡️ Restrict billing countries
Block checkout for billing countries you don’t serve. This is a blocklist: you name the countries to turn away, not the ones to allow.
🛡️ Restrict order totals
Set a minimum, a maximum, or both, and stop checkouts falling outside the range. Useful against waves of suspicious low-value orders, or unusually large ones worth reviewing by hand.
⭐ Try it before it blocks anyone
Set Protection Mode to Learning and Checkout Guard records what each rule would have caught without turning a single customer away. Check the results, adjust your rules, then switch to Enforce when you are happy. Nothing is blocked until you say so.
📋 See what was blocked
Turn on recording, and the Blocked attempts tab lists every checkout a rule matched: when, which rules, which checkout, the email, the IP, and the cart total. A summary shows how many were stopped in the last 7 and 30 days and which rule fires most often.
Records are pruned automatically so the table never grows without limit.
🛒 Works with every checkout
Checkout Guard enforces on the classic WooCommerce checkout, the WooCommerce Checkout block, and express checkouts.
Wallet buttons placed on a product or cart page skip the checkout form entirely, so they are an easy route for a blocked customer to slip through. Checkout Guard checks the ones that create their order through WooCommerce, Apple Pay included. One known exception is described in the FAQ.
It also declares compatibility with High-Performance Order Storage (HPOS).
⚡ Designed to stay out of the way
Checks run during checkout validation, not on normal browsing, so regular customers shop at normal speed. The bundled domain list is only loaded into memory when you actually enable it.
Important: This plugin is an extension of the WooCommerce plugin, and it cannot function independently.
💻 Filters and Actions
Multiple hooks let you customize the plugin further. Rules live in a filterable registry, so a developer can add their own rules, change the bundled lists, or adjust matching. If you need any extra hooks, please don’t hesitate to ask.
Screenshots





Installation
- Upload “Checkout Guard – Block Fake Orders, Spam & Fraud for WooCommerce” plugin into the directory
wp-content/plugins/. - Enable “Checkout Guard – Block Fake Orders, Spam & Fraud for WooCommerce” plugin.
FAQ
-
Will this block real customers by mistake?
-
Set Protection Mode to Learning first. Every rule runs and records what it would have caught, but nothing is blocked and no customer is turned away. When the results look right, switch to Enforce.
-
Which disposable email domains are blocked?
-
Around 22,000, bundled with the plugin and based on the public disposable email domains list. The settings screen links to the source so you can check any domain. It is a copy taken when the plugin was released, so it will not match the source exactly.
-
Are forwarding services like Firefox Relay blocked?
-
No. Firefox Relay, Apple Hide My Email and Addy deliver to a real permanent inbox, so blocking them would reject a paying customer. They are excluded from the bundled list.
-
Will the junk-name rule block someone whose surname is Test?
-
No. Matching is exact and whole-field, never a substring, so
testblocks a customer who types “Test” as their whole name but never affects Testa, Contestabile or Testani. The full list is shown on the settings screen so you can check it before switching the rule on. -
How do I block an entire domain instead of just one email?
-
Enter
*@bad-domain.comon its own line in the email blocklist. That blocks every billing email at that domain, and nothing else.You can also enter the bare domain,
bad-domain.com. The difference is precision: a bare domain matches anywhere in the address, so it will also catchsomeone@notbad-domain.com. The*@form matches the domain exactly. Prefer the wildcard unless you specifically want the looser match. -
What wildcard patterns can I use in the email blocklist?
-
The
*wildcard stands for any run of characters, and the pattern must match the whole address:*@bad-domain.comblocks every address at that domain.spam*@bad-domain.comblocksspammer@bad-domain.combut leavesnice@bad-domain.comalone.*.edublocks every address ending in that TLD.
Catch-all entries such as
*or*@*would block every order on your store, so they are rejected and removed when you save. -
Does the IP address block support wildcards?
-
Yes. Checkout Guard supports IPv4 wildcards, so
203.0.113.*covers that whole range. Wildcards are IPv4 only. -
Does it work behind Cloudflare?
-
Yes. Checkout Guard reads forwarded proxy headers by default, so IP rules match the real visitor rather than the CDN edge. If your store is not behind a proxy you can switch that off in Store Setup.
-
Can I only allow certain countries instead of blocking?
-
Not currently. The country rule is a blocklist: you list the countries to turn away.
-
Does it work with the Checkout block?
-
Yes. The classic checkout, the WooCommerce Checkout block and express checkouts are all enforced, with one known exception noted below, and the plugin declares HPOS compatibility.
-
Apple Pay is, including on product and cart pages. The WooCommerce PayPal Payments gateway sends it through WooCommerce’s own checkout, so every rule runs and a blocked attempt is stopped before the order is created.
Express buttons in general are checked whenever the gateway creates its order through WooCommerce. WooPayments is covered in full: its Apple Pay, Google Pay, Link and WooPay buttons all place the order the same way the Checkout block does, so every rule runs wherever you put the button. A blocked attempt leaves nothing in your orders list.
There is one known exception. WooCommerce PayPal Payments has a setting called “Pay Now Experience”, which lets customers skip the Order Review page and is switched on for new merchants during its setup. With it on, the PayPal button on a product or cart page builds the order itself without going through WooCommerce’s checkout, and Checkout Guard does not see those orders. Support for them is planned. In the meantime, switching “Pay Now Experience” off in the PayPal settings sends those customers through the checkout page instead, where every rule runs. Apple Pay is unaffected either way.
-
Will this plugin slow down my store frontend?
-
No. Checks run during checkout validation, not on normal browsing, so browsing speed is unaffected. The bundled disposable-domain list is only loaded when you enable it, and the optional deliverability lookup is the only rule that touches the network.
-
Does it store customer data?
-
Only if you switch recording on, and it is off by default. When enabled, a blocked attempt stores the billing email, IP, cart total and which rules matched. Records are deleted automatically after the retention period you choose, 90 days by default.
Reviews
Contributors & Developers
“Checkout Guard – Block Fake Orders, Spam & Fraud for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Checkout Guard – Block Fake Orders, Spam & Fraud 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
1.2.0
- Feature: Block around 22,000 known disposable-email domains from a bundled list, with forwarding services such as Firefox Relay and Apple Hide My Email deliberately excluded
- Feature: Reject junk names such as
test,asdfandJohn Doe, matched exact and whole-field so real surnames are unaffected. The full list is readable on the settings screen - Feature: Optional mail deliverability check that turns away addresses whose domain cannot receive mail. Fails open, so a DNS problem never costs a sale
- Feature: Protection Mode – Learning records what would have been blocked without turning anyone away; Off runs no checks
- Feature: Blocked attempts screen listing every checkout a rule matched, with 7 and 30 day summaries
- Feature: Enforcement on the WooCommerce Checkout block via the Store API. Earlier versions checked the classic checkout only
- Feature: Enforcement on express checkouts. Wallet buttons placed on product and cart pages can build the order without ever reaching checkout validation, so no rule used to run on them at all. Express checkouts that create their order through WooCommerce are now checked like any other checkout, and a blocked one leaves no order behind. See the FAQ for one known exception
- Feature: Setting for stores behind a CDN or proxy, so IP rules match the real visitor
- Feature: Blocked-attempt recording now works and is off by default. Records are kept 90 days unless you choose otherwise
- Change: Settings screen reorganised into grouped cards, with rule explanations shown inline
- Change: Blocked countries are now listed as removable tags, with a search box to add more. Type “kingdom” or “GB” to find United Kingdom. The old control was a 250-row scrolling list that hid your own selection inside it and cleared it if you clicked without holding Ctrl
- Change: The junk-name rule is a top-level rule. In an earlier build it only ran when the email rule was also on
- Change: Settings and Logs links on the plugin row of the Plugins screen
- Dev: Rules moved into a filterable registry (
cgbs_rules), with a surface-agnostic engine and thin adapters per checkout - Compat: Declares High-Performance Order Storage (HPOS) compatibility
1.1.0
- Feature: Wildcard support in the email blocklist (e.g.
*@bad-domain.com,spam*@bad-domain.com,*.edu) - Fix: Fatal error at checkout when the “blocked by IP” message was left empty
- Fix: Wrong fallback message shown for IP blocks
- Fix: Blocklist entries with trailing whitespace are trimmed instead of discarded
- Docs: Corrected the domain blocking FAQ and documented wildcard syntax
1.0.4
- Optimize: Asset Loading
- Update: WordPress Version 7.0.2
1.0.3
- Fix: Issue applying limits for some visitors
- Admin: Changed menu position to WooCommerce submenu
- Update: WordPress Version 6.8.2
1.0.2
- Feature: Add IPv4 wildcards
- Update: WordPress Version 6.8.1
- Fix: Warnings
1.0.1
- Fix: Undefined variable issue
- Styling customizations
- Move to main admin menu
1.0.0
- First Edition release
