Email verification
Every address that enters a contacts list is checked before you can mail it. An invalid address is never sent to, and a list with too many bad addresses has to be cleaned or explicitly approved before a campaign goes out. The check is free and runs on every plan.
What the check looks at
MailInApp checks each address's format and its domain. It never connects to the recipient's mail server, so nobody is pinged and nothing shows up in their inbox. Each address gets one of five statuses:
| Status | Meaning |
|---|---|
| Valid | The format is fine and the domain accepts mail. |
| Risky | It will probably deliver, but something is off: a disposable (throwaway) address, a role inbox such as info@ or sales@, a domain that accepts every address, or a domain that looks like a typo (gmial.com). |
| Invalid | It can't receive mail: a malformed address, a domain with no mail server, a mailbox known not to exist, or an address on your suppression list. |
| Couldn't check | The domain didn't answer in time. Nothing is assumed, and the address can be checked again later. |
| Not checked | The address was added before verification existed, or hasn't been checked yet. |
Hover a status pill in the contact grid to see the reasons behind it.
When addresses are checked
- On import. After you pick a CSV and answer the consent question, the import shows how many addresses are valid, risky, invalid and unchecked. Choose Remove invalid (recommended), Keep all, or Remove invalid and risky. If you keep invalid addresses, they stay flagged and are still never sent to.
- On every other way in. Signup forms, the contacts API, CRM and store syncs, journeys and AI connectors all check addresses on the server as they save them. A signup form turns away invalid and disposable addresses with a friendly message, but accepts role inboxes, since that person asked to subscribe.
- When a message bounces. A hard bounce marks the address invalid on every one of your lists that holds it. A later domain check never clears a bounce.
Re-check a list
Domains stop accepting mail over time, so an old list drifts. Open the list under Contacts. The Email verification panel above the grid shows a quality bar for the whole list.
- Click Verify list. Large lists are checked in the background, and the panel shows progress.
- When it finishes, use the filter chips (All, Valid, Risky, Invalid…) to review what was found.
- Click Remove N invalid addresses to delete them from the list in one go. This can't be undone.
Mailbox checks with your own provider
The free check can't tell whether a specific mailbox exists, or whether a domain accepts every address. If you have a ZeroBounce or NeverBounce account, connect it under Settings → Integrations → Data providers. Verify list then asks you to pick a check type: Domain check (free), or Mailbox check with your provider.
A mailbox check runs the free domain check first. Only addresses that aren't already invalid are sent to the provider, so you spend one of your own credits per remaining address. If the provider refuses your key, runs out of credits or can't be reached partway through, the rest of the list gets the domain check only, and the panel tells you why.
At send time
- Invalid addresses are skipped, in manual sends, recurring schedules, journeys and AI-connector sends. They show as skipped (invalid address) in the send result and don't count toward your monthly sends.
- The list-quality gate. If more than 5% of the selected recipients are invalid or couldn't be checked, a manual send stops with This list needs cleaning before you send. Click Verify this list, or tick the acknowledgement and Send anyway. The override is recorded in your account's audit log. Addresses that were never checked don't count toward the 5%.
- Schedules and journeys don't stop. They skip invalid rows and send you a push alert, at most once per list per day, so you can clean the list.
- The Send API answers
{"status": "suppressed", "reason": "invalid-address"}for an address whose domain can't receive mail, for transactional and marketing sends alike. See the API reference.
Segment on it
Audience filters, saved segments and journey branches can use Email verification → Verification status is or is not a status. "Verification status is valid" is a quick way to send a sensitive campaign only to addresses you're sure of. See behavioral segments.
Privacy
Verification results are stored on the contact, so they're included when you export your account data and deleted with the contact. Domain results (whether a domain accepts mail) are cached without any personal data. Mailbox checks send addresses to the provider you chose, under your own agreement with them.