# HubSpot Salesforce integration

*HubSpot → Salesforce*

**In short:** A HubSpot to Salesforce integration keeps your marketing and sales CRMs in agreement: it maps HubSpot contacts, companies, and deals onto Salesforce leads, accounts, contacts, and opportunities, decides which system owns each field, and matches records so the same person is not created twice. Done properly it is not a one-off field mapping but a continuous, idempotent pipeline that reconciles lifecycle stage against opportunity stage, respects Salesforce API limits and required fields, and resolves conflicts by a rule you agreed rather than by whichever save happened last.

## What a HubSpot to Salesforce integration actually does

HubSpot is where marketing lives: forms, email engagement, lifecycle stage, campaign attribution, the score that says a contact is ready. Salesforce is where the deal lives: the account of record, the opportunity, the forecast, the rep's pipeline. Both claim to hold the customer, and the moment a lead becomes an opportunity, they disagree about who that person is and what is true about them.

A HubSpot to Salesforce integration keeps the two in agreement without anyone re-keying. It matches records so marketing and sales are looking at the same person, decides field by field which system is authoritative, and moves attributes and events across in near real time so a rep sees the marketing context and a marketer sees whether the deal closed.

## What data moves

| HubSpot object / event | Becomes in Salesforce | Notes |
| --- | --- | --- |
| Contact (lifecycle: lead/MQL) | Lead | Salesforce requires LastName and Company on a Lead |
| Contact (post-conversion) | Contact + Account | Re-pointed after Salesforce lead conversion |
| Company | Account | Matched on domain or an ID mapping, not name |
| Deal | Opportunity | Stage and amount usually Salesforce-owned |
| Contact-to-Company association | OpportunityContactRole / Account link | HubSpot associations map to Salesforce relationships |
| Engagements (email, call, meeting, note) | Task / Activity | Marketing touchpoints surfaced on the record |
| Owner | User | Requires a HubSpot owner to Salesforce user map |
| Lifecycle stage | Lead Status / Opportunity Stage | Must not move a record backwards |

The exact object mapping, ownership rules, and matching keys are agreed once and encoded in the pipeline. After that nobody reconciles them by hand.

## The details that break naive syncs

A packaged connector or a point-to-point script gets you the happy path and leaves the expensive edges on your desk:

- **Lead versus Contact.** HubSpot has one contact record; Salesforce has Leads that convert into a Contact plus an Account. A sync that ignores conversion creates orphans and duplicates on exactly the records your sales team cares about most.
- **Deduplication.** HubSpot enforces email uniqueness; Salesforce does not. Matching on email alone will eventually attach marketing data to the wrong person. A record-ID mapping table is what keeps identity stable.
- **Picklists and property types.** Salesforce picklists are restricted; a HubSpot dropdown value that does not exist in the target picklist is rejected. Values have to be mapped, not passed through.
- **API limits.** Salesforce enforces a daily API request allowance tied to your edition, and HubSpot throttles per ten-second window and per day. High volume has to run through Bulk API 2.0 and back off gracefully, not hammer the REST endpoint until it 429s.
- **Ownership and conflict.** Without a per-field ownership rule, last write wins - and a HubSpot form fill will happily overwrite a value a rep just corrected in Salesforce. Ownership has to be defined per property.
- **Multi-currency.** Salesforce opportunities carry a CurrencyIsoCode and a corporate conversion rate. A deal amount pushed without its currency is meaningless in a multi-currency org.
- **Idempotency.** Retries and re-runs happen. Without a stable key per record, a replay creates a second Lead. The pipeline has to know it already synced a record and update rather than insert.

## How we build and run it

We treat this as a pipeline, not a middleware subscription you configure and forget. HubSpot changes are pulled by webhook or on a schedule, validated, matched against the mapping table, transformed into your agreed Salesforce shape, and written through the Bulk or REST API with back-off and partial-failure handling. Salesforce-owned fields flow the other way on the same footing.

The pipeline is idempotent: every record carries a stable identifier and resolves through the mapping table, so a retry or replay updates the existing Lead, Contact, or Opportunity instead of creating a duplicate. It runs on cloud-native, fully EU-hosted AWS infrastructure, so contact and account data never leaves the EU - which keeps your DPA / AVV and GDPR position clean.

