BlogTutorials

How to Enrich Your CRM Data Automatically

Rahul Lakhaney
By Rahul LakhaneyPublished on: Mar 30, 2026 · 10 min read · Last reviewed: Mar 2026
Enrich API platform
Enrich integrates with Salesforce and HubSpot for automated CRM enrichment.

TL;DR

Your CRM data decays at 30% per year. This tutorial shows how to automatically enrich Salesforce and HubSpot contacts using the Enrich API, Data Tables, webhooks, and Lead Finder.

30%/yr
CRM data decay
Industry average
94.2%
Enrich match rate
Email finding
187ms
API response
Average
$49/mo
Starting price
100K credits

Why CRM data enrichment matters

B2B contact data decays at roughly 30% per year. People change jobs, companies rebrand, email addresses become invalid, and phone numbers go out of service. A CRM with 10,000 contacts will have 3,000 outdated records by year end.

The consequences are real:

  • Bounced emails damage sender reputation and reduce deliverability across your entire domain
  • Wrong job titles lead to irrelevant outreach that gets ignored or marked as spam
  • Missing phone numbers force reps to rely solely on email, cutting connection rates
  • Stale company data means your lead scoring and routing rules make decisions based on outdated information

Manual CRM cleanup is a time sink. Sales reps spend 20 to 30% of their time researching and updating contact records instead of selling. Data entry errors compound the problem.

Enrich solves this with automated CRM enrichment. The API processes lookups in under 200ms with email accuracy above 94%, and native integrations with Salesforce and HubSpot enable push/pull sync without custom code. This tutorial covers three approaches: real-time enrichment on record creation, bulk enrichment of existing databases, and scheduled re-enrichment to keep data fresh.

Approach 1: Real-time enrichment on CRM record creation

The simplest approach is enriching contacts the moment they enter your CRM. When a new lead, contact, or account is created, trigger an enrichment call and write the results back.

Using Enrich's Salesforce/HubSpot integration:

Enrich offers native CRM integrations with Salesforce and HubSpot that support push/pull sync. Once connected, you can configure automatic enrichment rules:

  1. 1Connect your CRM at dash.enrich.so under Integrations
  2. 2Map Enrich fields to your CRM fields (name, title, company, phone, LinkedIn URL)
  3. 3Set trigger rules: enrich on contact creation, lead creation, or manual trigger
  4. 4Enrich automatically fills missing fields and updates stale data

Using webhooks for custom workflows:

For more control, use Enrich's webhook system with your CRM's automation:

TSTypeScript
import Enrich from '@enrich.so/sdk';
const enrich = new Enrich('YOUR_API_KEY');
// Triggered by CRM webhook on new contact creation
async function onNewContact(contact: CRMContact) {
  // Reverse lookup enriches from email (10 credits)
  const enriched = await enrich.reverseEmailLookup.find({
    email: contact.email,
  });
  if (enriched) {
    // Update CRM with enriched data
    await updateCRM(contact.id, {
      title: enriched.title,
      company: enriched.company,
      phone: enriched.phone,
      linkedin: enriched.linkedin,
      industry: enriched.companyIndustry,
      companySize: enriched.companySize,
      location: enriched.location,
    });
  }
}

Reverse Email Lookup costs 10 credits and returns the most comprehensive profile: person data, company data, social profiles, and employment history. For a CRM adding 500 new contacts per month, that is 5,000 credits, well within the Growth Pack's 100K monthly allocation.

This approach ensures every new record enters your CRM fully enriched from day one. No manual research, no incomplete records.

Use Email Validation first
Before enriching a new CRM contact, validate the email address (1 credit). If the email is invalid, you save the 10-credit reverse lookup cost and can flag the record for review. At scale, this validation-first approach saves significant credits.

Approach 2: Bulk enrichment with Data Tables

For existing CRM databases, Enrich's built-in Data Tables provide a no-code bulk enrichment workflow:

  1. 1Export from your CRM: Export contacts as CSV from Salesforce or HubSpot. Include at minimum: email address (or name + company domain).
  2. 2Import into Enrich Data Tables: Upload the CSV at dash.enrich.so. Data Tables support up to 500K records per import.
  3. 3Run bulk enrichment: Select the enrichment type (reverse lookup, email finder, email validation) and run. Results populate in the table view.
  4. 4Export enriched data: Download the enriched CSV with all new fields: title, company, phone, LinkedIn, industry, company size, location, and more.
  5. 5Import back to CRM: Upload the enriched CSV back to Salesforce or HubSpot, matching on email address or record ID.

Credit costs for bulk enrichment:

  • Email Validation only (clean up bounces): 1 credit per record
  • Email Finder (fill missing emails): 10 credits per record
  • Reverse Email Lookup (full enrichment): 10 credits per record
  • Phone Finder (add phone numbers): 500 credits per record

Example: Enriching 5,000 CRM contacts

  • Validate all emails: 5,000 credits
  • Reverse lookup on valid emails (assume 4,500 valid): 45,000 credits
  • Find phones for top 200 prospects: 100,000 credits
  • Total: 150,000 credits (fits within Scale Pack at $149/mo)

For the programmatic approach, use batch API calls:

