Skip to content
NewSee how

Email verification

Email verification that cleans every list before it sends.

One dead address costs you a bounce. A list full of them costs you the domain. FirstSales checks each contact as it comes in, flags the risky ones, suspends the bad ones and keeps them out of every campaign, so your mailboxes only email people who can receive it.

$1 for 3 days · Cancel anytime · No contract

The Contacts table in the FirstSales sample workspace, with a status for every contact (Active, Risky or Auto Suspended), filters for status and cleaning, and Re-test all and Export CSV buttons
  • 01

    Five checks on every new contact

  • 02

    Bad addresses skipped on every send

  • 03

    Credits back when an address cannot be verified

  • 04

    Included in every plan, from $29/mo

The problem

Bounces are quiet until they are not.

A bounced email feels like nothing. One fewer prospect. But mailbox providers count every one, and enough of them turns a healthy sender into a filtered one.

Lists go stale on their own

People change jobs, companies change domains and inboxes get shut down. A list that was good last quarter is quietly full of addresses that no longer exist.

Bounces hit the whole domain

Providers do not judge one email. They judge the sender. A run of bounces drags down every mailbox on that domain, including the ones sending to good addresses.

Checking by hand never happens

Nobody has time to look up mail servers or spot typos in thousands of rows. So the list goes out as it is, and the bounce report arrives after the damage is done.

How it works

Turn it on once, and every import is checked.

Contact cleaning is a single setting. After that, it runs on every list you bring in, before any campaign can touch it.

  1. 01

    Turn on contact cleaning

    Go to Settings, then Tools, and switch on Contact cleaning. Workspace owners and admins can change it. Do it before your first import.

  2. 02

    Import or build your list

    Upload a CSV, add contacts by hand or let FirstSales find leads for you. Each new contact runs through five checks as it lands.

  3. 03

    Send to the good ones

    Clean contacts go into your campaigns. Dirty ones are suspended and skipped. Risky ones wait for you to decide.

Five checks, one address

What a bad address looks like up close.

Most bad addresses look fine at a glance. Each check reads a different part of the address, and together they catch the ones that would bounce or hurt you.

A sample address with two problems

info@gmial.com

Name partinfoDomaingmial.com

Suggested fix: gmail.com

  1. 01

    Address formatWhole address

    Is it written like a real email address?

    Missing @, stray spaces, broken characters and other syntax errors.

  2. 02

    Mail serverDomain

    Can this domain receive email at all?

    Domains with no mail server (no MX record) and mailboxes that cannot be reached.

  3. 03

    Disposable addressDomain

    Is this a throwaway inbox?

    Temporary inboxes that expire shortly after someone creates them.

  4. 04

    Typo correctionDomain

    Is the domain a common misspelling?

    Slips like gmial.com or outloook.com, with the likely fix.

  5. 05

    Role addressName part

    Is this a shared inbox, not a person?

    Addresses like info@, support@ or noreply@ that no single person reads.

Re-testing a list adds a sixth flag: catch-all domains, which accept any address and so can never be fully confirmed.

What you get

A list you can trust, without checking it yourself.

Every part of list hygiene a careful sender would do by hand, done for every contact.

  • Checked on the way in

    With cleaning on, contacts are verified when they are imported, so a bad address is caught before a campaign can ever reach it.

  • Five checks per address

    Format, mail server, disposable inboxes, typos and role addresses. Each one looks at a different reason an email would fail.

  • Bad contacts sit out

    Dirty contacts are auto-suspended and skipped on every send. No suppression list to build, export or keep up to date.

  • Grey areas stay visible

    Catch-all domains and shared inboxes are marked Risky, not thrown away, so you can decide who is worth the send.

  • You only pay for answers

    Credits come back for any address that cannot be verified, and recently cleaned contacts are skipped on a re-test.

  • Protects the rest of your setup

    Fewer bounces keep the health grade on each mailbox steady, which protects the warm-up you spent 21 days building.

From raw listto safe send list

