> ## Documentation Index
> Fetch the complete documentation index at: https://docs.growthxai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CRM Sync: HubSpot, Pipedrive and Salesforce

> Push real conversations into your CRM, pull lists back out, and keep customers off your outreach lists.

Connect under **Settings → Integrations** (Managers). Click **Connect**, sign in to the CRM and approve access. A CRM whose connection isn't available on your plan shows as not available.

The sync runs **every 5 minutes**. **Sync now** runs it immediately.

## Who gets synced

This is the first decision, and the most important one.

| Rule                                 | Who is sent to the CRM                                                         |
| ------------------------------------ | ------------------------------------------------------------------------------ |
| **Only leads who replied** (default) | The first time a lead replies, on LinkedIn or by email                         |
| **Only interested leads**            | Once a reply is classified interested, a meeting is booked, or the deal is won |
| **Everyone enrolled**                | As soon as a lead enters a sequence                                            |

<Info>
  The default is deliberate. The usual complaint about outreach-to-CRM connectors is that they fill the CRM with thousands of cold contacts nobody has spoken to — which makes the CRM harder to use and, on HubSpot, can push you into a more expensive contact tier. With the default, your CRM stays a list of real conversations.
</Info>

Two things to know: once a person is linked to a CRM record they stay in sync whatever the rule says, and changing the rule is **not retroactive**.

## What gets pushed

| When this happens here                                      | This happens in the CRM                                                                                                             |
| ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| A lead qualifies under the rule                             | The person is created, or matched to an existing record by email, then by LinkedIn URL                                              |
| A message or email is sent or received                      | Logged on the person's timeline with the sequence and step it came from, for example *LinkedIn message sent · Founders Q3 · Step 2* |
| A person is synced for the first time                       | One note, **Conversation so far**, carries up to 15 earlier messages, so the record doesn't start mid-thread                        |
| The lead's stage changes                                    | The **Outreach stage** field is updated, and the mapped CRM stage is set                                                            |
| A reply is classified interested, with **Create a deal** on | One deal is created. Never a second one.                                                                                            |
| A meeting is booked                                         | A note with the time, and the stage mapped to *meeting*                                                                             |

Turn **Log messages on the timeline** off if you only want the contact record, not the conversation.

### How each CRM stores it

|                | Person                                                                    | Company                                    | Timeline                     | Deal                                          |
| -------------- | ------------------------------------------------------------------------- | ------------------------------------------ | ---------------------------- | --------------------------------------------- |
| **HubSpot**    | Contact                                                                   | Company, matched by email domain then name | Communication, email or note | Deal in the first stage of the first pipeline |
| **Pipedrive**  | Person                                                                    | Organisation, matched by name              | Note                         | Deal                                          |
| **Salesforce** | Lead by default; an existing Contact with the same email is always reused | Account (contacts only)                    | Completed task               | Opportunity (contacts only)                   |

<Warning>
  **We do not overwrite your CRM data.** On a person who already existed, we write only the fields we own: Outreach stage, LinkedIn URL, and last intent / sequence / sender if you mapped them. Name, email, title and company are written only when we create the person.
</Warning>

## Field and stage mapping

Leave both empty and sensible defaults are used — `firstname`/`lastname`/`email`/`jobtitle`/`company` on HubSpot, the equivalents on Pipedrive and Salesforce.

If you save your own mapping, it **replaces** the defaults, so include every field you want.

* Empty values are never sent. We never blank one of your fields.
* A mapped property that doesn't exist is left out, and the record still saves.
* Stage mapping is keyed by stage kind: new, contacted, connected, replied, interested, meeting, won, lost. HubSpot has defaults; Pipedrive and Salesforce start empty, because deal stage ids and lead statuses differ per account.
* A deal we created follows **won** and **lost** on its own.
* HubSpot only moves a lifecycle stage **forward** through its API. Backwards moves are ignored on their side.

## Pulling from the CRM

**Import a list** brings a HubSpot list, a Pipedrive people filter, or a Salesforce list view or campaign in as leads.

Leads are matched by LinkedIn URL or email, so nobody is duplicated. People with neither are skipped and counted. Up to 5,000 per run — run it again for a larger list. Imported leads carry the source `crm:hubspot` (or `crm:pipedrive`, `crm:salesforce`) and stay linked to their record.

## Never contact customers or open deals

Turn on **Keep customers and open deals on the blacklist** and every 6 hours we read from the CRM:

| CRM            | What counts                                                                                         |
| -------------- | --------------------------------------------------------------------------------------------------- |
| **HubSpot**    | Lifecycle stage Customer, plus the contacts and companies on every open deal                        |
| **Pipedrive**  | People and organisations on open and won deals                                                      |
| **Salesforce** | Accounts whose type starts with *Customer* and their contacts, plus everyone on an open opportunity |

Their emails, company domains and company names go onto your [blacklist](/crm-lead-management/crm-features-use-cases/suppressions) with the source `crm:<provider>`. Free mail domains are never added as a domain.

These entries block enrolment and block sending, and **delete nothing** — the lead, the timeline and the chat all stay. Entries that stop being customers are removed at the next refresh. Entries you added by hand or by CSV are never touched.

## The sync log

Every record shows its own sync history: what was pushed, when, and the exact error if the CRM refused it. Reviewers describe competitors' connectors as opaque; this is the answer to that.

## Disconnecting

**Disconnect** stops the sync and removes our access token. Nothing is deleted on either side. You can connect again at any time, and leads that were linked before pick up where they left off.

## Before there is a full integration

Two smaller options work today:

* **[BCC to CRM](/email-management/email-deliverability#bcc-to-your-crm)** — all three CRMs log email from a BCC address.
* **[Webhooks and the API](/integrations-api/automation-recipes)** — for anything bespoke.

## Related articles

* [Suppressions and Blacklists](/crm-lead-management/crm-features-use-cases/suppressions)
* [The Public API](/integrations-api/public-api)
* [Automation Recipes](/integrations-api/automation-recipes)
