Lead Enrichment: Prepare Inbound Records for Review

Stage inbound lead enrichment with fill, hold, review and suppress routes that protect submitted fields and keep enriched values traceable to their source.

GuideBY THE ASTROFABRIC TEAM · SEP 14, 2026 · 9 MIN READ

Inbound lead enrichment works best as a staging process, not an overwrite process. When a form submission arrives with a partial name, an email address, and maybe a company field, the job is to resolve who the person is and where they work, attach that as working data alongside the untouched original submission, and route the record into one of four outcomes: fill working fields, hold for more evidence, review a conflict, or suppress the proposed outreach. Only records that clear that routing should reach CRM automation.

That framing matters because inbound records are different from prospecting records. A prospecting row is something you built and can discard cheaply. An inbound row is a real person who took an action, and the submitted fields are evidence of what they actually said. Enrichment that treats those fields as disposable creates two failure modes at once: it corrupts the record of what the prospect told you, and it lets inferred attributes masquerade as declared ones.

Define the record before you enrich it

Before any batch runs, decide what a distinct inbound contact means in your CRM. The usual anchor is the email address, but the definition needs two more decisions:

Email-to-company resolution. A business email carries a domain, and the domain usually resolves to a company record. A free mailbox (gmail.com, outlook.com, and similar) resolves to nothing. Your process needs an explicit rule for each case rather than one path that quietly fails on the second.

Name-plus-domain identity. When the email is a business address, the pair of submitted name and email domain gives strong evidence for matching a person to a company, though it remains evidence rather than proof of identity. When the email is free, you only have a name and whatever the prospect typed into the company field, which is weaker input and deserves a weaker confidence tier.

Classify the input first, then assign a routing outcome after checking available evidence.

  1. Business email, company field matches domain. High confidence. Candidate for automatic fill.
  2. Business email, company field empty or mismatched. Resolvable, but the mismatch is a flag. Attempt resolution, route disagreements to review.
  3. Free email, company field present. The company is a claim, not a resolution. Enrich cautiously and hold.
  4. Free email, no company. Minimal identity. Run a mailbox verification check if you can, treating the result as an estimate, then hold for human judgment or a nurture path that asks for more information.

Note what mailbox verification does and does not tell you. It estimates whether the address is likely to accept mail, and results can be inconclusive. It does not confirm the person's identity, prove intent, or grant permission to contact them through other channels.

Preserve the original submission

The foundational structural decision is field separation. Keep two layers on every record:

  • Submitted fields: exactly what the prospect entered, never modified by any automated process.
  • Working fields: enriched values with a source and timestamp attached, so anyone reviewing the record can see where each value came from.

This is a data provenance question, and it pays off the first time enrichment gets something wrong. If a working field says the company is "Acme Logistics" but the submitted field says "Acme Freight," a reviewer can see the disagreement and resolve it. If enrichment overwrote the submission, the disagreement is invisible and the wrong value looks authoritative. Major CRMs document enrichment features that populate contact and company properties; HubSpot's enrichment documentation is one example of platform-level enrichment applied to records (HubSpot). Whatever platform you use, verify how its enrichment interacts with existing values before turning it on for inbound records, because default overwrite behavior varies by property and setting.

A routing worksheet for the enrichment batch

Run inbound enrichment as a scheduled batch with explicit routes rather than a single stream that writes everything. A worksheet like this keeps the rules visible:

Condition after resolutionRouteWrite policy
Business email, domain resolves, no conflicts with submissionFillWrite working fields automatically; submitted fields untouched
Business email, enriched company conflicts with submitted companyReviewWrite nothing to shared fields until a human resolves the conflict
Free email, name resolves to a plausible company with supporting contextHoldAttach candidate values as working data flagged "unconfirmed"
Free email, no resolutionHoldCheck syntax only; queue for manual triage and keep outreach eligibility unresolved
Email domain or address matches suppression list (customers, competitors, opted-out)SuppressTag and remove from outreach routing; keep the record
Duplicate of an existing CRM recordReviewNever auto-merge; surface both records to an operator

Two rules in that table deserve emphasis. First, suppression runs before anything else writes, because enriching a record that should never enter outreach wastes credits and creates risk. Second, duplicates go to review because merges can be difficult or impossible to reverse. Idempotent delivery helps here in a narrow way: repeating the same batch write should produce the same intended effect rather than a second copy of every record (RFC 9110). That protects you from retry duplication. It does not make a merge reversible, so merges stay behind human approval.

