List verification
How to verify an email list before sending
Upload or API-verify the list before the first campaign mail. EmailPal probes catch-alls over SMTP (RCPT TO only, nothing delivered) and returns six verdicts so you are not paying for bounces with reputation.
Why this is step zero
A 4% bounce rate will undo warmup. Catch-alls look valid until they are not. Role addresses (info@, support@) waste the send and collect spam complaints. Disabled and full mailboxes become hard bounces on a mailbox you just spent two weeks warming.
List verification by EmailPal is built in. You do not need a second vendor for the first pass. Run it before the first campaign mail from a plan mailbox or a pre-warmed lease. The 15/day and 40/day caps do not protect you from a dirty list.
What the check actually does
EmailPal asks the receiving server about a mailbox that cannot exist, then asks about your real contact. If the fake address is accepted, the domain is a catch-all and we will not call your contact valid.
Nothing is delivered. RCPT TO only. One probe per domain is cached for a day so a 10,000-row CSV does not hammer the same MX 10,000 times.
The six answers:
| Verdict | Send? |
|---|---|
| Valid | Yes — the server rejected an impossible mailbox and accepted this one. |
| Catch-all | Risky. The domain accepts anything. |
| Unknown | The server would not say. Treat as unverified. |
| Role | Shared/functional address. Often filtered. |
| Full mailbox | Exists, cannot receive now. Sending creates a bounce later. |
| Disabled | Not accepting mail. |
Details: Six verification verdicts, What is a catch-all email, Catch-all detection.
How to run it
Dashboard
- Sign in. Open Lists.
- Upload a CSV or paste addresses. A header row with an email column is enough; extra columns are ignored.
- Wait for verdicts. Catch-alls, disabled and full mailboxes are the rows to drop first.
- Export or send only what you are willing to risk. Most teams send
validonly. Some also acceptunknownat lower volume.
The same engine can run on upload at send time where the dashboard offers it, so a list that skipped Lists still gets probed.
REST API
Authenticate with an API key. See Create an API key and the API reference.
POST /api/public/v1/verify— one address, answered in the same request. Use this in a signup form or CRM import.- Bulk list endpoints — same six verdicts, same catch-all probe, counted against the daily allowance.
MCP
The verify_list tool on @emailpal/mcp is the same verifier. An agent can clean a list as one step in a longer job. Connect the MCP server.
Daily allowances
| Plan | Instant checks / day |
|---|---|
| Starter | 500 |
| Growth | 1,500 |
| Scale | 4,500 |
Extra capacity is sold in blocks of 500 checks/day per month. Dashboard uploads and API/MCP share the pool. Pricing, plans and mailbox overages.
After you have verdicts
- Drop
disabledandfull mailbox. Those are known bounces. - Decide on
catch-allas a policy, not a one-off. Many teams drop them; some mail a subset that matched LinkedIn. - Do not round
unknownup tovalid. Re-try later if the domain greylists probes. - Skip most
roleaddresses for cold email. - Send
validfrom a mailbox that is campaign-ready or from a pre-warmed lease, inside the cap.
Then read the cold email deliverability guide before you raise volume.
FAQs
Does verification send a real email?
No. SMTP probing uses RCPT TO. Nothing is delivered. The prospect does not get a message from EmailPal.
Should I re-verify every week?
Re-verify after a few months, or any time you bought a new list. People leave, mailboxes fill, domains flip to catch-all. A CSV from last quarter is not "already clean."
Why did a real person come back catch-all?
Because we cannot distinguish them from a typo. The domain said yes to a mailbox that cannot exist. That is the honest answer. See Catch-all detection.
Instantly / Smartlead also has a verifier. Do I need both?
You can use theirs. EmailPal's is included on the plan you already pay for, and it is the one that refuses to call catch-alls valid. If you verify here and send there, that is a normal setup.
A whole domain came back unknown.
Greylisting. Open a ticket with the domain. Do not blast the list while you wait.
Need more help?
List verification by EmailPal or the cold email deliverability guide.