TSTypeScript
// Submit batch reverse lookup
const batch = await enrich.reverseEmailLookup.batch({
  records: crmContacts.map(c => ({ email: c.email })),
  webhookUrl: 'https://your-app.com/webhooks/crm-enrich',
});
// Webhook handler receives results
app.post('/webhooks/crm-enrich', async (req, res) => {
  const { data } = req.body;
  for (const result of data.results) {
    await updateCRMRecord(result.email, result);
  }
  res.status(200).send('OK');
});

Data Tables also support CSV export with all enriched fields, making it easy to reimport into any CRM or marketing automation platform.

Approach 3: Finding new prospects with Lead Finder

CRM enrichment is not just about fixing existing data. It is also about finding new contacts that match your ideal customer profile and adding them directly to your CRM.

Enrich's Lead Finder provides access to 300M+ contacts with 100+ search filters:

  • Job title and seniority: VP of Sales, Director of Engineering, C-level
  • Company attributes: Industry, size (10 to 50, 50 to 200, 200 to 1000+), location, revenue range
  • Technographics: Companies using specific tools (Salesforce, HubSpot, Snowflake, AWS)
  • Funding data: Recently funded companies, funding round, amount raised
  • Hiring signals: Companies actively hiring for specific roles
  • Traffic data: Website traffic ranges indicating company growth

Count queries are free, so you can refine your ICP criteria before spending credits.

TSTypeScript
// Count prospects matching your ICP (free)
const count = await enrich.leadFinder.count({
  jobTitle: 'Head of Growth',
  industry: 'FinTech',
  companySize: '50-500',
  location: 'United States',
  technology: 'HubSpot',
});
console.log(`${count.total} prospects match your ICP`);
// Reveal contacts (1 credit per person)
const prospects = await enrich.leadFinder.search({
  jobTitle: 'Head of Growth',
  industry: 'FinTech',
  companySize: '50-500',
  location: 'United States',
  technology: 'HubSpot',
  limit: 25,
});
// Push to your CRM
for (const prospect of prospects.results) {
  await createCRMContact({
    firstName: prospect.firstName,
    lastName: prospect.lastName,
    email: prospect.email,
    title: prospect.title,
    company: prospect.company,
    phone: prospect.phone,
    linkedin: prospect.linkedin,
    source: 'Enrich Lead Finder',
  });
}

People Search (1 credit per person) is another powerful tool for CRM prospecting. Input a company LinkedIn URL and find employees filtered by job level, function, country, and continent. This is ideal for account-based strategies where you want to map out the buying committee at target accounts.

Waterfall ICP Search (1 credit per record) adds multi-source cascading lookups with ICP scoring from 0 to 100, helping you prioritize the highest-fit prospects before adding them to your CRM.

Keeping CRM data fresh: Scheduled re-enrichment

One-time enrichment is not enough. With 30% annual data decay, you need a system for keeping records current.

Recommended re-enrichment schedule:

  • Monthly: Validate all email addresses (1 credit each) to catch bounces before they damage deliverability
  • Quarterly: Re-enrich active opportunities and key accounts with reverse lookup (10 credits each) to catch job changes and title updates
  • On trigger: Re-enrich any contact that bounces, unsubscribes, or shows engagement signals

Automated re-enrichment workflow:

TSTypeScript
// Monthly email validation sweep
async function monthlyValidation(contacts: CRMContact[]) {
  const results = [];
  for (const contact of contacts) {
    const validation = await enrich.emailValidation.verify({
      email: contact.email,
    });
    if (validation.status !== 'valid') {
      results.push({
        id: contact.id,
        email: contact.email,
        status: validation.status,
        action: validation.status === 'invalid'
          ? 'remove' : 'review',
      });
    }
  }
  return results;
}
// Quarterly re-enrichment for key accounts
async function quarterlyEnrich(contacts: CRMContact[]) {
  for (const contact of contacts) {
    const enriched = await enrich.reverseEmailLookup.find({
      email: contact.email,
    });
    if (enriched && enriched.title !== contact.title) {
      // Job change detected
      await updateCRM(contact.id, {
        title: enriched.title,
        company: enriched.company,
        jobChangeDetected: true,
        lastEnrichedAt: new Date().toISOString(),
      });
    }
  }
}

Credit budget for ongoing CRM hygiene (10,000 contacts):

  • Monthly email validation: 10,000 credits/month
  • Quarterly re-enrichment (top 2,000 contacts): 20,000 credits/quarter (6,667/month average)
  • Monthly Lead Finder for new prospects: 5,000 credits/month
  • Total: ~22,000 credits/month
  • Plan needed: Growth Pack ($49/mo for 100K credits) with plenty of room to spare

With Enrich's native Salesforce and HubSpot integrations, much of this can be configured through the dashboard without writing code. Set up enrichment rules, map fields, and let the integration handle the sync automatically.

The result: a CRM that stays accurate, complete, and current without manual effort. Your sales team spends time selling instead of researching, your marketing team sends to valid addresses, and your lead scoring reflects reality.

Credit cost summary
Email Validation: 1 credit. Email Finder: 10 credits. Reverse Lookup: 10 credits. Phone Finder: 500 credits. People Search: 1 credit/person. Waterfall ICP: 1 credit/record. Company Follower: 25 credits/profile. Growth Pack ($49/mo) includes 100K credits.

Frequently Asked Questions

Try Enrich for free

100 free API credits. No credit card required. Start enriching data in minutes.