# Keep contact data clean

> Validate addresses on demand or automatically, clear bounced people out of a sequence, and block a list of domains at once, with the rules behind each one.

**Select people on the People page and click Validate emails to check addresses on demand, one credit per contact. A team owner can switch on Automatic Email validation under Settings, Emails; it sweeps active sequences for contacts nobody has written to yet and goes quiet when credits run out. Bounced people are taken out of a sequence from its People tab, which does not delete them, and Settings, Blacklist accepts a one-column CSV of up to 10,000 domains.**

_Status: Reviewed – written against Reply's product documentation on 2026-09-22, not yet confirmed against the running product._

## Goal

A base you can send from without burning a domain: addresses checked before the first
touch, people who already bounced taken out of the sequence that hit them, and a
suppression list your whole team respects. The checking mechanism itself is described in
[Email validation](/behavior/email-validation/).

## Preconditions

Email validation arrives with your plan or as an add-on, and it starts switched off, so
the first run may prompt you to upgrade. Each address checked costs one credit, and your
credit balance depends on your plan. See [Limits](/reference/limits/). Only the team
owner can turn the automatic sweep on. Clearing bounced people needs a sequence that has
already sent something, and blocking domains in bulk needs access to the blacklist
settings.

## Steps

1. **Check addresses on demand.** On the **People** page, tick the contacts you want (or use the select-all control to take the whole filtered set) and click **Validate emails**. Reply confirms that validation has started and works through the batch in the background. You get one run at a time: starting a second while the first is still going returns a message saying a validation is already in progress.
2. **Handle a short balance.** If the feature is off for your team, or the add-on is missing, Reply offers the upgrade instead of running. If you have some credits but not enough for the whole selection, the dialog reports how many are left and lets you go ahead anyway; the contacts at the front of the selection are checked and the rest are left untouched.
3. **Read the outcome.** An address comes back as **Valid**, **Risky**, **Invalid** or **Catch all**; a check that could not complete is recorded as failed, and an address nobody has checked stays empty. Catch-all is the one people miss: the receiving server accepts anything at that domain, so the result says nothing about whether the person exists. The icon next to the Email field on each contact card carries the same verdict.
4. **Switch on the sweep.** Open **Settings**, go to the **Emails** tab, expand **Automatic Email validation**, turn on the **Automatic email validation** switch and click **Save settings**. Anyone who is not the team owner cannot save this change.
5. **Know what the sweep covers.** It is not triggered by adding people to a sequence. Reply repeatedly walks your active, non-archived sequences and, in each one, picks the contacts that have never been validated **and** have never been emailed **and** belong to the person who owns that sequence, oldest additions first, taking as many as the credit balance covers. Contacts a teammate owns sit in the same sequence and are passed over, and anyone who has already received a step is never re-checked.
6. **Expect it to stop quietly.** When the balance reaches zero the sweep is skipped with no notification, no banner and no entry anywhere you would look. Sequences carry on sending; the contacts travel through them without a validation status. If you build a conditional step on that status, treat an empty value as a real case rather than an impossible one.
7. **Clear bounced people out of a sequence.** Open the sequence, go to its **People** tab, and narrow the view to the people carrying the Bounced status; the property is **Status: Bounced** and the builder is described on [Filter contacts](/how-to/filter-contacts/). Select them, click **Remove from sequence** and confirm in the **Remove contacts** dialog.
8. **Understand what that removal did.** It takes the people out of that one sequence and cancels anything still planned for them there. It does not delete anyone: every contact stays on the **People** page with its fields, list memberships and full history, and stays in any other sequence it belongs to. Reply had already finished them in this sequence when it detected the bounce, so removing them is tidying, not a stop; the detection rules are in [Bounce handling](/behavior/bounce-handling/).
9. **Give a bounced person another chance, if the address was fixed.** Select them, open **Change status**, clear the **Bounced** status, and answer the prompt asking whether to re-send the last email. Choose **No** to lift the status alone. Contacts whose progress has already moved past the step that bounced are left as they are.
10. **Block a list of domains in one go.** Open **Settings**, go to **Blacklist**, click the add button and choose **Import from CSV**. The file has to be UTF-8, non-empty, and exactly one column wide with no header: a comma, semicolon, space or tab on the first non-empty line is read as a second column and the upload is refused. At most 10,000 rows are accepted. Lines that are not domains are dropped without any per-row report, so a file of full email addresses silently becomes nothing. Reply confirms the process has started and adds a notification when it finishes.
11. **Add a handful by hand instead.** The same add button offers **Enter manually**, where **Add new domains** takes several domains separated by commas in one go.

