New: API Reference docs are live — integrate Cleanlist enrichment into your apps. View API docs →
Guides
CRM Integration Setup

TL;DR: Cleanlist integrates with HubSpot (via Unified.to, per user), Salesforce (direct OAuth, org-level, sandbox supported, 8-hour polling sync), and Lemlist (org-level sequencer). Connect from the Integrations page, then push enriched leads to your CRM and use the crm_contact_lookup Smart Column to spot contacts you already have.

CRM Integration Setup

Connect Cleanlist with your CRM or sales-engagement tool to push enriched leads without manual exports — and to see which leads already exist in your CRM. This guide covers all three supported integrations.

Supported integrations

IntegrationTypeConnect methodScope
HubSpotCRMOAuth via Unified.toPer user
SalesforceCRMDirect OAuth (sandbox supported)Org-level
LemlistSales engagement / sequencerAPI keyOrg-level

All three are connected from the Integrations page in the Cleanlist portal.

HubSpot

HubSpot connects through Unified.to and is scoped per user — each teammate connects their own HubSpot.

Open Integrations and connect HubSpot

Go to the Integrations page, find the HubSpot card, and click Connect.

Authorize via OAuth

A HubSpot OAuth window opens. Log in, review the requested CRM and marketing-list permissions, and grant access. No passwords are stored — Cleanlist holds only the connection authorized through Unified.to.

Confirm the connection

You're redirected back to Cleanlist and the HubSpot card shows as connected.

What you can do with HubSpot:

  • Push enriched leads from a list to HubSpot as contacts, with field mapping
  • Save reusable field-mapping templates (Cleanlist fields → HubSpot properties)
  • Import members from HubSpot marketing lists into a Cleanlist list
  • Run the crm_contact_lookup column against HubSpot (see below)

Salesforce

Salesforce connects via direct OAuth at the organization level — one connection serves the whole org. Sandbox environments are supported.

Open Integrations and connect Salesforce

Go to the Integrations page and click Connect on the Salesforce card.

Choose production or sandbox

Pick your environment: production (login.salesforce.com) or sandbox (test.salesforce.com).

Authorize via OAuth

Log in to Salesforce and approve access (api, refresh, and offline access scopes). Because it's a direct OAuth connection, Cleanlist refreshes the token automatically as needed.

What you can do with Salesforce:

  • Push enriched leads to Salesforce as Contacts or Leads (choose the sObject type when migrating)
  • Enable sync on a list so new and updated records flow in
  • Run the crm_contact_lookup column against Salesforce

Sync cadence: Salesforce lists with sync enabled are polled by a Temporal schedule on an 8-hour interval, importing records created or updated since the last poll.

Org-level connections (Salesforce and Lemlist) can only be disconnected by the user who originally connected them.

Lemlist

Lemlist is a sales-engagement / sequencer tool. It connects at the organization level using an API key (no OAuth).

Open Integrations and connect Lemlist

Go to the Integrations page and click Connect on the Lemlist card.

Paste your API key

Enter your Lemlist API key in the dialog. The connection is created for your whole organization.

What you can do with Lemlist:

  • Push enriched leads into a Lemlist campaign (provide the campaign ID when migrating leads)

Pushing leads to your CRM

Once connected, push enriched leads from any list:

Select leads

Open a lead list and select the leads you want to send.

Choose the destination

Pick the connected integration (HubSpot, Salesforce, or Lemlist). For Salesforce, choose Contact or Lead; for Lemlist, choose the target campaign.

Map fields and confirm

For HubSpot and Salesforce, map Cleanlist fields to your CRM properties (or apply a saved mapping template), then confirm. Cleanlist tracks which leads were migrated so it can update existing records instead of creating duplicates.

Check if a lead is already in your CRM

The crm_contact_lookup Smart Column checks each lead against your connected CRM and reports whether the contact already exists.

  • Matches on: email, CRM contact ID, or LinkedIn URL
  • Object type: Contact or Lead
  • Optional signals: depending on your CRM, it can also surface fields like last activity date, contact owner, lead status, or customer status

Add it from the column menu on any lead list to dedupe against your CRM before you enrich or reach out. Read more in the Smart Columns recipes.

Disconnecting an integration

To disconnect, go to the Integrations page, find the connected integration, and click Disconnect. For Salesforce, disconnecting also cancels its polling schedules and revokes the token. Data already in your CRM is unchanged.

Learn More