Skip to content
adapters.io

Salesforce HubSpot integration your RevOps team can trust

The Salesforce HubSpot integration from Adapters keeps contacts, companies, and opportunities aligned between both CRMs with field-level mapping and conflict rules, so marketing and sales always see the same customer record.

No credit card required.

Field mapping auto-plugged · tap a port to rewire

5 sample records ready

Last updated August 2026

What running Salesforce to HubSpot by hand costs you

  • Native sync tools silently skip records that fail validation.
  • Duplicate contacts multiply every time both teams import lists.
  • Lifecycle stages in HubSpot never match opportunity stages in Salesforce.

The field mapping, out of the box

These cables are pre-wired when you pick the pair. Rewire any of them, or add your own, in the same visual data mapping tool you use for every adapter.

Input / SALESFORCE

Contact.Email
contact.email
Account.Name
company.name
Opportunity.StageName
deal.dealstage
Opportunity.Amount
deal.amount
Contact.OwnerId
contact.hubspot_owner_id

Transforms included

Stage names map through a lookup table you control; owners resolve by email so records land with the right rep.

Salesforce to HubSpot: the API limits, the matching problem, and what two-way sync really costs

Syncing two CRMs is not a data movement problem, it is an agreement problem: two systems each believe they own the customer record. Below: the published API ceilings on both sides, how records get matched when neither system knows the other's IDs, what happens when both sides edit the same field, and the fields that never map cleanly. HubSpot documentation read 15 August 2026, Salesforce developer limits read 12 August 2026.

The API ceilings on both sides, and which one you hit first

HubSpot is the tighter side for throughput. A privately distributed app is capped at 100 requests per 10 seconds on Free and Starter, and 190 per 10 seconds on Professional and Enterprise, with daily ceilings of 250,000, 625,000 and 1,000,000 requests respectively. A public OAuth app is limited to 110 requests every 10 seconds per installing account. Salesforce is more generous per call but stricter per day: daily API calls run to 100,000 plus 1,000 per license on Enterprise and Professional, and only 15,000 on a Developer edition, with just 25 concurrent long-running requests in production. The practical read: HubSpot governs how fast a backfill can run, Salesforce governs how many separate operations you can afford per day. Any sync that issues one API call per record will hit both.

Batch endpoints are the difference between an hour and a week

For the initial load, per-record calls are the wrong shape entirely. HubSpot batch endpoints accept up to 100 records per request, so 200,000 contacts is 2,000 calls rather than 200,000. On the Salesforce side, Bulk API 2.0 ingests up to 150,000,000 records per 24 hours, with a job payload cap of 150 MB base64 encoded, which means keeping raw CSV under roughly 100 MB per job. Bulk API 1.0, if you are still on it, caps at 10,000 records or 10 MB per batch. Getting this right is the single largest factor in how long a first sync takes, and it is invisible on every feature comparison table.

The matching problem: neither system knows the other's IDs

This is where CRM syncs actually fail. Salesforce identifies a contact by an 18-character Id, HubSpot by a numeric vid, and neither means anything to the other. Email is the usual matching key and it is imperfect: people change jobs, shared inboxes such as billing@ collapse several records into one, and one person legitimately appears under two addresses. The fix is to write the foreign key back on the first sync. Store the HubSpot record ID in a custom Salesforce field and the Salesforce Id in a HubSpot property, then match on that field forever after. Matching on email is the fallback for records created since the last run, not the permanent strategy. Skip this step and you get duplicates that multiply on every subsequent run.

Two-way sync means choosing who wins, before the conflict happens

Bidirectional sync sounds like a feature and behaves like a policy decision. If a rep edits a phone number in Salesforce and a marketer edits the same field in HubSpot between two sync runs, something has to lose. Last-write-wins is the default nearly everywhere and it is genuinely dangerous on fields such as lifecycle stage or owner, where the losing edit was deliberate. The workable pattern is per-field ownership rather than per-record: marketing attribution and email engagement flow HubSpot to Salesforce, deal stage and amount flow Salesforce to HubSpot, and only a small set of genuinely shared fields sync both ways. Decide that on a whiteboard with both teams before configuring anything.

The fields that never map cleanly

Four categories cause most of the mapping work. Picklists and stages rarely share vocabulary, so Salesforce opportunity stages need an explicit lookup table onto HubSpot deal stages rather than a string copy. Owners are user references on both sides with different IDs, so resolve them by email address and decide what happens when no matching user exists. Currency and amounts need a fixed decimal treatment and a decision about multi-currency, because Salesforce can carry both a record currency and a corporate one. Formula and rollup fields are computed in Salesforce and cannot be written back, so anything derived from them must be recomputed on the HubSpot side or left out. Salesforce also caps a single field at 131,072 characters and a whole record at 400,000, which long notes fields can exceed.