## How far a block reaches

The blacklist keeps addresses, domains and LinkedIn URLs as three separate stores, and
Reply also maintains platform-wide entries that no account can override.

Who is covered depends on Team Edition. With it on, an entry made by one member suppresses
sending to matching contacts across the whole team; with it off, it only reaches your own
contacts. That is the single most surprising property of the feature: a colleague can
block a domain you are actively working.

Lifting a block is not symmetrical either. Unblacklisting someone who is blocked because
their **domain** is on the list creates an exception for that one address and leaves the
domain blocked for everybody else at it. Unblacklisting someone blocked by their **own**
address removes that entry outright. An exception made this way does not reach past the
domain rule, so a person also carrying an address-level or a platform-wide block stays
blocked.

The route for blocking a CSV of *people* rather than domains is a different job with a
different cap, and it is written up as a worked example on
[Filter contacts](/how-to/filter-contacts/).

## Expected result

Validated contacts show a verdict against their address within a few minutes, and the
matching credits leave your balance. A sequence you cleared no longer lists the bounced
people in its People tab, while they remain findable on the People page. Uploaded domains
appear in the blacklist table with a count of how many of your contacts each one covers,
and those contacts are marked as blacklisted wherever they appear.

## Verification

Re-open a handful of the contacts you checked and confirm the icon beside their address
matches the verdict in the grid. For the automatic sweep, add a fresh contact to an active
sequence you own, leave it unsent, and look for a verdict later in the day; if nothing
appears, check the credit balance first. For a domain upload, search the blacklist table
for one domain from the file; if the row is missing, the file was rejected or the row was
not recognized as a domain.

## What happens next

Verdicts become something you can act on: a conditional step can branch on the validation
status, and the grid can be narrowed to the addresses worth deleting or re-sourcing.
Suppression is applied when Reply is about to send, not when someone is enrolled, so a
blocked person can sit inside a running sequence and still never be written to; the
enrolment side of that is covered by
[contact enrollment](/behavior/contact-enrollment/), and what a recipient sees when a
block is the reason is on
[Contact was blocked or opted out](/troubleshooting/contact-was-blocked-or-opted-out/).
A base cleaned before launch is also the cheapest deliverability work there is; the rest
is in [Email deliverability](/learn/email-deliverability/).

## Common mistakes

- Treating the removal of bounced people as a deletion, then looking for them on the People page and reporting them lost. They are still there, with everything they had.
- Waiting for a warning that the automatic sweep has stopped. There is none; the credit balance is the only thing that tells you, so check it before you trust a validation-based condition.
- Expecting the sweep to work through a base you have already emailed, or to cover a shared sequence end to end. It only ever looks at people nobody has written to yet, and only at the ones the sequence owner owns.
- Uploading a spreadsheet export with a header row or a second column. Either one stops the whole file, and the page reports a general failure rather than naming the reason.
- Reading **Catch all** as a safe result. It means the domain accepts everything, which is a different risk from a Valid address and worth separating before a first send.

## Related

- [Email validation](/behavior/email-validation/) · [Bounce handling](/behavior/bounce-handling/)
- [Contact was blocked or opted out](/troubleshooting/contact-was-blocked-or-opted-out/)
- [Manage contact lists](/how-to/manage-contact-lists/)
- [Deliverability](/capabilities/deliverability/) · [Why emails go to spam](/troubleshooting/emails-going-to-spam/)

## Build with Reply

- REST API: [docs.reply.io](https://docs.reply.io/api-reference/introduction) – estimate a validation run before scheduling it, and manage blacklist entries in batches
- MCP: [agents.reply.io/mcp](https://agents.reply.io/mcp) – agents check a segment and act on the verdicts
