Email Validation
Invalid, disposable, and risky email addresses are one of the biggest hidden drains on deliverability. Every bounce chips away at your sender reputation, and spam-trap hits can put you on blocklists for weeks.
Score CRM's email validation feature lets you check addresses against a third-party verification service before you send — so bad emails never leave your outbox.
How It Works
You connect a verification provider once, then run validation on any list or segment. Each contact gets a validation status that's used automatically when you launch a campaign — contacts in excluded categories are skipped, no manual list cleaning needed.
Setting Up a Verification Connection
Before you can validate anything, you need to connect a verification provider. Score CRM supports three:
| Provider | Best for |
|---|---|
| ZeroBounce | Best-in-class accuracy, good batch pricing |
| NeverBounce | Strong bulk workflow, job-based API |
| Kickbox | Simple pay-as-you-go, includes Sendex quality score |
You'll need an API key from whichever provider you choose — sign up with them, grab the key from their dashboard, and bring it back to Score CRM.
Adding a Connection
- Go to Email Validation in the sidebar
- Click Add Verification Connection
- Give it a recognizable name (e.g. "ZeroBounce — Production")
- Pick the provider
- Paste your API key
- Click Save
Score CRM encrypts the API key at rest — even team members with settings access can't read it back.
Testing the Connection
After saving, click Test Connection on the row. Score CRM calls the provider's credit-check endpoint and shows:
- Whether the credentials work
- How many validation credits you have remaining (where the provider exposes this)
If the test fails, the error is saved on the connection so you can see what the provider reported — usually an invalid key or a disabled account.
Validation Statuses
Every validated contact ends up in one of these buckets:
| Status | What it means | Safe to send? |
|---|---|---|
| Valid | Mailbox exists and accepts mail | Yes |
| Invalid | Mailbox doesn't exist, will hard bounce | No — always excluded |
| Risky | Deliverable but problematic (full inbox, temporary issue) | Use the policy to decide |
| Catch-All | Domain accepts everything — mailbox existence unknown | Use the policy to decide |
| Role Account | Shared addresses like info@, support@ — low engagement | Use the policy to decide |
| Disposable | Throwaway address (mailinator, guerrillamail, etc.) | No — always excluded |
| Unknown | Provider couldn't determine status | Use the policy to decide |
| Unvalidated | Hasn't been checked yet | No status yet — no filter applied |
Invalid and disposable addresses are always excluded from sends — there's no legitimate case for delivering to them. For the grey-area categories (risky, catch-all, role, unknown), you decide via your organization's send policy.
Running Validation on a List
- Go to Customers → Lists and open the list you want to validate
- Click Validate List
- Pick which verification connection to use (if you have more than one)
- Confirm — Score CRM queues a background job
Validation runs asynchronously because lists can be large. You can close the page and come back later — the job keeps running.
Before validating a huge list, run a small segment first (say, 500 contacts) to sanity-check that your provider returns results you'd expect. This uses a handful of credits and saves you from burning through thousands if the integration has an issue.
Running Validation on a Segment
Segments work the same way — open any segment and click Validate Segment. This is useful when you only want to validate a subset of a large list (for example, just contacts who haven't engaged in 6 months).
Monitoring Validation Jobs
Go to Email Validation → Jobs to see everything that's been validated.
Each job shows:
- Source — which list or segment it ran on
- Status — queued, running, completed, failed, or cancelled
- Progress — X of Y processed, with an estimated time remaining
- Started / completed — timestamps
Click any job to open the detail view, which shows the full breakdown by validation status and by reason code from the provider (e.g. mailbox_not_found, catch_all, disposable_domain). This is the best place to understand why your results look the way they do.
Cancelling a Running Job
If you started a job by mistake or want to stop it early, open the job and click Cancel. Contacts already processed keep their new status — the job just stops picking up new ones.
Send Policy — What Gets Excluded From Campaigns
Under Settings → Validation Policy, you control which categories are automatically excluded when you launch a campaign:
| Setting | Default | When to enable |
|---|---|---|
| Exclude Risky | On | Leave on unless you have a very specific reason |
| Exclude Catch-All | Off | Enable if your deliverability is struggling — catch-alls can hide invalid mailboxes |
| Exclude Role Accounts | Off | Enable for consumer-focused campaigns where role addresses won't engage |
| Exclude Unknown | Off | Enable if you'd rather skip than risk — conservative choice |
Invalid and disposable are always excluded and can't be turned off.
The policy applies at send time, so tightening it doesn't require re-validating your lists — it just changes who gets skipped on the next campaign.
Pre-Send Summary in the Campaign Builder
When you launch a campaign, Step 2 of the wizard shows a validation summary for your audience:
- How many recipients are validated vs. unvalidated
- Breakdown by status (valid, risky, catch-all, etc.)
- How many will be filtered out by your send policy
If a large share of your audience is unvalidated or flagged as risky/invalid, you'll see a warning — but it's non-blocking. You can still proceed, or hop over and validate the list first.
Best Practices
- Validate new uploads, not everything — validation costs money per email. Once a contact is validated, the status sticks; you don't need to re-run it.
- Re-validate stale contacts periodically — mailboxes get abandoned. A light quarterly re-validation of long-dormant contacts catches addresses that have gone bad.
- Start with Exclude Risky ON, everything else OFF — this is the best balance of reach and protection. Only tighten further if you're seeing deliverability problems.
- Monitor your job history — a sudden spike in invalid/disposable results in a new upload usually means someone uploaded a purchased list or a scraped CSV. That's a red flag worth investigating before you send to it.
- Don't validate right before a send — bulk validation can take minutes to hours on large lists. Validate well ahead of your send window.
Troubleshooting
| Problem | What to check |
|---|---|
| "Connection test failed" | API key is correct, provider account is active, provider hasn't hit a quota |
| Validation job stuck in "running" | Check the job detail — the provider may be rate-limiting. Usually resolves on its own |
| All results come back "Unknown" | Your provider's credits may be exhausted. Test the connection to confirm |
| Recipient count dropped sharply after validation | Your send policy is working as designed — check the campaign preview to see the breakdown |
| Can't see the "Validate List" button | You need the verification:create permission. Ask an admin to update your role |
Related
- Importing Contacts — your first chance to keep bad emails out
- Suppression & Compliance — what happens to bounced and complaint-marked addresses
- Email Deliverability — the broader picture of protecting your sender reputation