Skip to content

CRM Enrichment Playbooks: HubSpot, Salesforce & Pipedrive Step-by-Step

Step-by-step CRM enrichment playbooks for HubSpot, Salesforce, and Pipedrive. Set up automated data enrichment workflows in your CRM in under 30 minutes.

Victor Paraschiv

Victor Paraschiv

Co-Founder & CMO

Updated 12 min read

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 AI. 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, so email appending on contacts still has to come from somewhere else. 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:

CapabilityHubSpotSalesforcePipedrive
Native contact enrichmentNo (company only)No (Data.com sunset)No
Work email verificationNoNoNo
Direct dial phonesNoNoNo
Job title normalizationNoNoNo
Firmographic appendPartial (Insights)NoNo
Technographic dataNoNoNo
Multi-source coverageNoNoNo

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 25+ 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. Our deeper guide to data enrichment for HubSpot covers field mapping and coverage in more detail.

Step 1: Connect Cleanlist AI to HubSpot

Open your Cleanlist AI dashboard and navigate to Settings > Integrations. Click Connect HubSpot. You will be redirected to HubSpot's OAuth authorization screen.

Grant Cleanlist AI access to:

  • Contacts (read and write)
  • Companies (read and write)
  • Lists (read)

Once authorized, Cleanlist AI auto-maps standard fields:

Cleanlist FieldHubSpot PropertyDirection
Work emailEmailBidirectional
Direct dialPhone numberPush to HubSpot
Job titleJob titlePush to HubSpot
Company nameAssociated companyPush to HubSpot
Employee countNumber of employeesPush to HubSpot
IndustryIndustryPush to HubSpot
LinkedIn URLLinkedIn URL (custom)Push to HubSpot
Confidence scoreCleanlist 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 AI integration action to send the contact to Cleanlist AI 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 AI 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. See our full guide to data enrichment for Salesforce for the object-by-object breakdown.

Step 1: Install the Cleanlist AI package

You have two connection options:

Option A: AppExchange package (recommended). Install the Cleanlist AI managed package from Salesforce AppExchange. This creates custom fields, permission sets, and pre-built Flow templates automatically. Assign the "Cleanlist AI 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 AI API via Zapier. Create a Zap with a Salesforce trigger and Cleanlist AI action. This requires more manual field mapping but avoids package dependencies.

After installation, navigate to Setup > Custom Settings > Cleanlist AI Configuration. Enter your Cleanlist AI 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 AI 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 AI Integration User]." This prevents the enrichment update from re-triggering the Flow.

Batch Enrichment for Existing Records

For your existing database, use Cleanlist AI's bulk enrichment feature. Export a Salesforce report of records missing key fields, upload to Cleanlist AI, 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 FieldSalesforce Standard FieldCustom Field (if needed)
Verified emailEmailCleanlist_Verified_Email__c
Direct dialPhoneCleanlist_Direct_Dial__c
MobileMobilePhone--
Job titleTitle--
Seniority level--Cleanlist_Seniority__c
Company sizeNumberOfEmployees--
IndustryIndustry--
RevenueAnnualRevenue--
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 AI is still straightforward using automation rules and Zapier.

Step 1: Connect via Zapier or native integration

Option A: Native integration. In Cleanlist AI, go to Settings > Integrations > Connect Pipedrive. Authorize with your Pipedrive API token. Cleanlist AI 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 AI. 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 AI 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 AI 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 OutputPipedrive FieldUpdate Rule
Verified emailEmail (standard)Overwrite if empty
Direct dialDirect Dial (custom)Always overwrite
Job titleJob title (standard)Always overwrite
SenioritySeniority Level (custom)Always overwrite
Company sizeEmployee Count (custom)Overwrite if empty
IndustryIndustry (custom)Overwrite if empty
LinkedIn URLLinkedIn URL (custom)Overwrite if empty
ConfidenceEnrichment 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.

FeatureHubSpotSalesforcePipedrive
Native enrichmentPartial (company only)None (Data.com sunset)None
API accessAll plansAll plansAll plans
Workflow automationProfessional+All editions (Flow)Advanced+ (basic)
Custom fieldsAll plans (unlimited)All editionsAll plans
Webhook triggersProfessional+All editionsAdvanced+
Record-triggered flowsYes (workflows)Yes (Flow builder)Limited (automations)
Bi-directional syncYesYesYes (via integration)
Duplicate managementBuilt-inBuilt-in (Duplicate Rules)Basic (merge only)
Enrichment schedulingVia workflowsVia scheduled FlowsVia 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

Export the week's bounced contacts from your email sending platform (Outreach, Salesloft, HubSpot sequences) and run them back through Cleanlist AI. For each bounce:

  1. Cleanlist AI re-verifies the address and looks for a current email across the waterfall
  2. If one is found, the updated email syncs back to your CRM
  3. If none is found, nothing is charged and the contact stays flagged for review

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 AI) 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 AI 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.

Refresh your stalest CRM records

Put your worst records through 25+ providers by hand or from the Chrome extension, then let an agent fill the blank email and phone number on every new contact. A verified email is 1 credit and a phone number is 10. HubSpot and Salesforce sync come with Pro at $89 per seat a month.

Start free trial

14 days of Pro, free: 250 credits, 3 seats, agents, Sequences and Clu in Slack.

Written by Victor Paraschiv

Co-Founder & CMO

Cleanlist AI's Co-Founder and CMO. He runs growth and marketing, and writes here from first-hand experience scaling paid and demand generation across ecommerce and B2B SaaS.

Describe the job once. An agent runs it every week.

Clu turns one sentence into an agent. It searches 1B+ profiles, finds verified emails and phone numbers across 25+ providers, adds the people to your sequence and posts each run to Slack.

An example agent run in Cleanlist AI: Weekly ICP outbound, built by Clu from one sentence.

Weekly ICP outbound

Weekly · Monday 8:00 AM

Ran in 11m 42s

Built by Clu from: “Every week, find 500 new people who match my ICP, get their emails and phones, and add them to Series B outbound.”

  1. Searched 1B+ profiles for new ICP matches500 foundPeople Search
  2. Ran the waterfall across 25+ providers487 emails · 412 phonesWaterfall
  3. Verified every email and phoneSMTP + catch-allVerification
  4. Added them to Series B outbound500 peopleSequences
  5. Posted the run to #pipelineSlackAgents

Friday 4:52 PM15 replies · 5 calls booked

Start free trialSee pricing

14 days of Pro, free: 250 credits, 3 seats, agents, Sequences and Clu in Slack. Then Free at 50 credits a month, or Starter at $49 and Pro at $89 a seat a month.

Tell Clu the job. It runs every week.

Clu builds an agent that searches 1B+ profiles, finds verified emails and phone numbers across 25+ providers, adds the people to your sequence and posts each run to Slack. A verified work email is 1 credit and a phone number is 10.

14 days of Pro, free: 250 credits, 3 seats, agents, Sequences and Clu in Slack. Then Free at 50 credits a month, or Starter at $49 and Pro at $89 a seat a month.