Email validation for WordPress forms
A free WordPress plugin that checks the email address on your sign-up, comment, WooCommerce checkout, Contact Form 7, WPForms and Gravity Forms submissions with your own SimpleVerifier API key. It blocks addresses that will bounce and throwaway addresses, and if SimpleVerifier cannot be reached the form simply goes through. It needs the Pro plan or higher.
Version 0.1.0, GPL-2.0-or-later. Requires WordPress 5.8 and PHP 7.4. A direct download for now, not yet in the WordPress.org directory.
Which plan do you need?
The plugin uses the SimpleVerifier API, and API access comes with Pro ($29.99/month, 10,000 calls a month included), Business and Agency. The Starter and Growth plans verify CSV lists in the dashboard and do not include the API. If your key is on one of them, SimpleVerifier answers with a 402 that says API access comes with Pro or higher. The plugin shows you that message on its settings page and, because it fails open, lets every submission through unchecked until you upgrade or swap the key. Nothing breaks, but nothing is checked either.
Each form check is one API call. See the API docs for included calls and what extra calls cost.
Install in five steps
- Download the plugin zip (version 0.1.0) with the button on this page.
- In WordPress go to Plugins, Add New Plugin, Upload Plugin, choose the zip and activate it.
- Create an API key at simpleverifier.com/api-keys. It starts with sv_live_ and needs the Pro, Business or Agency plan.
- Open Settings, SimpleVerifier. Paste the key, tick the forms to protect and choose what happens to invalid and risky addresses. Save.
- Press Test connection. A green notice means the key works. Then submit a form with a made-up address to see the message.
Where it checks
| WordPress registration | Adds a registration error. |
| Comments | Visitors who are not logged in. |
| WooCommerce | Classic and block checkout, and My Account registration. |
| Contact Form 7 | email and email* fields. |
| WPForms | Email fields. |
| Gravity Forms | Email fields. |
Each can be switched off. The plugin has been run on a real WordPress install for registration, comments and the settings page; the form-plugin and WooCommerce hooks follow each plugin's documented filters and have had less testing, so try your own form once before you rely on it.
What happens to each result
| Invalid | Blocked by default. The address will bounce or is a throwaway address. Choose allow, warn once or block. |
| Risky | Allowed by default. Delivery could not be confirmed: a catch-all domain, a role address, a provider that hides mailbox status, or a server that did not answer. Choose allow, warn once or block. |
| Valid | Passes. The recipient's mail server confirmed the mailbox exists. |
A separate switch blocks disposable addresses whatever the invalid setting says. Warn once means the visitor sees the message the first time and can submit the same address again to continue.
Built to never lose a real lead
- Fails open on timeouts, errors, rate limits, a missing plan and a wrong key.
- Results cached for 60 minutes by default, so repeats cost nothing.
- Self-imposed limits of 60 checks a minute per site and 10 uncached checks per visitor every ten minutes.
- Only the email address is sent, never anything else, and nothing before you save a key.
- No tracking, no ads, no front-end branding. Adds suggested wording to your privacy policy page.
Common questions
- Do I need a paid SimpleVerifier plan to use the plugin?
- Yes. The plugin calls the SimpleVerifier API with your own key, and API access comes with Pro ($29.99/month, 10,000 calls a month included), Business and Agency. The Starter and Growth plans cover CSV verification in the dashboard only, so a key on those plans is answered with a 402 saying API access needs Pro or higher. The plugin then lets every submission through unchecked and shows the message on its settings page. The free web checks are not available to the plugin.
- What does each form check cost?
- One API call. Pro includes 10,000 calls a month, then $1.50 per 1,000 on monthly billing; on yearly billing the included calls are the monthly limit. Results are cached for 60 minutes by default so the same address is not charged twice, and the plugin caps itself at 60 checks a minute per site and 10 uncached checks per visitor every ten minutes so a bot cannot run up your bill. Current limits are on the API docs page.
- What happens if SimpleVerifier is down or my plan lapses?
- The plugin fails open. A timeout, an error, a rate limit, a missing plan or a wrong key all let the submission through. A real customer is never turned away because of an outage or a billing problem.
- What does the plugin send to SimpleVerifier?
- Only the email address, over HTTPS, with your API key in the request header. No site address, visitor IP, name, message or other form field is sent. Nothing is sent until you save a key. The plugin has no analytics and does not contact any other server.
- Why is a risky address allowed by default?
- Risky means delivery could not be confirmed, not that the address is fake. Many real customers use catch-all business domains or role addresses. The plugin never calls an unconfirmed address valid. Switch risky to warn once or block if you prefer.
- Will a slow mail server slow down my form?
- A live mailbox check can take several seconds and sometimes longer. The plugin gives up after 8 seconds by default (you can set 2 to 15) and lets the submission through. Repeats of the same address come from the cache.
- Is it on the WordPress.org plugin directory?
- Not yet. Version 0.1.0 is a direct download from this page. It follows the directory's guidelines and a directory listing is planned, but it is not live today, so update it by uploading new versions until then.
- Which form plugins are not supported?
- Elementor forms, Fluent Forms and Ninja Forms are not built yet. Developers can call SVEV_Policy::validate( $email, 'cf7' ) from their own validation code: it returns an empty string to let the address through, or a message to show.
Prefer no plugin? The free form widget checks format, typos and common throwaway domains in the browser. See all integrations.