Four parts of contact cleaning, and where each one shows up in the app.

  1. Import

    Bring a list in, and it is checked as it lands

    Pick a contact list, drop in a CSV and import. With cleaning on, each new contact is verified automatically, and duplicates inside your workspace are removed so nobody gets the same email twice.

    • CSV upload. Import into any contact list, with a sample file to copy the format.
    • De-duplicated. The same email inside your workspace is kept once.
    • Checked automatically. No extra step after import when cleaning is on.
  2. The checks

    Five ways an address can fail, checked every time

    Each check looks at a different weak spot. Together they catch the addresses that would bounce, expire or land in an inbox no one reads.

    1. 01

      Address format

      Valid syntax, with no broken characters.

    2. 02

      Mail server verification

      The domain has DNS and mail exchange records.

    3. 03

      Disposable addresses

      Throwaway inboxes that expire soon after creation.

    4. 04

      Typo correction

      Common misspellings like gmial.com caught and fixed.

    5. 05

      Role addresses

      Shared inboxes like info@ marked for review.

  3. The results

    One status per contact, and sending follows it

    Every contact shows its result in the Contacts table. Filter by status or cleaning to see what needs a look, and let your campaigns handle the rest.

    • Clean. Safe to send. Goes out as normal.
    • Risky. Catch-all or role address. Review before sending.
    • Dirty. Auto-suspended and skipped on every send.
    • Unknown. No definite answer. Credits returned.
  4. Re-test

    Clean an old list again before you use it

    Imported before cleaning was on, or working from an older list? Select contacts, or use Re-test all on a filtered view. The drawer lists every check and shows the exact cost before you confirm.

    • Cost shown first. Exact credits, your balance and your balance after.
    • Catch-all flagged. Domains that accept everything are marked on re-test.
    • Fresh results skipped. Contacts cleaned in the last 24 hours are not charged again.
Four results

Every contact gets one result, and sending follows it.

You never build a suppression list by hand. Each result already tells your campaigns what to do with that contact.

  • Clean

    The address passed the checks and looks safe to email.

    On send
    Included in your campaigns as normal.
    Credits
    Charged once for the check.
  • Risky

    Deliverable but low confidence, often a catch-all domain or a role address.

    On send
    Your call. Review these before you decide to send.
    Credits
    Charged once for the check.
  • Dirty

    Bad syntax, no mail server, a disposable inbox, a likely typo or a mailbox that does not exist.

    On send
    Auto-suspended and skipped on every send.
    Credits
    Charged once for the check.
  • Unknown

    The check could not reach a definite answer for this address.

    On send
    Kept apart so you can decide later.
    Credits
    Credits returned. You only pay for checks that finish.
Plain-English guide

Email verification, explained without jargon.

What verification does, what it cannot do and how to use it well. General truths, no magic numbers.

  1. 01

    What email verification is

    Email verification checks whether an address can receive email before you send to it. It looks at how the address is written, whether its domain has a mail server, whether the inbox is a throwaway and whether it belongs to a person or a shared team inbox. The point is simple: find the addresses that would bounce or waste a send, and leave them out.

  2. 02

    Why bounces matter more than they look

    Mailbox providers watch how often your email bounces. A sender who keeps emailing addresses that do not exist looks careless at best and like a spammer at worst. A rising bounce rate is one of the clearest signals that pushes a sender toward the spam folder, and it hurts every mailbox on the same domain.

  3. 03

    Why lists decay

    Email addresses do not last forever. People leave jobs, companies rebrand and move domains, and old inboxes get closed. That means even a list you built carefully gets worse every month you leave it alone. Any list that is more than a little old, exported from somewhere else or bought should be cleaned again before a campaign touches it.

  4. 04

    What catch-all domains are

    Some domains are set up to accept email for any address, real or not. Verification cannot tell whether a specific person exists there, because the server says yes to everything. That is why FirstSales flags catch-all domains as Risky rather than Clean. They may be fine. Treat them as lower confidence, and send to them only when the person is worth it.

  5. 05

    Why role addresses are a risk

    Addresses like info@, support@ and sales@ go to a shared inbox, not one person. A cold email there is easy to ignore, easy to mark as spam and rarely reaches the person you wanted. They are not always wrong to email, which is why they are marked Risky. But a named person is almost always the better choice.

  6. 06

    Why verify before, not after

    A bounce report tells you which addresses were bad after your reputation has already paid for them. Verifying on import turns that around: the bad address is caught before any campaign can send to it. This is why the best time to turn on contact cleaning is before your first import, not after your first bad week.

  7. 07

    What verification cannot do

    Verification tells you an address can receive email. It cannot tell you the person wants to hear from you. A clean list of the wrong people still gets ignored or reported. Use cleaning together with a clear idea of who you want to reach, short personal emails and a warmed-up mailbox. That combination is what keeps a sender healthy.

