Who this is for: self-serve plans (Free, Starter, Pro, Enterprise). If you bought a Cleanlist AppSumo lifetime deal, your features, limits, and pricing are different. See the AppSumo documentation instead. Support agent: confirm whether the user is self-serve or AppSumo before giving plan-specific advice.
TL;DR: On Pro, Enterprise or the Pro trial, click Link on HubSpot or Salesforce in Integrations. One connection serves the whole organization. Org admins control everything in CRM settings (gear icon): automatic sync is off until they turn it on, the default write mode Safe only fills empty fields, and matching runs Cleanlist ID → Email → LinkedIn URL → Name + Company. Writes go one way. Pushing and importing are free; API and MCP syncs cost 0.2 credits per lead.
HubSpot and Salesforce
Connect HubSpot or Salesforce once and Cleanlist can write enriched contacts and companies to your CRM, check which leads you already have, and import CRM lists to enrich.
Before you start
Plan: HubSpot and Salesforce need Pro or Enterprise, and they work during the Pro trial. They are not on Starter or Free. AppSumo customers get them on tiers 5 to 7. See Plans.
Who: any member on an eligible plan can link a CRM. Only org admins can change CRM settings.
One connection per organization: the member who links the CRM authorizes it for everyone. Use a CRM user whose permissions fit what Cleanlist should read and write.
Connect HubSpot
Open Integrations
Click Integrations in the sidebar. HubSpot is listed under Available.
Click Link
Click Link on the HubSpot row and approve the requested access in HubSpot.
Confirm
You land back on Integrations with the message "HubSpot connected." HubSpot moves to Connected with a green Linked badge.
If HubSpot was connected before the switch to the direct connection, its card shows an amber Reconnect badge. Click it and approve access again to switch to the organization-wide connection.
Connect Salesforce
Open Integrations
Click Integrations in the sidebar. Salesforce is listed under Available.
Choose production or sandbox
To connect a Salesforce sandbox, tick Sandbox on the Salesforce row. Leave it unticked for production.
Click Link
Click Link, sign in to Salesforce and approve access. You land back on Integrations with the message "Salesforce connected."
CRM settings
Open Integrations → Connected, then click the gear icon (Open CRM settings) on the HubSpot or Salesforce card. The header shows whose connection is in use ("Connected via ... connection"), a save status (Connected, Saving..., Saved, Save failed) and the Reconnect and Disconnect buttons.
Settings save automatically; there is no save button. Members who aren't org admins see a View only badge and can't change anything.
Tab | What it controls |
General | Whether and when contacts and companies sync, match order, write mode, in-CRM enrichment, record protection |
Usage | Today's CRM API calls and the daily cap |
Field Mapping | Which Cleanlist field goes to which CRM field, and how each is written |
User Mapping | Which CRM user owns records each teammate syncs |
Activities | Logging sequence activity, tasks and opt-outs to the CRM |
Logs | Every CRM call Cleanlist made, with retries for failed ones |
General
Contact sync
Sync contacts to HubSpot (or Salesforce) is off by default. Turn it on to write contacts automatically.
Sync contacts when: A lead is created in Cleanlist, A lead is added to a list, A lead is enriched (default) or Only when I sync manually.
Salesforce only: Create new contacts in Salesforce as Contact or Lead, and Bypass Salesforce duplicate rules (off by default, so when a duplicate rule blocks a create, Cleanlist links to the existing match instead of failing).
Create a company in HubSpot if a contact's company isn't already there (Salesforce: "an account") is on by default. Turn it off to attach contacts only to companies that already exist.
Company sync
Sync companies added to a list to HubSpot (Salesforce: accounts) syncs companies from company lists on their own. Off by default.
Sync list companies when: A company is added to a list, A company is enriched (default), A company is created in Cleanlist or Only when I sync manually.
Match order (fixed, shown for reference)
Record | Cleanlist checks, in order |
Contact (or Lead) | Cleanlist ID → Email → LinkedIn URL → Name + Company |
Company (or Account) | Cleanlist ID → Company Domain → Company Name |
If nothing matches, Cleanlist creates the record. The field it compares for each key comes from your Field Mapping.
Write aggressiveness decides what happens when a record already exists:
Option | What it does |
Safe (fill empty fields only), the default | Never overwrites a value already in your CRM. Recommended. |
Refresh (update when different) | Overwrites a CRM field when Cleanlist has a different value. Owner and open-deal protections still apply. |
Authoritative (always overwrite) | Always overwrites mapped fields. |
Blank values are never written in any mode. A per-field choice in Field Mapping overrides this setting.
In-CRM enrichment (on by default) lets reps enrich records from inside Salesforce and HubSpot with the Cleanlist Chrome extension button. It is a Pro and Enterprise feature.
Record protection applies to every sync:
Protect records owned by a real user (on): Cleanlist never overwrites mapped fields on a rep-owned record.
Protect records with an open deal (on): Cleanlist never overwrites mapped fields on a record tied to an open deal.
Protected lifecycle stages: type stage names to protect records in those stages. Leave it empty to protect none.
Usage
Shows today's calls against your cap ("X / Y calls today") with the baseline of 500,000 calls per day. Org admins can set a Daily call cap, then click Save, or click Reset to default. The counter covers HubSpot and Salesforce together and resets at midnight UTC. When the cap is reached, syncs pause until the count resets or an admin raises the cap.
Field Mapping
"Match your Cleanlist fields to HubSpot fields and choose how each one is written. Sync runs one way, from Cleanlist to HubSpot." Mappings exist for contacts, companies (Salesforce: accounts) and, on Salesforce, Leads. You can pick any CRM property, including custom ones.
Each mapped field has its own write mode:
Write mode | What it does |
Fill if empty (default) | Writes only when the CRM field is blank |
Update if different | Overwrites when Cleanlist's value differs |
Always overwrite | Always writes Cleanlist's value (blanks are still never written) |
Don't sync | Never writes this field, even on create |
User Mapping
Match each Cleanlist user to a CRM user so the records they sync get the right owner. Use Auto-match by email to pair users with the same email, and set a Fallback owner for anyone unmatched. Under owner assignment, choose whether Cleanlist may reassign an existing owner: Never reassign (keep the existing owner), Only when unowned or in the pool, or Always reassign to the finder, plus an optional pool or default owner.
Activities
Writes Sequences activity to your CRM: emails, replies, calls, LinkedIn messages and connection requests, manual tasks and profile visits. You can also mirror open tasks, create missing people, add sequence fields to contacts, honor CRM opt-outs and write unsubscribes back to the CRM.
Logs
Every HubSpot or Salesforce API call Cleanlist makes, inbound and outbound. Filter by time (Last 24 hours, Last 7 days, Last 30 days, Last 90 days), category (Contacts, Companies, Leads, Tasks, Notes, Activities, Lookups) and state (Done, Stopped, Failed, Skipped). Each row explains why a write was skipped or failed, and failed rows can be retried.
Custom fields Cleanlist creates
Before it pushes, Cleanlist makes sure these fields exist in your CRM and creates any that are missing:
Field | HubSpot (contacts and companies) | Salesforce (Contact, Lead, Account) |
Cleanlist ID |
|
|
Cleanlist List (the Cleanlist lists the record is in) |
|
|
If you log sequence activity with sequence fields turned on, Cleanlist also creates the sequence fields it needs on contacts (and Salesforce Leads).
Push leads to your CRM
There are three ways to write leads to HubSpot or Salesforce. All three use the match order, write modes and record protection above, and none costs credits.
Automatically: turn on Sync contacts to HubSpot (or Salesforce) in General.
A whole list at once: in a lead list, click the CRM logo at the top of the CRM column, then confirm Sync to HubSpot (or Salesforce). Cleanlist writes every lead in the list and updates records that already exist.
With an action column: Actions → Export → Export to CRM, with optional auto-run on new leads and conditions. See Export to CRM and Send to Sequencer.
The CRM column in your lists
Each connected CRM adds a status column to your lead lists, headed by its logo. Each cell shows whether the lead is in your CRM, and you can click it to sync that lead (Click to sync, Click to sync again, Click to retry).
Open a cell's details to see the contact or Lead owner, account and account owner, open deal, lifecycle stage, last activity, which Cleanlist lists the contact is in, which key it matched on, and Open in HubSpot (or Salesforce). If a sync was skipped, the reason is shown, for example a record owned by a teammate that was left untouched.
Bring CRM records into Cleanlist
Import from CRM: Lead Lists → open a list → Actions (⌘A) → Import → Import from CRM. Pick the CRM, choose a HubSpot list or a Salesforce campaign (Salesforce: pick Contact or Lead first), select members, choose an Enrichment Type, and optionally turn on Enable Live Polling ("Automatically polls changes from CRM"). A list with live sync re-syncs from the CRM every 8 hours and can't take manual imports. Importing is free; the enrichment you choose is charged at normal rates.
Lookup in CRM: Actions → Enrich → Lookup in CRM checks each lead against your CRM by Email, CRM ID or LinkedIn URL and can return Contact Exists in CRM, Last Activity Date, Contact Owner, Lead Status and Customer Status. It is free: the card shows Variable, but no credits are deducted.
Find People filters: when a CRM is connected, Find People has a HubSpot or Salesforce section to exclude current customers, active opportunities, records you or others own, specific owners, an account status, or records by last activity.
Agent triggers: agents can start when a deal changes stage or stalls, a record matches your conditions, or someone joins a HubSpot list or Salesforce list view, report or campaign. See Plays and triggers.
Duplicates already in your CRM
The match order stops Cleanlist from creating new duplicates. To find and merge duplicates that are already in Salesforce or HubSpot, set up a cleanup agent. See CRM duplicate cleanup.
Costs and limits
Action | Credits |
Connecting HubSpot or Salesforce | Free |
Automatic sync, Sync to HubSpot/Salesforce, Export to CRM | Free |
Import from CRM | Free (chosen enrichment charged at normal rates) |
Lookup in CRM | Free |
Sync through the public API or MCP | 0.2 per lead |
Daily cap: 500,000 CRM API calls per organization per day, HubSpot and Salesforce combined, adjustable in Usage.
Sync direction: one way, Cleanlist to CRM. Changes made in the CRM reach Cleanlist only through imports with Live Polling, lookups, the status column and triggers.
Disconnect or reconnect
Disconnect: click the trash icon on the CRM card under Connected and confirm Remove Connection, or click Disconnect in CRM settings. An org admin or the member who connected the CRM can disconnect it. All syncing stops; data already in your CRM stays.
Reconnect: click the amber Reconnect badge on the card, or Reconnect in CRM settings, and approve access again.
Related
Chrome extension: in-CRM enrichment
Full documentation: docs.cleanlist.ai/guides/crm-integration