Data Quality

Email Verification: A Workflow for Cleaner B2B Outreach

The Enrichments TeamAugust 10, 202610 min read
Abstract editorial illustration for “Email Verification: A Workflow for Cleaner B2B Outreach” — Enrichments

Email verification is a workflow for deciding how a work address can move through your GTM systems. It starts with a deliverability check, but it only becomes useful when you preserve the result, apply a policy, and recheck records when their state changes.

What Email Verification Checks—and What It Does Not

Email verification probes a work address and returns an email deliverability status for that address.

That distinction matters. Finding an address and checking it are related steps, but they answer different questions. Address discovery gives you a candidate work email. Verification gives you a status you can use to decide whether that candidate belongs in an approved outreach path, a review queue, or a suppression state.

A discovered email without an email verification status is incomplete operational data. Your CRM may contain an address, but the team still needs a rule for what it can do with that address. If your workflow treats every discovered address as ready for enrollment, it erases the difference between an address that was returned with a strong status and one that needs a different treatment.

Work email verification does not decide whether a person is the right buyer. It does not confirm that their title, department, or seniority fits your campaign. It does not establish consent. It does not determine whether outreach is permitted under the rules that apply to your business. It also does not predict whether a recipient will reply.

Those decisions need their own inputs:

  • Your ICP and account-selection rules determine whether the person belongs in a campaign.
  • Your compliance process determines whether you may contact them.
  • Your messaging and timing determine what happens after a message is delivered.
  • Email verification determines how the address should be handled as an address.

Keeping those decisions separate prevents a common data-quality mistake: using a verified email as a proxy for audience fit or outreach permission.

Understand the Email Verification Statuses Before You Route Records

The email verification statuses should drive explicit routing rules, with no hidden conversion into a generic “valid” field.

The available statuses are:

  • verified
  • probable
  • unverified
  • risky
  • undeliverable
  • unknown

Each status is useful because it preserves information about what the verification workflow returned. Do not collapse them into a binary field before your sales, marketing, and operations teams have agreed on what each outcome means in practice.

A practical interpretation is to treat verified as the status that can enter an approved outreach path when the rest of your policy permits it. Treat probable, unverified, risky, and unknown as distinct states that require a deliberate rule. Treat undeliverable as a suppression outcome for the current address.

The status names do not tell you everything about the person or account. A verified email does not make the record an approved contact by itself. A risky email does not mean the person is irrelevant. An unknown result is not the same as an undeliverable email. Your workflow should retain those differences.

This is especially important for risky email and unknown outcomes. Automatic inclusion may be appropriate only if your organization has deliberately approved that treatment and can trace why it happened. Many teams instead send these records to a review queue, hold them out of automated sequences, or require a later recheck before activation.

A status-based model also gives operators a place to improve the process. If a specific import source produces many unknown or not_found outcomes, you can examine that source without changing the rule for records from everywhere else.

Design a Status-Based Policy for Outreach and CRM Updates

A status policy should state what happens to a record, who owns that decision, and which fields preserve the evidence.

Start with a simple routing model. The exact policy is yours, but it should be written down and applied consistently.

Email verification statusExample policy outcome
verifiedEligible for approved outreach when account, audience, and compliance rules also pass
probableHold for a defined review or recheck policy
unverifiedHold out of automatic enrollment pending review
riskyRoute to a deliberately chosen review or suppression policy
undeliverableSuppress the current address from outreach
unknownKeep separate from undeliverable records and route for review or later recheck

The important part is not the table itself. The important part is that your CRM records the evidence and the decision separately. At minimum, keep these as distinct fields:

  • The original email address
  • The email verification status
  • The verification timestamp recorded when your workflow receives the result
  • The policy outcome, such as approved, review, or suppressed

Do not overwrite the original address with a workflow label. Do not replace the returned status with a generic boolean. If the address later changes, you need to know which status applied to which address and when.

Assign ownership for the policy. Revenue operations may own field definitions and automation. Marketing may own sequence-entry rules. Sales may own manual-review outcomes. Compliance or legal stakeholders may define the boundaries for outreach. The ownership model can vary, but conflicting updates should not.

For example, a marketer should not be able to mark an undeliverable address as eligible merely because the contact belongs to an important account. The account can remain important. The current address should remain separately suppressed until a new address is discovered and verified.

Verify at the Right Points in the Data Lifecycle

Verify work addresses at the moments when a record is created, activated, imported, or materially changed.

A useful email hygiene workflow places verification near the decision that depends on it. Common checkpoints include:

  • When you enrich newly sourced people. Request the work email field when you need an address, then store the returned deliverability status with the person record.
  • Before sequence enrollment. Check the existing status and timestamp before a record enters an automated outreach path.
  • During imports. Apply the same field mapping and status policy to imported records that you apply to records created elsewhere.
  • When an identity or address changes. A changed employer, LinkedIn URL, or email address can justify a new enrichment and verification step.
  • At a defined refresh point. Recheck records according to a policy your operators can explain and enforce.

Enrichment is live rather than a licensed static database. The same request can legitimately return different data later. That does not make the earlier result wrong. It means you should avoid treating a previous email verification status as a permanent verdict.

The answer is not to rerun every record without a rule. Unnecessary reruns create duplicate operational work and make audit trails harder to read. Check existing record state first. If the address, status, and timestamp meet your refresh policy, do not send the record through another verification path just because it appears in a new list.

A verification status applies to the address returned at that point in time. If the address changes, preserve the prior record state and evaluate the new address under the same policy.

