Email deliverability glossary: 40 terms every sender should know
Forty email deliverability terms defined in one or two sentences each: bounces, SPF, DKIM, DMARC, spam traps, greylisting, sender reputation, inbox placement and verification.
CAPTCHAs and honeypots test behaviour, not the address. Real-time email validation stops typos, disposable domains and dead mailboxes on WordPress forms, with plugin setup steps.
WordPress form spam and fake sign-ups get past CAPTCHAs and honeypots because those tools test how a visitor behaves, not whether the email address they typed is real. Real-time email validation checks the address itself at the moment it is entered: it catches typos, disposable domains, dead mailboxes and role accounts before the submission is saved, so junk never reaches your list, your CRM or your notification inbox. On WordPress that takes a plugin, an API key and about ten minutes.
A CAPTCHA asks one question: is there a human-like session on the other end? A honeypot asks a narrower one: did something fill in a field a human could not see? Both are worth having, but neither looks at the data being submitted.
That leaves three gaps that show up on almost every WordPress site:
The cost lands on your sending domain. Typically around 15% of addresses collected through forms are invalid at the moment of capture, and every one of them hard bounces when your welcome email or order confirmation goes out. That pushes a welcome-email stream well past the 2% hard-bounce line where mailbox providers start throttling. Recovering from that is covered in how to reduce email bounce rate, but it is far cheaper to stop the addresses at the form.
A real-time check runs the full verification pipeline on one address in under a second, while the visitor is still on the page. On a WordPress form that means:
did_you_mean field, so gmial.com becomes a suggestion for gmail.com that the visitor can accept with one click.disposable: true. See why to block disposable addresses.role: true and scored risky, so you can decide whether a shared inbox belongs on a personal newsletter.The verdict comes back as deliverable, undeliverable, risky or unknown with a 0 to 100 score, and the form acts on it before the row is written.
| Layer | Stops | Misses |
|---|---|---|
| Honeypot field | Naive bots that fill every input | Scripted bots that read the DOM, every human |
| CAPTCHA or Turnstile | Bulk automated submissions | Solver farms, fake-but-human sign-ups, typos |
| Rate limit per IP | Floods from one source | Slow bots, rotating proxies, single bad addresses |
| Real-time email validation | Typos, disposable, dead mailboxes, role accounts | Bots using one real, deliverable address |
Each layer's blind spot is covered by another, and validation is the only layer that improves the quality of the addresses you keep rather than just reducing the number you reject.
did_you_mean suggestion when there is one. Warn lets the submission through and stores the verdict and score in the entry meta so you can filter later. A sensible default is block on undeliverable, warn on risky, allow on unknown.Repeat checks of the same address within 24 hours are free and return cached: true, so a visitor who corrects a typo and resubmits does not cost a second credit.
Bespoke themes often render forms outside the five supported plugins. For those, drop in the JavaScript widget from the JavaScript integration. It is a single script tag:
<script src="https://verifyre.co/widget.js"
data-key="vfy_live_YOUR_API_KEY"
data-selector="input[type=email]"
data-block="true" async></script>
It attaches to every email input matching the selector, verifies when the field loses focus, and fires a verifyre DOM event carrying status, reason, reason_text, did_you_mean and score. Listen for it when you want your own messaging:
document.addEventListener("verifyre", (e) => {
const { status, did_you_mean } = e.detail;
if (did_you_mean) showHint("Did you mean " + did_you_mean + "?");
if (status === "undeliverable") disableSubmit();
});
For anything that matters, such as account creation, also verify server-side with a GET https://verifyre.co/api/v1/verify?email=... call from your PHP handler. The widget stops honest mistakes; the server call stops anyone who disables JavaScript. The form validation widget page covers styling, and the signup form validation guide covers the UX in depth.
Almost none, if you follow three rules: validate when the field loses focus rather than on every keystroke, show suggestions as a tap-to-accept hint rather than an error, and never block on an unknown verdict, because a greylisting server that would not answer in time is not the visitor's fault. The only people who then see a hard stop are typing addresses that could never receive your mail.
Not entirely. It covers list quality, but a flood of submissions using one real address still needs a rate limit or an invisible challenge. Many sites keep the invisible challenge and drop the visible puzzle.
A check typically completes in well under a second and runs while the visitor moves to the next field. The submission itself is not delayed unless the verdict comes back undeliverable.
The plugin treats a timeout like an unknown verdict and lets the submission through. It never blocks a visitor because of a network problem on our side.
No. Verification stops before the SMTP DATA command, so no message is ever sent and the visitor's inbox sees nothing.
Related reading
@Forty email deliverability terms defined in one or two sentences each: bounces, SPF, DKIM, DMARC, spam traps, greylisting, sender reputation, inbox placement and verification.
@Real-time email validation checks an address as it is typed: syntax, typos, disposable domains, role accounts, MX and an optional mailbox check. Here is how it works.
@Gmail, Outlook and Yahoo addresses carry no company signal, so B2B teams segment them. When free addresses are legitimate, how the free and role flags route them, and bulk detection.
Photos: Freepik