WooCommerce + VerifyAnyEmail
Official pluginWooCommerce support is built into the VerifyAnyEmail WordPress plugin. Once installed, it validates the billing email during checkout so orders with undeliverable addresses are caught before they’re placed.
Plugin details
- Version
- 1.0.0
- Requires WordPress
- 5.5+
- Tested up to
- WordPress 6.6
- WooCommerce
- Supported
- Requires PHP
- 7.2+
- License
- GPL-2.0-or-later
Behaviour & privacy
- Fail-open: if the API can’t be reached within the timeout, the address is allowed through so an outage never blocks checkout.
- Strictness: blocks clearly undeliverable addresses; optionally also risky/unknown.
- Caching: results cached 12 hours per address to avoid duplicate credit use.
- Data: only the address being checked is sent, over HTTPS, with your API key. No data is sold.
- Settings: Settings → VerifyAnyEmail (API key, where to verify, strictness, timeout).
A public WordPress.org listing and signed release are planned. Changelog: v1.0.0 — initial release (registration, WooCommerce checkout, comment verification).
Setup
- 1Install the WordPress plugin
Download and install the plugin (same one used for WordPress), then activate it.
- 2Enable WooCommerce checkout
In Settings → VerifyAnyEmail, tick “WooCommerce checkout” and save.
- 3Test it
Place a test order with a clearly invalid address — checkout is blocked with a helpful message. Real addresses pass through instantly.
Handling the result
Every verification returns a result object with a status, a 0–100 score and a “did you mean” suggestion for typos. Branch on the status:
| status | Meaning | Recommended action |
|---|---|---|
| deliverable | Mailbox exists and accepts mail | Accept |
| undeliverable | Invalid syntax, no MX, or rejected mailbox | Block / reject |
| risky | Accepts but low quality (catch-all, role, disposable) | Allow with caution, or challenge |
| unknown | Couldn’t determine (greylist, timeout, blocked port) | Allow (fail-open) or retry later |
For sign-up and checkout forms, the safe default is to block only undeliverable so you never turn away a real customer, and to surface the suggestion (“did you mean gmail.com?”) inline to recover typos.
Security & reliability
- Keep your API key server-side. Never expose it in client-side JavaScript. In WooCommerce, store it in the integration’s credential/secret store, not in a shared script.
- Fail open. If the API errors or times out, let the address through rather than blocking a real user over a transient issue.
- Retry transient errors. Back off and retry on
429(rate limit) and5xx; don’t retry4xxvalidation errors. - Cache per address. One credit is spent per unique verification — cache results (e.g. 12–24h) so re-submits don’t re-charge.
- Tag the source. This recipe sends
X-VAE-Source: woocommerceso your dashboard shows where verifications come from.
Troubleshooting
| Response | Cause & fix |
|---|---|
| 401 | Missing or wrong API key — check the Authorization header is Bearer YOUR_API_KEY. |
| 402 | Out of credits — top up in the dashboard. (The plugin fails open in this case.) |
| 429 | Rate limited — slow down or upgrade your plan; back off and retry. |
| No result written | Confirm you’re reading result.status, and that the request body is { "email": "…" } as JSON. |