How email verification works, check by check
Here is each check we run on an address, what it proves and where it stops being able to prove anything. We are also plain about the one step we do not run: the mailbox conversation with the receiving server.
-
Syntax
The first check costs nothing and removes a surprising share of a bought list. An address has to be shaped the way the mail standard requires: one at sign, a local part within the allowed characters and length, a domain that is a valid domain name. Typos, trailing commas from a spreadsheet and addresses with a space in the middle die here.
-
Domain and MX records
Next we ask the domain name system which servers receive mail for that domain. If a domain publishes no MX records and no usable fallback, it accepts no mail, and every address on it bounces regardless of how correct it looks. A domain can also publish a null MX record to say outright that it takes no mail, and we treat that as a failure even when the domain has a website. The MX hosts also tell us which provider runs the mail.
-
Risk flags
We flag disposable domains from a list of several thousand throwaway providers, role addresses that reach a department rather than a person, consumer mailboxes on free providers, and domains that look like a misspelling of a common provider, such as gmial.com. A disposable domain or a likely typo is not counted as verified.
-
Published by the company
We read the company's own website and look for the exact address. When we find it, the row is confirmed and carries the page it was published on, so you can check the proof yourself. This is the strongest evidence we offer, and it is what makes a found address more than a pattern.
Our statuses and what to do with each
| Status | What happened | What to do |
|---|---|---|
| Confirmed | The company published this address on its own website | Send to it, and keep the source page with the record |
| Valid | Syntax passed, the domain accepts mail, not disposable and not a typo | Send at a careful pace; the mailbox itself was not tested |
| Undeliverable | The syntax failed, or the domain does not exist or accepts no mail | Drop it and never retry it |
| Disposable or possible typo | A throwaway provider, or a domain like gmial.com | Drop it, or fix the typo and check again |
Being honest about the ceiling
No external verifier can see inside a mailbox, and ours does not talk to the receiving mail server at all. These are the limits you should know about.
- We do not run the SMTP step, the conversation in which a verifier asks the receiving server whether it will accept one mailbox. So a valid row can belong to a person who has left, and we do not detect catch-all domains.
- Even verifiers that do run the SMTP step cannot see through a catch-all domain or a provider that accepts every recipient and bounces later. If you need a mailbox level check before a large cold send, run your export through a dedicated verifier as well.
- A confirmed row means the company published the address. A page can stay online after the person leaves, which is why the row shows the date of the check.
- A full mailbox, an out of office or an autoresponder tells you nothing about whether mail arrives. Only the send tells you that.
- Verification says the address can plausibly receive mail. It says nothing about whether the person wants your email, which is still your job.
A found address without verification is just a pattern
When we resolve an address from a name and a domain, the ranked pattern is a hypothesis. Finding the address on the company's own website is what turns it into a confirmed row. A pattern candidate without that proof costs nothing on any plan: you did not get an answer, so you should not pay for one.
Read find email address by name for the pattern side, and email verifier for the check set in full.