1. Home
  2. Use cases
  3. Data teams

Use case · SimpleVerifier Team

Deduplicating and validating emails for data teams

Normalise first (trim, lowercase, split multi-value cells), remove duplicates on the normalised value, then verify each unique address once and store the status and reason next to the record. Duplicates and addresses we cannot check are free on the email plans, so deduplicating first only saves you time, not money.

Email columns arrive from CRMs, exports and merged vendor files with stray whitespace, mixed case and the same person twice. Validation on a dirty column wastes effort and returns confusing counts.

A repeatable order of operations makes the output trustworthy enough to join back to the source table.

What goes wrong in email data

Duplicates hide behind formatting

JANE@Company.com and jane@company.com are the same inbox. Gmail also treats dots and +tags as the same inbox. Dedupe on a normalised key but keep the original value.

Multi-value cells

Some exports put several addresses in one cell, separated by semicolons or commas. Split them before validating or only the first is checked.

Status without a reason

A bare valid or invalid flag is hard to act on. The reason (mailbox not found, accepts all addresses, disposable) decides the next step, so store both.

Stale results

A result describes the day it ran. Confirmed results are reused for 14 days; after that the mailbox is checked again. Store the check date.

Dedupe and validate in order

  1. Normalise

    Trim whitespace, lowercase, split multi-value cells and drop empty strings. The email list cleaner does this in the browser for files; in code, the same few lines in your pipeline do it.

  2. Deduplicate

    Use the duplicate remover or a group-by on the normalised key. Keep the record with the most complete fields and note the merged IDs.

  3. Validate in bulk or by API

    For files, upload a CSV (up to 100,000 rows). For pipelines, call the API from your job runner; see bulk-verifying a CSV with the API and the Python guide.

  4. Join results back

    Join on the email key and store status, reason and check date. Treat risky as its own category rather than collapsing it into valid or invalid.

  5. Schedule re-checks

    Re-validate on a cadence that matches how fast your contacts change, and before any large send.

Mapping results to a status column

ResultWhat to doWhy
validdeliverableMailbox confirmed by the server.
risky · Accepts all addressesunconfirmed (catch-all)Never mark it valid.
risky · Role-based addressunconfirmed (role)Shared inbox.
risky · Server would not confirmretryTemporary.
invalidundeliverableMailbox not found, no mail server, bad format or disposable.

Keep unconfirmed addresses as their own state so downstream users can decide.

Common questions

Do I pay for duplicate addresses?
No. On the email plans, duplicates and addresses we cannot check are free; each unique address counts once.
Should I dedupe before or after validation?
Before. Deduplicate on the normalised address, validate once, then join the result back to every record that shares it.
Can I run validation from a pipeline?
Yes, through the API on Pro and above, or by uploading CSV files on any plan.
How do I treat catch-all results?
As unconfirmed, not valid. The server accepted any recipient, so the specific mailbox could not be checked.

Run a file through it

Pro is $29.99 a month and never cuts you off: the first 100,000 emails a month run at full speed, then big lists run slower. CSV uploads, the API (10,000 calls a month, then $1.50 per 1,000), the Google Sheets add-on and the email finder are all included. Cancel any time.

The first 100 checks are free with a Google sign-in and no card, once per account.

Clean your next list before it bounces

100 free email checks when you sign in with Google, no card. Then monthly plans from $9, or one flat price with fair use, never cut off.

100 free checks, no card Cancel anytime Secure payment by Stripe