How Adapters handles this lane, and where it does not fit

Adapters runs scheduled syncs with visual field mapping, a lookup table for stage and picklist translation, matching on a stored foreign key rather than email alone, retries, alerting on the run that did not happen, and per-record error logs, on a flat monthly price from $49 rather than a per-record meter. That suits RevOps teams whose requirement is a defined set of objects kept in agreement on a schedule they choose. It is not the right pick if you need sub-minute propagation between the two CRMs, if you want a full master data management layer with survivorship rules across more than two systems, or if the project also needs forty other SaaS sources, where connector-catalog breadth matters more than a predictable bill.

How it goes live

Three steps, minutes end to end, covered by flat data integration pricing from $49 a month.

STEP 01

Pick the pair

Connect Salesforce and HubSpot with scoped credentials. About a minute each.

STEP 02

Confirm the mapping

The cables above are pre-wired. Adjust any field, preview the transform on sample records, done.

STEP 03

Schedule the sync

Hourly down to every minute, with retries, alerting, and a full log on every run.

Try it in the live demo Preloads SALESFORCE → HUBSPOT with sample records

Salesforce to HubSpot sync: common questions

How do I sync Salesforce and HubSpot?

Decide which system owns each field first, then map contacts, companies, and opportunities to deals and let the sync run on a schedule. Ownership rules are what stop the two CRMs overwriting each other every cycle, which is the failure mode most native syncs hit.

Is the Salesforce HubSpot sync two-way?

Yes, and you set the direction per field rather than per object. Marketing fields can flow from HubSpot to Salesforce while opportunity stage and amount flow the other way, so neither team loses the record they are accountable for.

What happens to records that fail validation in Salesforce?

They are logged per record with the exact validation rule that rejected them, then retried with backoff. Native syncs commonly drop these silently, which is how a rep finds a HubSpot deal with no Salesforce opportunity behind it weeks later.

How do you stop duplicate contacts between Salesforce and HubSpot?

Match on email first and on a stored external ID second, so a record created in either system finds its counterpart instead of creating a new one. Records that match on neither are held for review rather than inserted blind.

How does the Salesforce to HubSpot sync work?

The Salesforce HubSpot integration from Adapters keeps contacts, companies, and opportunities aligned between both CRMs with field-level mapping and conflict rules, so marketing and sales always see the same customer record.

Is there a prebuilt Salesforce connector for HubSpot?

Yes. This Salesforce to HubSpot connector ships prebuilt: the field mapping is wired the moment you pick the pair, transforms are included, and you can try it against sample records in the live demo. No code or engineering sprint required.

How much does the Salesforce HubSpot integration cost?

Pricing is flat and monthly: Starter at $49, Growth at $149, Scale at $399. Every plan includes this pair, visual field mapping, and per-record logs. There are no per-task or per-row fees, so the bill stays the same as volume grows.

How often can Adapters sync Salesforce to HubSpot?

Hourly on Starter, every 5 minutes on Growth, and down to every minute on Scale. Failed records retry automatically with backoff, and alerting plus a full per-record log come standard on every run.

Do I need to write code to connect Salesforce and HubSpot?

No. Fields are auto-mapped the moment you pick the pair, and you can rewire any mapping visually before the first sync. Stage names map through a lookup table you control; owners resolve by email so records land with the right rep.

More pairs from the API connector library

stripe quickbooks integration shopify netsuite integration airtable google sheets sync postgres to snowflake sync shopify quickbooks integration salesforce netsuite integration paypal quickbooks integration square quickbooks integration stripe netsuite integration hubspot quickbooks integration quickbooks to xero migration shopify xero integration salesforce to snowflake integration square netsuite integration hubspot xero integration salesforce to bigquery integration postgres to bigquery netsuite to snowflake integration quickbooks to bigquery integration stripe to snowflake integration shopify to snowflake integration quickbooks to snowflake integration hubspot to snowflake integration netsuite to bigquery integration stripe to bigquery integration shopify to bigquery integration paypal to snowflake integration square to snowflake integration square to bigquery integration netsuite to postgres integration salesforce to postgres integration xero to snowflake integration hubspot to bigquery integration xero to bigquery integration paypal to bigquery integration stripe to postgres integration snowflake to bigquery migration shopify to postgres integration hubspot to postgres integration bigquery to snowflake migration quickbooks to postgres integration xero to postgres integration square to postgres integration paypal to postgres integration snowflake to postgres mysql to postgres migration mysql to snowflake redshift to snowflake migration mysql to bigquery sql server to snowflake sql server to postgresql migration

Browse the full api connector library, or request a pair you do not see.

Salesforce and HubSpot, finally in agreement

Map the pair once and let it sync on schedule. Flat price from $49 a month, no per-task fees.

Try the live demo

No credit card required.