TL;DR
CRM-native enrichment tools miss 40-60% of contact fields. This guide gives you step-by-step playbooks for setting up automated data enrichment in HubSpot, Salesforce, and Pipedrive using Cleanlist. Each playbook takes under 30 minutes to implement and keeps your records complete without manual work.
Your CRM has gaps. Every CRM does.
New leads come in with a name and email. Maybe a company. Rarely a phone number, job title, industry, or employee count. Your reps fill in what they can manually, but most records stay incomplete.
The result: lead scoring breaks, routing misfires, and outreach falls flat. You paid to acquire those leads. Incomplete data means you are wasting that investment.
The fix is automated CRM enrichment. Connect an enrichment tool, set up triggers, and every new record gets filled in automatically. No manual research. No spreadsheet exports.
Here is exactly how to do it in the three most common B2B CRMs.
Why CRM-Native Enrichment Falls Short
Every major CRM has tried to solve enrichment internally. None of them do it well.
HubSpot Insights appends basic company data (industry, size, revenue) to associated company records. It does not enrich contact-level fields like direct dials, verified emails, or job seniority. Coverage is limited to companies in HubSpot's own database, which skews heavily toward companies that already use HubSpot.
Salesforce Data.com was their attempt at built-in enrichment. Salesforce deprecated it in 2020 and fully sunset it in 2021. There is no native replacement. Salesforce now recommends third-party AppExchange solutions for enrichment.
Pipedrive has no native enrichment whatsoever. You get whatever data your reps type in. There is no automatic field population, no company matching, and no data append functionality.
Here is how they compare:
| Capability | HubSpot | Salesforce | Pipedrive |
|---|---|---|---|
| Native contact enrichment | No (company only) | No (Data.com sunset) | No |
| Work email verification | No | No | No |
| Direct dial phones | No | No | No |
| Job title normalization | No | No | No |
| Firmographic append | Partial (Insights) | No | No |
| Technographic data | No | No | No |
| Multi-source coverage | No | No | No |
The pattern is clear. CRM-native tools were never designed to deliver the depth and accuracy that revenue teams need. That is where waterfall enrichment fills the gap -- querying 15+ data sources in sequence to achieve 85-95% field coverage.
HubSpot Enrichment Playbook
HubSpot is the most straightforward CRM to enrich. Native integration, strong workflow automation, and flexible custom properties make it ideal for automated data enrichment.
Step 1: Connect Cleanlist to HubSpot
Open your Cleanlist dashboard and navigate to Settings > Integrations. Click Connect HubSpot. You will be redirected to HubSpot's OAuth authorization screen.
Grant Cleanlist access to:
- Contacts (read and write)
- Companies (read and write)
- Lists (read)
Once authorized, Cleanlist auto-maps standard fields:
| Cleanlist Field | HubSpot Property | Direction |
|---|---|---|
| Work email | Bidirectional | |
| Direct dial | Phone number | Push to HubSpot |
| Job title | Job title | Push to HubSpot |
| Company name | Associated company | Push to HubSpot |
| Employee count | Number of employees | Push to HubSpot |
| Industry | Industry | Push to HubSpot |
| LinkedIn URL | LinkedIn URL (custom) | Push to HubSpot |
| Confidence score | Cleanlist Score (custom) | Push to HubSpot |
For LinkedIn URL and Confidence Score, create custom contact properties in HubSpot first. Use Single-line text for LinkedIn URL and Number for Confidence Score.
Step 2: Set up workflow triggers
In HubSpot, go to Automation > Workflows > Create workflow. Choose Contact-based as the workflow type.
Set up three triggers (create separate workflows or use branching logic):
Trigger 1: New contact created. This catches every new lead from forms, imports, or API submissions. Set the enrollment trigger to "Contact is created" with no additional filters. This is your primary enrichment workflow.
Trigger 2: Lifecycle stage change. When a contact moves from Subscriber to Lead, or from Lead to MQL, trigger re-enrichment. This catches contacts who were initially enriched with partial data and may have updated information available.
Trigger 3: List membership. Create a static or active list called "Needs Enrichment." Add contacts manually or via list criteria (e.g., "Phone number is unknown" AND "Job title is unknown"). Use this list as an enrollment trigger for batch enrichment of existing records.
For each trigger, add the action Trigger a webhook or use the Cleanlist integration action to send the contact to Cleanlist for enrichment.
Step 3: Configure enrichment rules
Not every enrichment should overwrite existing data. Configure rules for each field:
- Overwrite if empty: Default behavior. Only fills in fields that have no value. Safest option for most fields.
- Always overwrite: Use for fields that decay quickly, like job title and company. If someone changed roles, you want the latest data.
- Append: Use for phone numbers -- add the new direct dial without removing an existing office number.
- Never overwrite: Use for fields your reps manually verify, like custom notes or deal-specific data.
Avoid Overwriting Manually Verified Data
Set "Never overwrite" for any field that your sales team edits manually. If a rep confirmed a direct dial by calling it, you do not want automated enrichment replacing that number with a different one.
Set a minimum confidence threshold. Cleanlist assigns a confidence score (0-100) to every enriched field. Set your threshold to 80+ for overwrite rules. Fields below that score get flagged for manual review instead of pushed automatically.
Salesforce Enrichment Playbook
Salesforce requires slightly more setup than HubSpot because of its permission model and Flow builder, but the result is equally powerful. This Salesforce enrichment automation handles both Leads and Contacts.
Step 1: Install the Cleanlist package
You have two connection options:
Option A: AppExchange package (recommended). Install the Cleanlist managed package from Salesforce AppExchange. This creates custom fields, permission sets, and pre-built Flow templates automatically. Assign the "Cleanlist Enrichment User" permission set to your admin and any users who need to trigger manual enrichment.
Option B: API + Zapier. If your Salesforce org restricts managed packages, use the Cleanlist API via Zapier. Create a Zap with a Salesforce trigger and Cleanlist action. This requires more manual field mapping but avoids package dependencies.
After installation, navigate to Setup > Custom Settings > Cleanlist Configuration. Enter your Cleanlist API key and set the default enrichment mode (real-time or batch).
Step 2: Create Flow automation
Open Setup > Flows > New Flow. Select Record-Triggered Flow.
Configure the trigger:
- Object: Lead (create a separate Flow for Contact if needed)
- Trigger the Flow when: A record is created or updated
- Condition requirements: All conditions are met
- Add condition: "Email is not null" (ensures there is enough data to enrich)
Add the enrichment action:
- Add an Action element to the Flow
- Select the Cleanlist Enrich Record action (installed with the package)
- Map the Record ID to the action's input
- Select which fields to enrich: email verification, phone, title, company data
Add an Update Records element:
- After the enrichment action returns data, update the Lead/Contact record
- Map each enriched field to its Salesforce counterpart
Set entry conditions to prevent infinite loops. Add a condition: "Last Modified By is not equal to [Cleanlist Integration User]." This prevents the enrichment update from re-triggering the Flow.
Batch Enrichment for Existing Records
For your existing database, use Cleanlist's bulk enrichment feature. Export a Salesforce report of records missing key fields, upload to Cleanlist, enrich in bulk, and re-import using Data Loader. This is faster than running every record through the Flow.
Step 3: Map fields and set deduplication rules
Salesforce field mapping matters more than in other CRMs because of its rigid data model. Map enriched fields to both standard and custom fields:
| Cleanlist Field | Salesforce Standard Field | Custom Field (if needed) |
|---|---|---|
| Verified email | Cleanlist_Verified_Email__c | |
| Direct dial | Phone | Cleanlist_Direct_Dial__c |
| Mobile | MobilePhone | -- |
| Job title | Title | -- |
| Seniority level | -- | Cleanlist_Seniority__c |
| Company size | NumberOfEmployees | -- |
| Industry | Industry | -- |
| Revenue | AnnualRevenue | -- |
| LinkedIn URL | -- | Cleanlist_LinkedIn__c |
Set deduplication rules in Setup > Duplicate Management > Duplicate Rules. Create a rule that matches on email address to prevent enrichment from creating duplicate records. Use the "Alert" action instead of "Block" so reps can review potential duplicates rather than losing data.
Pipedrive Enrichment Playbook
Pipedrive lacks both native enrichment and a built-in workflow automation engine on par with HubSpot or Salesforce. But connecting Pipedrive to Cleanlist is still straightforward using automation rules and Zapier.
Step 1: Connect via Zapier or native integration
Option A: Native integration. In Cleanlist, go to Settings > Integrations > Connect Pipedrive. Authorize with your Pipedrive API token. Cleanlist will read and write Person and Organization records.
Option B: Zapier. Create a new Zap. Set the trigger app to Pipedrive and the action app to Cleanlist. This gives you more flexibility on trigger conditions but adds a dependency on Zapier's infrastructure.
Map Pipedrive's custom fields during setup. Unlike HubSpot and Salesforce, Pipedrive uses custom fields for most enrichment data points since its standard field set is minimal.
Create these custom fields in Pipedrive before connecting (under Settings > Data fields > Person):
- Direct Dial (Phone)
- Seniority Level (Single option)
- Employee Count (Numeric)
- Industry (Single option or text)
- LinkedIn URL (Text)
- Enrichment Confidence (Numeric)
- Last Enriched Date (Date)
Step 2: Set up deal and person triggers
In Pipedrive, go to Automation > Create automation. Pipedrive's automation engine supports basic triggers.
Trigger 1: New person created. When a person is added to Pipedrive (manually, via import, or through a web form), trigger enrichment via webhook. Set the webhook URL to your Cleanlist enrichment endpoint.
Trigger 2: Deal stage change. When a deal moves to a specific stage (e.g., "Qualified" or "Demo Scheduled"), re-enrich the associated person. This ensures you have the latest data before high-value interactions.
Trigger 3: Zapier schedule (for batch). Set up a scheduled Zap that runs daily or weekly. It queries Pipedrive for persons where "Last Enriched Date" is empty or older than 90 days, then sends them to Cleanlist for re-enrichment.
If your Pipedrive plan does not include workflow automation, use Zapier for all three triggers. The trigger events available in Zapier's Pipedrive connector include "New Person," "Updated Person," "New Deal," and "Updated Deal."
Step 3: Configure custom field mapping
Pipedrive's flexible custom field system is actually an advantage here. You control exactly what gets stored and how.
Map each enriched field to a Pipedrive custom field:
| Cleanlist Output | Pipedrive Field | Update Rule |
|---|---|---|
| Verified email | Email (standard) | Overwrite if empty |
| Direct dial | Direct Dial (custom) | Always overwrite |
| Job title | Job title (standard) | Always overwrite |
| Seniority | Seniority Level (custom) | Always overwrite |
| Company size | Employee Count (custom) | Overwrite if empty |
| Industry | Industry (custom) | Overwrite if empty |
| LinkedIn URL | LinkedIn URL (custom) | Overwrite if empty |
| Confidence | Enrichment Confidence (custom) | Always overwrite |
Set the "Last Enriched Date" custom field to update automatically on every enrichment run. This lets you build filtered views in Pipedrive to find stale records that need re-enrichment.
Pro Tip
Create a Pipedrive filter called "Stale Records" with criteria: Last Enriched Date is more than 90 days ago OR is empty. Use this filter as a regular batch enrichment source.
CRM Enrichment Feature Comparison
Choosing the right CRM for enrichment workflows depends on what each platform supports natively. Here is how HubSpot, Salesforce, and Pipedrive compare across the features that matter most for automated enrichment.
| Feature | HubSpot | Salesforce | Pipedrive |
|---|---|---|---|
| Native enrichment | Partial (company only) | None (Data.com sunset) | None |
| API access | All plans | All plans | All plans |
| Workflow automation | Professional+ | All editions (Flow) | Advanced+ (basic) |
| Custom fields | All plans (unlimited) | All editions | All plans |
| Webhook triggers | Professional+ | All editions | Advanced+ |
| Record-triggered flows | Yes (workflows) | Yes (Flow builder) | Limited (automations) |
| Bi-directional sync | Yes | Yes | Yes (via integration) |
| Duplicate management | Built-in | Built-in (Duplicate Rules) | Basic (merge only) |
| Enrichment scheduling | Via workflows | Via scheduled Flows | Via Zapier only |
HubSpot is the easiest to set up. Salesforce is the most customizable. Pipedrive requires the most external tooling but works well once connected.
Ongoing Data Hygiene Automation
Setting up enrichment once is not enough. B2B data decays at 30-40% per year. Job changes, company moves, and email bounces erode your data quality every month. Automated hygiene keeps your CRM accurate without ongoing manual effort.
Monthly re-enrichment
Schedule a monthly re-enrichment workflow that targets records meeting any of these criteria:
- Last enriched more than 90 days ago
- Email bounced since last enrichment
- Job title contains "Former" or company field changed
- Phone number returned "not in service" on last dial
In HubSpot, build this as an active list with these filters and use it as a workflow trigger. In Salesforce, create a scheduled Flow that runs on the first of each month. In Pipedrive, schedule a weekly Zapier run.
Decay detection
Set up alerts for leading indicators of data decay:
- Bounce rate spikes: If your email bounce rate jumps above 3% in a given week, trigger an immediate re-verification of all contacts emailed in that batch.
- Phone disconnect rate: Track the percentage of calls hitting disconnected numbers. A spike above 15% signals stale phone data.
- Job title mismatches: If a rep notes a contact's actual title differs from the CRM, flag the record for re-enrichment and log the discrepancy.
Bounce monitoring
Connect your email sending platform (Outreach, Salesloft, HubSpot sequences) to Cleanlist's bounce monitoring webhook. When an email bounces:
- The webhook fires to Cleanlist
- Cleanlist re-verifies and attempts to find a current email
- If found, the updated email pushes back to your CRM automatically
- The contact is flagged with the date of re-verification
This closed-loop system prevents bounce rate creep without any manual intervention.
Frequently Asked Questions
Which CRM works best with enrichment tools?
HubSpot offers the smoothest enrichment integration experience. Its workflow automation is intuitive, custom properties are unlimited on all plans, and most enrichment tools (including Cleanlist) offer native HubSpot connectors. Salesforce is more powerful but requires more setup. Pipedrive works well with Zapier but lacks the native automation depth of HubSpot or Salesforce.
How do I avoid overwriting good data?
Use conditional update rules. Set most fields to "overwrite if empty" so enrichment fills gaps without replacing data your team already verified. For fields that change frequently (job title, company), use "always overwrite" with a minimum confidence threshold of 80+. For fields your reps manually confirm (direct dials they have called, custom notes), set "never overwrite." Every enrichment tool worth using supports these granular update rules.
Can I enrich existing records in bulk?
Yes. All three CRMs support bulk enrichment of existing records. The fastest approach is to export a filtered list (e.g., all contacts missing phone numbers), upload to Cleanlist for batch enrichment, and re-import the enriched data. For HubSpot and Salesforce, you can also use a workflow or Flow that re-enrolls existing records matching specific criteria. Expect to process 5,000-10,000 records per hour depending on your enrichment plan.
How many credits does CRM enrichment use?
Each contact enrichment uses one credit, regardless of how many fields are returned. Re-enrichment of the same contact uses another credit. Most teams use 1.2-1.5x their total contact count in credits per year -- the base count plus re-enrichments for bounced or stale records. Check your enrichment plan to see credit allocations and per-credit pricing at your volume tier.
Automated CRM enrichment turns incomplete records into actionable data without manual work. Whether you run HubSpot, Salesforce, or Pipedrive, the setup takes under 30 minutes and pays for itself within the first week of cleaner outreach. See which enrichment plan fits your team's volume.