Illustrative example: four rows through the batch

This is a hypothetical batch, constructed to show the routing logic. No real companies or results are described.

RowSubmitted dataResolution outcomeRouteWhat gets written
1jmori@northbeamco.example, "Northbeam Co", full nameDomain resolves to company; firmographics foundFillCompany size, industry, location into working fields
2k.tran.dev@gmail.example, no company, first name onlyNo domain signal; name too common to resolveHoldMailbox format check only; queued for triage
3pat@harborline.example, "Harborline", full nameDomain matches an existing customer accountSuppressSuppression tag; excluded from outreach routing
4dsmith@ferrostack.example, company field says "Ironvale"Domain resolves to Ferrostack; submission disagreesReviewNothing to shared fields; conflict note for reviewer

Notice what the batch does not do. Row 2 does not get an inferred employer. Row 4 does not get a silent correction. And no row receives an inferred budget, deal size, or purchase timeline, because the form never asked and enrichment has no honest basis for those values. Enrichment output is an assessment of who the record represents, not a claim about whether they will convert. Downstream lead scoring can weigh the enriched attributes, but the enrichment layer itself should stay descriptive.

Tradeoffs and failure handling

Speed versus review load. Routing free-email and conflicted records to hold means some inbound records wait for a human. The alternative, auto-filling everything, is faster and quietly wrong more often. A reasonable middle path is auto-filling only state 1 records and reviewing the rest, then loosening the rules once the review queue shows consistent agreement.

Coverage versus confidence. Multi-step enrichment that checks several data types raises coverage, but each additional inference step lowers confidence in the final value. Tag every working field with its resolution path so reviewers can weigh a direct domain match differently from a name-based guess. This is the core design problem waterfall enrichment agents are built to manage: sequencing sources, recording which one answered, and stopping when confidence is sufficient.

Stale suppression lists. A suppression check is only as good as its inputs. If the customer domain list lags your closed-won data, current customers will leak into outreach routing. Schedule the suppression source refresh alongside the enrichment batch, not independently, and recheck suppression at the moment of any send or export rather than relying on the batch check alone.

Silent enrichment failures. When a batch partially fails, the dangerous outcome is a mix of enriched and unenriched records that all look finished. Mark every record with a batch status field so an incomplete run is visible, and design retries around idempotent writes so reprocessing does not duplicate work. Broader routing and handoff design is covered in the lifecycle CRM automation guide.

FAQs

Should enrichment overwrite what a prospect typed into a form? No. Keep submitted values in protected fields and write enriched values into separate working fields with a source and timestamp. When the two disagree, route the record to review. Overwriting hides the disagreement and makes the inferred value look like something the prospect said.

How should free email addresses be handled? Treat a free mailbox as a weak company signal, not a disqualification. Attempt resolution from the name and any submitted context, label the results unconfirmed, and hold the record for review or a nurture step that asks for more information. Do not assign an employer on a guess.

Does idempotent delivery make CRM writes reversible? No. Idempotency means repeating the same request has the same intended effect, which protects against duplicates during retries. It does not undo overwrites or merges. Keep destructive changes like merges behind explicit approval and preserve provenance fields so mistakes can be traced.

Next step

Map your current inbound flow against the routing worksheet above: which records auto-fill today, and which should be holding for review instead? If you want autonomous agents handling the resolution, verification, and routing while your submitted fields stay untouched, start with AstroFabric and run one inbound batch through fill, hold, and review routes.

Sources

⟨ RUN IT INSTEAD OF READING IT ⟩

Every playbook on this blog ships as a runnable mission.

Open a workspace and the playbook library is waiting - describe the outcome and the agents carry it end to end, on your plan's monthly credits.

⟨ KEEP READING ⟩
GuideEnrichment & data

B2B Data Providers: A Buyer's Evaluation Playbook

How to evaluate B2B data providers on usable, ICP-fit records instead of database size, with a 100-record pilot method and a usable-record cost worksheet.

Sep 14, 2026 · 8 min read
ComparisonEnrichment & data

Clay Alternatives: Choose the Right Data Workflow

How to evaluate Clay alternatives by workflow ownership, composition model, data scope and tool fit, with a scored rubric and a worked example.

Aug 13, 2026 · 7 min read