---
title: "Migrate from Salesforce to HubSpot | ClonePartner"
description: "The native HubSpot-Salesforce connector is a sync tool, not a migration engine. It cannot handle historical Cases, file attachments, custom object associations,"
source: Salesforce
target: HubSpot
canonical: "https://clonepartner.com/migrate/salesforce-to-hubspot/"
---

# Salesforce → HubSpot migration

Seamless Salesforce to HubSpot migration — all records moved with accuracy and care.

## Why teams migrate from Salesforce to HubSpot

The native HubSpot-Salesforce connector is a **sync tool**, not a migration engine. It cannot handle historical Cases, file attachments, custom object associations, or retroactive backfill of ticket threads. Salesforce stores files across a three-object model (ContentVersion/ContentDocument/ContentDocumentLink) while HubSpot has **no direct attachment object**.



The fundamental gap is architectural: Salesforce Cases use Status picklists tied to Support Processes with Record Types, while HubSpot Tickets use Pipeline Stages with Open/Closed categories — requiring exact internal stage ID mapping, not label matching.



Every migration requires API-based extraction using Bulk API with PK Chunking for large objects, a three-step file workflow (upload to Files API, create Note with hs_attachment_ids, associate with Ticket), and batch CRM object endpoints to bypass HubSpot's 500-import-per-day ceiling.

## Key migration challenges

- **File Attachment Workflow** — Each file requires three sequential API calls — upload to HubSpot Files API, create Note with hs_attachment_ids, then associate with the target Ticket. No batch upload support exists.
- **Pipeline Stage Mapping** — Salesforce Case Status tied to Support Process must map to HubSpot pipeline stage internal IDs. Mismatches cause import failures — HubSpot rejects tickets with non-existent stage values.
- **Import Limit Ceiling** — HubSpot's hard 500-imports-per-24-hour limit blocks chunked CSV approaches. Batch CRM object APIs must be used instead for relational data.
- **Timestamp Preservation** — Without explicit hs_timestamp on every engagement, HubSpot defaults to import date — destroying historical reporting and ticket timeline chronology.
- **PK Chunking Requirement** — Large objects like EmailMessage and ContentVersion with 10M+ records require PK Chunking to prevent QUERY_TIMEOUT errors during Salesforce extraction.

## What breaks during migration

- **Cases → Tickets** [Workaround] — Core field mapping is direct but pipeline stage IDs must match exactly; Record Types have no HubSpot equivalent
- **CaseComments → Notes** [Workaround] — Requires individual API calls per comment with hs_timestamp for original date preservation
- **EmailMessages → Email Engagements** [Breaks] — Native threading is lost; existing emails cannot be updated post-import; first write must be correct
- **ContentVersion/Files → Files + Notes** [Breaks] — Three-API-call process per file with no batch support; inline images require URL rewriting
- **Custom Objects** [Breaks] — Native connector limited to 10 custom objects; Enterprise-only sync; associations don't carry over
- **Pipeline Stages/Status** [Workaround] — Status picklist to pipeline stage ID mapping must be exact; HubSpot rejects unknown values
- **Record Types** [Workaround] — No HubSpot equivalent; must map to separate Pipelines or flatten into a custom property
- **Person Accounts** [Breaks] — No HubSpot equivalent; must split into separate Contact and Company records with associations
- **Picklist Values** [Workaround] — Format differences (spaces, case, special characters) cause silent import failures
- **Case Owner/Queues** [Workaround] — Queue owners have no HubSpot equivalent; require default user assignment or team mapping

## What we migrate

### Data Types

- **Custom Fields** — Any custom objects and fields configured in your CRM
- **Deals & Opportunities** — Sales pipeline data with stages and close dates
- **Accounts/Companies** — Business-level entities and associated data
- **Leads & Contacts** — All person-level records including metadata

### Migration Filter

- **Pipeline/Stage Filter** — Select records based on deal stages or pipelines
- **Owner Selection** — Migrate records assigned to specific owners or reps
- **Time Range** — Migrate records from a specific time period
- **Contact Type** — Filter by lead, contact, or account

## Complete technical guide

For a deep-dive into the technical process, data mapping, and step-by-step migration workflow, read our full guide: [Salesforce to HubSpot Migration: Pipeline, Tickets & Attachments](https://clonepartner.com/blog/salesforce-to-hubspot-migration-pipeline-tickets-attachments/).

## Frequently asked questions

### Who can view my data?

For each migration project, you'll be assigned a migration engineer. Only the migration engineer can view your data. No one else at ClonePartner can view your data.

### Can I sign an NDA?

If you are reaching out to us via one of our partners, we already have an NDA signed with them that unilaterally applies to all their customers. If you are reaching us directly and need an NDA signed, we'll be happy to sign your NDA or ours.

## Get a fixed-price quote

[Talk to an engineer](https://cal.com/clonepartner/meet?duration=30&utm_source=xtoy&utm_medium=button&utm_campaign=demo_bookings&utm_content=cta_click&utm_term=demo_button_click) about your Salesforce → HubSpot migration.