Then we keep it running. Monitoring, alerting, incident response, and - critically - watching HubSpot and Salesforce for API deprecations, rate-limit changes, and new required fields are our responsibility under contract. You get a named owner and an SLA, not a connector that fails quietly until a rep notices a lead never arrived.

## When this integration is worth building

If your setup is standard - contacts, companies, and deals mapping cleanly to leads, accounts, and opportunities - HubSpot's native Salesforce connector is genuinely a good fit and we will say so. A managed pipeline earns its place when you have custom objects on both sides, per-field ownership rules the connector cannot express, non-trivial lead conversion logic, multi-currency opportunities, high enough volume to hit API limits, or a revenue operations team that is tired of debugging why a sync silently stopped. At that point the outcome is worth owning, not configuring.

## Frequently asked questions

### Isn't HubSpot's native Salesforce connector enough?

For a straightforward setup it often is, and if that is your situation we will tell you so. The native connector handles standard object sync and inclusion lists well. It gets strained when you have custom objects on both sides, non-trivial lead-to-contact conversion logic, field-level ownership rules that differ per property, multi-currency opportunities, or a need to sync data the connector does not expose. A managed pipeline earns its place exactly where the packaged connector stops.

### How do you stop the same person being created as a duplicate?

Matching logic, agreed with you up front. HubSpot treats email as a unique key; Salesforce does not, and splits people across Leads and Contacts. We match on email first, then fall back to a record-ID mapping table the pipeline maintains, so a HubSpot contact resolves to the correct existing Lead or Contact instead of spawning a new one. The mapping is what keeps the two systems pointing at the same person over time.

### Which direction does data flow?

Whichever each field needs. Typically marketing attributes and engagement flow HubSpot to Salesforce, while opportunity and account-of-record data flow Salesforce to HubSpot. We define ownership per field, not per record, so lifecycle stage can be HubSpot-owned while deal amount is Salesforce-owned. Conflicts resolve by that rule rather than by last write wins.

### How do you handle the Lead versus Contact model?

HubSpot has no Lead object - it has one contact record with a lifecycle stage. Salesforce splits that into Lead, then Contact plus Account after conversion. We map lifecycle stage to the right Salesforce object and status, keep a HubSpot contact aligned with its Lead until conversion, then re-point it at the resulting Contact and Account. The conversion event is the moment naive syncs lose track of a record.

### Who operates it once it is live?

We do. The pipeline runs on cloud-native, fully EU-hosted infrastructure that we monitor. When HubSpot or Salesforce changes an API, deprecates an endpoint, or shifts a rate limit, that is our problem to fix under contract - not something your revenue operations team discovers when sync silently stops. You get a named owner, alerting, and an SLA rather than a middleware subscription nobody watches.

## Related integrations

- [HubSpot ↔ Intercom](https://seamless.engineering/integrations/hubspot-intercom/): HubSpot Intercom integration
- [HubSpot ↔ Mailchimp](https://seamless.engineering/integrations/hubspot-mailchimp/): HubSpot Mailchimp integration
- [HubSpot ↔ Pipedrive](https://seamless.engineering/integrations/hubspot-pipedrive/): HubSpot Pipedrive integration
- [Salesforce ↔ ActiveCampaign](https://seamless.engineering/integrations/salesforce-activecampaign/): Salesforce ActiveCampaign integration
- [Salesforce ↔ Marketo](https://seamless.engineering/integrations/salesforce-marketo/): Salesforce Marketo integration
- [Salesforce ↔ Pardot](https://seamless.engineering/integrations/salesforce-pardot/): Salesforce Pardot integration

## Browse by system

- [All HubSpot integrations](https://seamless.engineering/integrations/hubspot/)
- [All Salesforce integrations](https://seamless.engineering/integrations/salesforce/)
- [HubSpot API changelog](https://seamless.engineering/api-changelog/hubspot/): 8 breaking changes and 2 deprecations in the last 90 days
- [Salesforce API changelog](https://seamless.engineering/api-changelog/salesforce/): No breaking changes or deprecations in the last 90 days

## Request a scoping call

Need this integration built and permanently operated? Tell us which systems connect and what data has to move. Fixed-price scoping quote within 48 hours.

- Email: hello@seamless.engineering
- Contact form: https://seamless.engineering/#contact