What you pay for

Fair rules, written down before you confirm.

Contact cleaning uses credits. Before any re-test starts, a drawer shows the exact cost, your balance and your balance after. These are the rules behind that number.

Contact cleaning, the house rules

  • New contacts only

    Automatic cleaning checks contacts as they are imported. Contacts you already had are not charged again.

  • No answer, no charge

    If an address cannot be verified, the credits come back. You pay only for checks that reach a result.

  • No double charge

    Contacts cleaned in the last 24 hours are skipped on a re-test, so running it twice in a row costs nothing extra.

  • No duplicate sends

    Bulk import removes duplicate emails inside your workspace and keeps the first one, so nobody is emailed twice from one list.

  • You have the last word

    Sure a flagged contact is real? Mark it valid and it goes back into your sends.

Cleaning costs show in your billing history as Contact Cleaning, with refunds listed on their own.

Before you send

A list-hygiene checklist

Run through it before a new list goes into a campaign, and again before you reuse an old one.

  • Contact cleaning is on in Settings, then Tools
  • It was turned on before the import, or the list has been re-tested
  • Old, exported or bought lists have been re-tested
  • Dirty contacts are left suspended
  • Risky contacts have been reviewed by a person
  • Role addresses are swapped for named people where you can
  • Catch-all contacts are treated as lower confidence
  • Mark valid is used only when you know the address is real
  • Your mailbox is warmed up and SPF, DKIM and DMARC pass
  • Your first campaign on a new list starts at a steady pace
“I've been using FirstSales.io for several months now, and I can confidently say it has revolutionized how I approach lead generation and customer acquisition.”
Paweł StelmachSmall business owner · Trustpilot
Before and after

Sending to a list, unchecked and cleaned

The same list, a very different week.

Unchecked list

Straight from the spreadsheet.

  • Dead addresses go outAnd come back as bounces the same day.
  • Typos stay typosgmial.com never reaches anyone.
  • Throwaway inboxes countSends wasted on addresses that already expired.
  • Shared inboxes get cold emailinfo@ and support@ rarely reply.
  • Duplicates get two emailsThe same person, emailed twice from one list.
  • You find out lateThe bounce report arrives after the damage.
With contact cleaning

Checked as it was imported.

  • Dead addresses sit outDirty contacts are suspended and skipped.
  • Typos are caughtCommon misspellings flagged with a fix.
  • Throwaways are flaggedDisposable inboxes never get a send.
  • Shared inboxes are markedRole addresses show as Risky for review.
  • One email per personDuplicates removed on import.
  • You find out firstProblems show up before a campaign runs.
Why teams switch

Email verification: FirstSales vs a typical tool

Many teams clean lists in one tool, export, then upload to another. FirstSales checks contacts where they already live.

Email verification in FirstSales and in a typical cold email tool
What you getTypical toolFirstSales
Checks on importVariesAutomatic, one setting
Checks per addressVariesFive, plus catch-all on re-test
Bad contacts on sendVariesAuto-suspended and skipped
Unverifiable addressesVariesCredits returned
Re-test twice in a dayVariesRecent results skipped, no charge
Duplicates on importVariesRemoved, first one kept
Override a resultVariesMark valid, any time
PriceVariesFrom $29/mo, cleaning built in
Start your $1 trial

Questions,answered plainly.

Can’t find yours? Write to us.

01What is email verification?

It checks whether an address can receive email before you send to it. FirstSales runs five checks on each new contact: address format, mail server, disposable inboxes, typos and role addresses. Bad addresses are kept out of your campaigns.

02Where do I turn it on?

Go to Settings, then Tools, and switch on Contact cleaning. Workspace owners and admins can change it. Once it is on, every contact you import is checked automatically.

03What do Clean, Risky, Dirty and Unknown mean?

Clean is safe to send. Risky can receive email but is low confidence, usually a catch-all domain or a role address. Dirty is auto-suspended and skipped on sends. Unknown means the check could not reach an answer, and the credits come back.

