Sales

How to automate lead enrichment

The short answer

To automate lead enrichment, trigger on each new CRM contact, look up the company by email domain through one or more data providers in a waterfall, have an LLM read the company website and write a short fit summary, and write results to dedicated CRM fields with a source and date. Cache by domain and never overwrite values a rep entered by hand.

What this automation does

Every new lead arrives with an email address and not much else. Enrichment fills in the context a rep or a downstream automation needs to act on it.

  1. Trigger. A new contact is created in the CRM, or a form submission arrives before the CRM record exists.
  2. Normalize. The workflow lowercases the email, extracts the domain, and checks it against a list of free and disposable email providers.
  3. Check the cache. If this company domain was enriched in the last 90 days (or whatever window you choose), reuse that result instead of paying for another lookup.
  4. Run the provider waterfall. Query your primary company data provider. If key fields come back empty, try a second provider. Stop as soon as required fields are filled.
  5. Read the website. Fetch the homepage and one or two key pages, and have an LLM return a structured summary: what the company sells, who it sells to, and a fit rating against your ideal customer profile with a one-line reason.
  6. Write back safely. Update dedicated enrichment fields with values, source and timestamp. Copy into primary fields only when they are blank. Log every lookup and its cost.

When it is worth building

Build it when reps are opening a browser tab for every new lead, or when routing and scoring rules depend on fields that are usually empty. If your lead routing needs employee count and region, and half your leads arrive without them, enrichment is the prerequisite.

It is not worth a custom build if you have one provider, low volume, and your CRM’s built-in enrichment covers the fields you use. Turn that on and move on. The custom version earns its cost when you combine providers, add AI interpretation, or need the enriched data in more than one system.

Architecture

LayerWhat we useWhy
TriggerCRM webhook, or n8n’s HubSpot or Pipedrive triggerFires within seconds of a new contact. n8n’s Salesforce trigger polls on an interval, so use a Salesforce Flow or outbound message when speed matters
Data providersOne to three company and person data APIs, called with n8n’s HTTP Request nodeNo single provider has complete coverage; a waterfall raises fill rate
CacheA Postgres table keyed by domainPrevents paying twice for the same company and speeds up repeat leads
Website readingA fetch step plus Claude Haiku 5.5 or a small OpenAI GPT modelCheap, fast summarization of a few pages per company
Fit scoringLLM rating plus a rules check on provider fieldsThe model judges fit from text; rules enforce hard limits like headcount
Write-backCRM update node with field-level rulesProtects human edits and records provenance

How to build it

  1. List the fields that matter. Start from what routing, scoring and reps actually use. Ten well-filled fields beat forty sparse ones. Create enrichment-specific properties in the CRM for each.
  2. Pick providers and order them. Test two or three providers on a sample of 200 of your real past leads. Measure fill rate per field and spot-check accuracy. Put the provider with the best coverage for your market first.
  3. Build the cache. Store each domain’s result with a fetched-at date. Check it before any paid call.
  4. Add the website step. Fetch the homepage text, strip navigation and scripts, and send it to the model with your ICP description and a strict output schema. Ask for “unknown” rather than a guess when the page is thin.
  5. Write field-level merge rules. Never overwrite a field a user edited. Only fill blanks in primary fields. Always update the enrichment fields and their timestamps.
  6. Guard against loops. A CRM update can fire the same trigger again. Add a flag or check the enrichment timestamp so a record is processed once.
  7. Backfill carefully. Run the workflow over existing records in batches that respect provider rate limits and your monthly credit budget.

The downloadable starter template below covers the HubSpot trigger, domain cache, one provider call and the AI website summary.

What breaks in production

  • Wrong company match. “Summit Group” exists in dozens of states. Match on domain, not company name, and treat name-only matches as low confidence.
  • Parent and subsidiary confusion. A lead from a regional office gets the parent’s global headcount. Store both when the provider returns them, and decide which your routing uses.
  • Credit burn. A form spam wave or a bulk import can consume a month of provider credits in an hour. Set a daily spend cap and skip enrichment for leads flagged as spam.
  • Thin or blocked websites. Single-page sites, sites behind bot protection, and parked domains produce weak summaries. Return “insufficient information” and let the lead through unscored.
  • Stale data. Headcount and funding change. Re-enrich on a schedule only for active opportunities, not the entire database.
  • Rate limits. Providers throttle bursts. Queue requests and retry with backoff instead of failing the whole batch.

Timeline and cost

A single-CRM workflow with one provider, a cache and the AI website summary typically takes one to two weeks. A multi-provider waterfall with backfill and custom fit scoring takes closer to three. Lumeor builds lead enrichment in the range of $4,000 to $10,000. Ongoing costs are mostly provider subscriptions or credits (check each vendor’s current pricing), plus a small amount of model usage per new company. If you are choosing an orchestration tool, our n8n vs Make comparison covers the trade-offs for API-heavy workflows like this one.

How to measure success

  • Fill rate for each target field, before and after
  • Share of lookups served from cache versus paid calls
  • Provider cost per enriched lead
  • Accuracy on a monthly spot check of 25 random records
  • Share of leads that reach routing with all required fields present

Free starter template

Import a working n8n workflow that implements the core of this guide, then adapt it to your systems.

Frequently asked questions

Do I still need a data provider if I use an LLM?

For firmographics like employee count, revenue band and industry codes, yes. A model reading a website can describe what a company does, but it cannot reliably tell you headcount or revenue. Use a provider for structured facts and the model for interpretation, such as whether the company fits your ideal customer profile.

What about leads that sign up with a Gmail or Outlook address?

Personal email domains tell you nothing about the company. The workflow detects free email providers and skips domain lookup. It can try a person-level lookup if your provider supports it, or ask for the company name in a follow-up form field.

How do I stop enrichment from overwriting my reps' notes?

Write enrichment into its own set of fields, for example enriched industry and enriched employee count, and only copy into the main fields when they are empty. Store the source and the date next to each value so anyone can see where it came from.

Is lead enrichment legal under privacy laws?

Enriching business contacts is common practice in the US, but laws such as the CCPA in California and the GDPR for EU residents give people rights over data held about them. Check your providers' terms and data sourcing, document what you store and why, and talk to counsel if you sell into the EU. This is not legal advice.

Why not just buy an enrichment tool like Clay or the one built into my CRM?

Often you should. Built-in CRM enrichment and dedicated tools are a good fit when their fields match your needs. A custom workflow wins when you need several providers in a specific order, custom AI scoring, caching across systems, or enrichment that feeds other automations directly.

Next steps