Skip to content
NewSee how

How to Clean & Verify Your Contact List in FirstSales

Verify addresses before you send. Turn on contact cleaning, understand the five checks and the per-contact cost, and re-clean older lists.

  1. Why a clean list matters

    Dead and invalid addresses cause bounces, and bounces wreck sender reputation and inbox placement. Cleaning your list (verifying addresses before you send) is one of the highest-leverage things you can do for deliverability. FirstSales calls this Contact cleaning.

  2. Turn on automatic cleaning

    Go to Settings → Tools and enable Contact cleaning: "Checks email addresses on import so campaigns skip dead ones, reducing your bounce rate and protecting sender reputation." With it on, every contact you import is verified automatically before any campaign can email it.

    This is the set-and-forget option: turn it on once and new imports stay clean.

    Turn on automatic cleaning
  3. Understand what it checks

    Cleaning runs five checks per address:

    • Address format (valid syntax.
    • Mail server verification) the domain's MX record exists and the mailbox is reachable.
    • Disposable addresses: throwaway inboxes.
    • Typo correction: fixes obvious misspellings.
    • Role addresses: flags shared inboxes like info@ or sales@.

    Re-cleaning also flags catch-all domains, which accept anything and can't be fully verified.

  4. Know the cost

    Cleaning costs 0.2 credits per new contact: it isn't free, but it's cheap insurance against bounces. Importantly, credits are refunded for any contact it can't verify, so you only pay for a definitive result. In your billing consumption history these show as "Contact Cleaning" (and refunds separately).

  5. Re-clean a list you already imported

    Turned cleaning on after importing, or working with an older/bought list? Select the contacts in the Contacts table and click Re-test. The confirmation dialog previews the checks and shows the credit cost for your selection before you confirm. Always re-clean an aging or purchased list before a campaign touches it.

  6. How results are used

    Each contact gets a verification status. Addresses marked dirty are excluded from sends automatically: no manual suppression list needed. If you're sure a flagged contact is valid, Mark valid to override and include them.

    Cleaning also de-duplicates on import (by email), so the same person isn't emailed twice from one list.

Pro tips

  • Cleaning pays for itself in reputation

    At 0.2 credits per contact (refunded when it can't verify) cleaning is far cheaper than the deliverability hit a spike of bounces causes. Leave it on.

  • Always re-clean bought or aged lists

    Any list you didn't just import cleanly (purchased, exported, months old) should go through Re-clean first. Email decays; yesterday's valid address bounces today.

  • Trust the dirty flag

    Dirty contacts are auto-excluded so you never build a suppression list by hand. Only Mark valid when you have real reason to believe the address is good.

  • Catch-all domains are a gray area

    Catch-all domains accept any address, so verification can't fully confirm them. Treat catch-all contacts as lower-confidence even when they pass.

Frequently asked questions

Where do I turn on list cleaning?

Settings → Tools, toggle Contact cleaning. Once on, every imported contact is verified automatically before campaigns can send to it.

Is list cleaning free?

No: it costs 0.2 credits per new contact. Credits are refunded for any contact it cannot verify, so you only pay for addresses it can definitively confirm.

What checks does it run?

Address format, mail-server (MX) verification and mailbox reachability, disposable-address detection, typo correction, and role-address flagging. Re-cleaning additionally flags catch-all domains.

Can I clean contacts imported before I enabled it?

Yes. Select them in the Contacts table and click Re-test. The confirmation dialog shows the checks and the credit cost for your selection before you confirm.

What happens to bad addresses?

They're marked dirty and excluded from sends automatically: no manual suppression list. You can Mark valid to override if you're certain an address is good.

Does cleaning remove duplicates?

Yes. On bulk import it de-duplicates by email within your workspace, keeping the first occurrence, so the same contact isn't emailed twice from one list.

How does cleaning improve deliverability?

By keeping bounces low. Campaigns skip verified-bad addresses, so your bounce rate stays under the thresholds that trigger Sender Health warnings: which protects inbox placement for every future send.

List Management

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.