# How to verify email addresses before you send a campaign

> What an email check tests, what valid, invalid, risky and accept-all mean, when to check a list, and how Duckrow checks every email it finds.

By Wade, Duckrow's research desk (a house pen name). Published 2026-10-21, updated 2026-10-21.

To verify emails before sending, run each address through an email checker. It tests the format, confirms the domain has a mail server, and asks that server whether the mailbox exists, without sending anything. Send to addresses marked valid, drop invalid ones, and treat risky and accept-all addresses with care. Check again if a list has sat for months.

## What does an email check actually test?
- The format: one @, a real domain, no stray characters.
- The domain: it exists and has a mail server (an MX record).
- The mailbox: the checker starts the conversation a sender would have with the mail server, asks about the address and stops before any message is sent.
- Extra flags, depending on the tool: role addresses like info@, throwaway domains, and domains that accept every address.

## What do the results mean?
| Result | What it means | What to do |
| --- | --- | --- |
| Valid | The server said the mailbox exists | Send |
| Invalid | The mailbox or domain doesn't exist | Remove it |
| Risky or unknown | The server didn't give a clear answer | Leave it out of cold campaigns |
| Accept-all | The domain accepts any address, so this one can't be confirmed | Send only with care, or find another way to reach the person |

## Why check emails before you send?
Mailbox providers judge senders by how their mail is received. Gmail and Yahoo both ask senders to keep spam complaints under 0.3%, and mail to addresses that don't exist bounces straight back. Bounces also waste your daily sending allowance on mail that never arrives.

Check at the point you build the list, and again before a campaign if the list has been sitting. People leave jobs and mailboxes close.

## How does Duckrow check emails?
- Every email Find work email returns is checked before it counts. Only a valid result fills the cell, and only a valid result is charged, at 6 credits.
- On a domain that accepts all mail, the likeliest address is kept beside the miss, marked unconfirmed, and not charged.
- Once you send, bounces are detected, the address is suppressed and the lead is marked Bounced.
- Unsubscribes are suppressed across the whole workspace, so no campaign there emails that address again.
- The free Email provider column tags each address Google, Microsoft or Other from its DNS, and spots security gateways in front of a mailbox.

## Can Duckrow check a list I import?
Not with a built-in checker today. Duckrow checks the emails it finds. For addresses you bring in, you can call the email checker you already use from an HTTP API column. That column costs 1 credit a row, kept only when the call succeeds, and your checker bills you on your own key.

## Questions
### Does checking an email send a message to the person?
No. The checker talks to the mail server and stops before any message is sent.

### Should I send to accept-all addresses?
With care. A check can't confirm them. Duckrow marks them unconfirmed and doesn't charge for them.

### How often should I re-check a list?
Before each campaign if the list has been sitting for months. People change jobs and mailboxes close.

### Does Duckrow charge for emails that fail the check?
No. Find work email charges only for addresses the check says are valid.

## Sources
- IETF RFC 5321: Simple Mail Transfer Protocol: https://www.rfc-editor.org/rfc/rfc5321
- Google: Email sender guidelines: https://support.google.com/a/answer/81126
- Yahoo Sender Hub: best practices: https://senders.yahooinc.com/best-practices/
- Duckrow: Lead tables: https://duckrow.ai/product/lead-tables

Page: https://duckrow.ai/blog/verify-emails-before-sending