This approach also helps you distinguish a data issue from a routing issue. If a record is held back, your team should be able to see whether it was held because the email was risky, because no address was returned, because the status is old under your policy, or because the person did not meet campaign rules.

Build Email Verification Into an Enrichment Run

Request email explicitly during enrichment when you need a work address and its deliverability status.

The email field is not part of the default people field set. A people enrichment can return fields such as linkedin_url, title, seniority, department, location, company, and company_domain without looking up an address. Add email only when your workflow needs a work email.

That choice is useful for governance. You can enrich a list for role and company context without collecting addresses for every record. Then, when a segment has passed your account and audience rules, request email for the records that need an outreach decision.

When a work email is returned, it is probed and returned with an email verification status as part of the delivery workflow. The status belongs with the address in your destination system. Do not strip it during field mapping or reduce it to a single “safe to send” label.

The billing model supports this distinction:

  • An email address that is actually returned costs 2 credits.
  • The email deliverability check is included at 0 credits.
  • A lookup that returns no data costs 0 credits.
  • An enrichment row is charged only when at least one requested field was resolved.

This means you should make field selection intentional, not speculative. Ask for email when an approved workflow needs it. Use the pricing page for the current plan allowances and credit model.

Handle Batch and API Workflows Without Losing Results

CSV and API workflows need to preserve both the resolved record and the wrapper that describes what happened to it.

For a CSV workflow, upload your list in the enrichment interface, map the identity columns you already hold, and request the email field. Review the cost preview before the run starts. When you download the enriched file, retain the returned email and its status in the destination file rather than importing only the address into your CRM.

This is where field mapping often fails. A team maps email into a contact record but forgets the verification status, timestamp, and policy outcome fields. The address then enters downstream systems without the context needed to route it correctly.

For API workflows, understand the inline and queued behavior before building a poller. Requests that ask for the email field are queued. The initial response has results set to null, and you poll GET /api/v1/jobs/{id} until job.status reaches a terminal state:

  • succeeded
  • empty
  • failed
  • cancelled

The job poll always returns an HTTP success response. Read job.status; do not infer completion from the HTTP response alone.

Every search, enrichment, and job poll uses the same response envelope:

{
  "job": {
    "object": "job",
    "id": "…",
    "status": "queued"
  },
  "results": null,
  "page": null,
  "estimatedCredits": "…"
}

After a terminal job status, results contains wrapper objects rather than direct person rows. Each wrapper has position, status, data, evidence, and error. The resolved person record is in data. An item can have a status such as succeeded, not_found, or failed, even when the overall job has completed.

Use the opaque forward-only cursor in page when results span pages. Do not assume all results arrive in the first terminal response.

Retries need their own rule. A retry is free and deduplicated only when it sends the same Idempotency-Key header as the original request. Without that header, the retry is a new request. It creates a second job, takes a second hold, and can be charged. The API reference and generated schemas are available in the docs.

Measure Workflow Health Through Exceptions, Not Guesswork

Measure the records your policy holds, suppresses, or cannot resolve, then use those exceptions to improve the workflow.

You do not need to invent an accuracy benchmark to find operational problems. Review the records that produce undeliverable, risky, and unknown email statuses. Review wrapper items marked not_found. Those outcomes can point to issues in source quality, identity matching, field mapping, or the rules that decide when an address should be requested.

Keep the questions concrete:

  • Did the import include usable identifiers such as a LinkedIn URL, email, or a name plus employer?
  • Did the workflow request email only where it was needed?
  • Did your destination preserve the email verification status?
  • Did your policy route risky and unknown records intentionally?
  • Did a record enter a sequence before the pre-send verification gate ran?
  • Did a changed address trigger a recheck under the refresh policy?

Use the append-only usage ledger to trace charges line by line. Pair it with CRM audit fields that show what was requested, what was returned, when the status was recorded, and which policy outcome followed. That gives operations a usable record when someone asks why a contact was enrolled, held, or suppressed.

A practical adoption checklist is:

  • Define the action for every email verification status.
  • Assign owners for field definitions, review queues, and outreach gates.
  • Store the original address, status, timestamp, and policy outcome separately.
  • Request email explicitly in enrichment runs that need a work address.
  • Preserve result-wrapper outcomes such as not_found and failed.
  • Add verification checks before sequence enrollment.
  • Define when changed or older records should be rechecked.
  • Review exceptions and ledger entries as part of regular data-quality operations.

That turns email verification from a list-cleaning step into a governed decision point in your GTM data pipeline.

Frequently asked questions

What does email verification check?
Email verification probes a work address and returns an email deliverability status. It does not determine buyer fit, consent, outreach permission, or whether a recipient will reply.
Which email verification statuses should be stored in a CRM?
Store the returned status separately from the address and policy decision. The available statuses are verified, probable, unverified, risky, undeliverable, and unknown.
How should undeliverable email addresses be handled?
Treat an undeliverable result as a suppression outcome for the current address. Keep the account and contact context separate, and evaluate any newly discovered address under the same policy.
When should work email addresses be rechecked?
Recheck addresses when records are created, activated, imported, materially changed, or reach a defined refresh point. Check the existing address, status, and timestamp first to avoid unnecessary reruns.
Should risky and unknown email verification results be treated the same?
No. A risky result and an unknown result preserve different outcomes and should remain separate. Route each through a deliberate review, suppression, or later recheck policy.

Keep reading

Put this into practice

Enrichments resolves people and companies from a REST API, an MCP server, the chat agent or a CSV upload, checks every email address it finds, and bills you only for the data that comes back.

Start enriching for free