04Does email verification cost extra?

Contact cleaning is part of every plan, from $29/mo, and uses a small number of credits per new contact. Credits are returned for any address that cannot be verified. A re-test shows the exact cost before you confirm.

05Can I clean contacts I imported before turning it on?

Yes. Select them in the Contacts table, or use Re-test all on a filtered view. The drawer shows the checks and the exact credit cost before anything runs.

06Will I be charged twice if I re-test the same list?

No. Contacts cleaned in the last 24 hours are skipped on a re-test, and you only pay for checks that reach a result.

07A good address was marked Dirty. What can I do?

Common reasons are a domain with no mail server, a disposable inbox, a likely typo or a mailbox that does not exist. If you know the address is real, mark it valid and it goes back into your sends.

08Does verification mean my emails will reach the inbox?

No, and nobody can honestly promise that. Verification keeps bounces down. Warm-up, working SPF, DKIM and DMARC and short, personal emails do the rest. FirstSales handles each of them and shows you the numbers.

Outreach that keeps going after you log off.Leads, emails, follow-ups and replies, handled.

Connect unlimited mailboxes and let AI agents find leads, write each email and follow up. Or send your own templates in manual mode. From $29/mo.

$1 for 3 days · Cancel anytime · No contract

Install with AI

Your coding agent sets up the FirstSales CLI and skills for you.

Prompt for Claude Code

I'm setting up FirstSales (https://firstsales.io), an AI outbound sales platform: campaigns, contacts, a reply inbox, deliverability and lead signals. Help me get my workspace sending real, good emails end to end, from Claude Code.

Read these first so you know how FirstSales works:
- Developer docs and API: https://developer.firstsales.io
- CLI: https://www.npmjs.com/package/@firstsales.io/cli
- Skills for coding agents: https://github.com/firstsalesio/firstsales-skills (read README.md and GUIDE.md)

Setup
1. Install the CLI: npm install -g @firstsales.io/cli
2. Install the FirstSales skills:
   claude plugin marketplace add firstsalesio/firstsales-skills
   claude plugin install firstsales@firstsales
3. Ask me if I already have a FirstSales account. If not, send me to https://app.firstsales.io to sign up.
4. Ask me to create an API key under Settings → API → API Keys, with only the scopes we need.
   Never ask me to paste the key into this chat. Tell me to run this in my own terminal, so the key stays hidden:
   read -rs FS_KEY && firstsales auth login --api-key "$FS_KEY"; unset FS_KEY
5. Run `firstsales whoami` and tell me which workspace and organisation we are connected to.

Then ask me about my business: what I sell, who I sell to (roles, company size, countries), my best customers, and what I use today for outbound (tools, lists, mailboxes). Walk me through:
1. Teaching FirstSales my business: website, offer, proof points and case studies in the knowledge base, so the AI writes like someone who knows the product.
2. Connecting my sending mailboxes and checking my sending domain: SPF, DKIM, DMARC and warm-up. If anything is unhealthy, tell me the exact DNS record to add.
3. Bringing in contacts: import my CSV or CRM export into a clean list, remove duplicates and bad emails, and block domains I must never email (customers, competitors, my own).
4. Building my first campaign: the right list, senders, steps and timing. Write the sequence with me, show me the drafts, and do not launch until I say yes.
5. Setting up Signals if it fits: find people engaging with LinkedIn posts about topics my buyers care about, and turn them into leads.
6. Inviting my team and giving each person the right access.

Once campaigns run, show me how to work the reply inbox from here: which replies need an answer, draft responses in my voice, and move good conversations into deals. If I use Cal.com, connect it so follow-ups can offer my booking link (not the first email).

Throughout, as you learn about my business, proactively suggest and help create:
- Reply templates for the questions and objections my prospects are likely to raise, based on my product, site and codebase if you can see them.
- Campaign ideas and segments worth testing, with the reason for each.

Safety rules:
- Show every change as a dry run (--dry-run) first and wait for my yes. Never send emails, launch campaigns or delete anything without my yes.
- Tell me before anything that spends credits, and how many.

Be opinionated. If the docs give a sensible default, just use it. Don't make me choose between five options.