Lead enrichment automatically appends valuable data to captured leads, giving your sales team the context they need to close deals.Documentation Index
Fetch the complete documentation index at: https://docs.emanate.ai/llms.txt
Use this file to discover all available pages before exploring further.
Updated in v2.8: New domain-resolution pre-stage, verified billing addresses with alternate-address review,
needs_review workflow, duplicate detection, and automatic phone-number lookup with built-in fallback. See Release Notes for details.What Gets Enriched
Contact Data
| Field | Description |
|---|---|
| Title | Job title (e.g., “VP of Operations”) |
| Department | Function (Sales, Engineering, etc.) |
| LinkedIn profile URL | |
| Direct Phone | Direct dial number |
| Personal Email | Additional email addresses |
Company Data
| Field | Description |
|---|---|
| Company Name | Official company name |
| Domain | Company website |
| Industry | Industry classification |
| Employee Count | Company size |
| Revenue | Estimated annual revenue |
| Location | Headquarters location |
| Technologies | Tech stack used |
| Funding | Recent funding info |
| Verified Address | Street, city, state, postal code, and country |
| Segment | Specific business classification (e.g., “Mid-market manufacturer of structural steel”) |
Enrichment Triggers
Automatic (Recommended)
Enrich immediately when leads are captured:- on_capture: Enrich as soon as lead is created
- on_qualify: Enrich only when lead meets criteria
Manual
Enrich on demand:- Go to lead detail page
- Click Enrich
- Wait for data to populate
Batch — Selection-Driven Enrich Button
The Enrich button at the top of the Leads (and Accounts) table retargets based on what’s selected:| Selection state | Button label | What gets enriched |
|---|---|---|
| Nothing selected | Enrich First 50 of N Filtered | First 50 rows of the current filtered page |
| 1–50 rows checked | Enrich N Selected | Exactly those rows |
| 51+ rows checked | Enrich First 50 of N Selected | First 50 of the checked set |
| Select-all-across-pages on | Enrich First 50 of N Selected | First 50 across the whole session, minus any rows you’ve excluded |
BATCH_LIMIT = 50 is intentional — pick the 50 highest-priority rows and run again rather than raising the cap. The button is disabled while any visible row is already queued or enriching.
Per-Column Fill
You don’t have to re-run the whole pipeline to refresh a single value. Each enrichable column has its own Fill action — an icon next to the column header (and a per-row variant where available) that re-fills just that field for the targeted rows. Four pipelines share the registry; each owns a distinct slice:| Pipeline | Fields it owns |
|---|---|
| Web research | industry, revenue, employees, founded, segment, funding |
| Company resolver (Claude 4.6 fallback) | domain, website, companyName, address |
| GPT | whyThisAccount, whyNow, priorityAction (intelligence explanations) |
| Contact lookup | primaryContact (name / email / phone discovered together) |
<field>_fill_status = queued → filling → NULL) and shows a Queued… or Filling… badge live. “Fill domain” never touches website / name / address; “Fill industry” never touches revenue.
Prerequisite Check
Per-column Fill only runs when each row has enough input for the pipeline. The column-header button is disabled with a tooltip if any visible row is missing a prerequisite:| Pipeline | Required input |
|---|---|
| Web research | Company name or website/domain |
| Company resolver | Company name |
| GPT intelligence | Company name |
| Contact lookup | Company name or website/domain |
Hover for Source Citations
Enriched Revenue, Employees, and Industry cells carry per-field citations from the original lookup. Hover any of those cells to reveal a tooltip with the citation URL, page title, and the model’s confidence when reported. Rows enriched before the citations layer shipped keep the tooltip hidden — re-enriching (or per-column Fill) will populate citations going forward.The Enrichment Pipeline
Each enrichment run flows through several stages.Stage 0 — Domain Resolution
Before any lookup runs, an AI step resolves messy company strings — abbreviations, misspellings, customer-list short codes — into a canonical domain. This dramatically improves match rates downstream and lets enrichment work on rows that only have a company name.Stage 1 — Decision-Maker Discovery
Searches the company for decision-makers and surfaces the most senior contact available. If a primary contact already exists on the lead or account, newly discovered contacts land as secondary contacts rather than overwriting the primary. Phone-only primaries created from import are preserved.Stage 2 — Company Data
Populates verified company data including industry, employee count, revenue, technologies, headquarters address, and a specific segment classification.Stage 3 — Phone Reveal
Requests a direct mobile number for the primary contact. If the initial lookup doesn’t return a number quickly, the system automatically falls back to a secondary source so the Mobile column populates reliably.Stage 4 — CRM Sync, Intelligence & Embeddings
The pipeline finishes with CRM sync (if a CRM is connected), AI intelligence scoring — fit score, timing signal, and priority actions — and vector embeddings that power natural-language semantic search on both leads and accounts.Estimated Run Time
Enrichment runs in batches of up to 100 leads or accounts at a time, with the actual batch size adjusted in real time based on available resources. This applies to all enrichment — auto-enrichment on import, manual single-row enrichment, and bulk re-enrichment. Plan for roughly 12 minutes per batch end-to-end. Rows that match an existing record (duplicates) are skipped by auto-enrichment but can be enriched manually.Revenue Formatting
Revenue is stored as a raw integer and rendered everywhere throughformatRevenue:
| Raw value | Displayed |
|---|---|
1_500_000_000 | $1.5B |
50_000_000 | $50M |
250_000 | $250K |
999 | $999 |
0, negative, or null | — |
$, no K/M/B, no ranges, no “approx”), and pre-EMA-263 rows with messy strings are normalized on read.
Overwrite Behavior
Enrichment never overwrites existing data. If a field already has a value, it’s preserved; if it’s empty, enrichment fills it in. This applies to every enriched field — name, email, phone, title, LinkedIn URL, company info, and so on. Addresses are handled with an extra layer: a verified billing address that differs from the existing one is stored as an alternate address for you to Accept or Keep Existing rather than being applied silently. Decision-maker contacts follow the same principle — newly discovered contacts land as secondary contacts when a primary already exists, and never replace the primary automatically.Verified Addresses & Alternate Addresses
When enrichment returns a verified billing address that differs from the address already on the record, the new address is stored as an alternate instead of silently overwriting the existing one. The drawer’s Address section grows an Alternate Addresses card with Accept and Keep Existing buttons so you can promote or dismiss each candidate.| Action | Effect |
|---|---|
| Accept | Promotes the alternate to be the primary address; the previous primary is archived |
| Keep Existing | Dismisses the alternate; the existing address remains |
Enrichment Review
After a batch run completes, the Enrichment Review dialog highlights every row with discrepancies between previously stored data and the newly enriched values. Each row is tagged:| Tag | Meaning |
|---|---|
match | Existing data matched the enrichment result — no action needed |
auto_filled | Field was empty before; enrichment populated it |
kept_existing | Existing value was preserved (e.g., primary address protected) |
mismatch | Existing value disagrees with enrichment; review recommended |
uncertain | Enrichment could not establish high confidence |
The needs_review Status
Rows that require human attention now move to a dedicated needs_review state — surfaced as an amber pill in the table and an N need review count badge next to the enrichment ETA. Filtering the status column shows friendly labels for each state.
Common reasons a row enters needs_review:
- Enrichment matched a domain already claimed by another lead or account (potential duplicate)
- An alternate address was returned that disagrees with the existing primary
- Confidence on a critical field is below threshold
Duplicate Detection
If enrichment resolves to a domain that’s already claimed by another row, the second row is flaggedneeds_review and the Duplicate Review dialog gives you three choices:
| Option | Effect |
|---|---|
| Keep Separate | Treats both rows as distinct; clears the review flag |
| Merge | Folds the new row into the existing record, preserving custom fields and tags |
| Delete | Removes the duplicate row entirely |
Enrichment Quality
Match Confidence
Enrichment results carry a confidence label that’s surfaced on alternate-address cards and contact matches:| Label | Meaning |
|---|---|
| High | Strong match — high reliability |
| Medium | Good match — review recommended |
| Low | Uncertain — review before relying on the value |
Handling Low Confidence
Low-confidence fields are taggeduncertain in the Enrichment Review dialog, and rows containing them move to the needs_review state so they’re easy to spot and action manually.
Monitoring Enrichment
Dashboard Metrics
| Metric | Description |
|---|---|
| Enrichment Rate | % of leads enriched |
| Match Rate | % with high-confidence match |
| Needs Review | Rows flagged for manual attention |
| Failed | Enrichment failures |
Enrichment Status
| Status | Meaning |
|---|---|
| Pending | Queued for enrichment |
| Processing | Currently enriching |
| Enriched | Successfully completed |
| Partial | Some fields populated |
| Needs Review | Requires manual review (duplicate suspected, alternate address, or low-confidence field) |
| Failed | Could not enrich |
| No Match | No matching record found |
Troubleshooting
No match found
No match found
- Verify email address is correct
- Check company name spelling
- Try with different email domain
- Lead may not be in the enrichment database
Outdated information
Outdated information
- Enrichment data may be stale
- Request re-enrichment
- Report to the enrichment provider for update
Enrichment failed
Enrichment failed
- Re-run enrichment from the row’s drawer or the Bulk Actions menu
- Check the row’s status —
needs_reviewrows require manual action before re-enrichment will help - If the failure persists across many rows, contact support
Best Practices
Enrich Strategically
Validate Before Enriching
Ensure email is valid before enriching:- Check format
- Verify domain exists
- Remove obvious test/fake emails
Monitor Quality
Regularly review enrichment quality:- Spot check enriched data
- Track match rates and the
needs_reviewcount - Action
needs_reviewrows promptly so the queue doesn’t pile up
Next Steps
ICP Scoring
Score enriched leads
CRM Sync
Push to CRM
Lead Capture
Capture configuration
Integrations
Other integrations