Helpdesk migration
Field-level mapping, validation, and rollback between HubSpot Service Hub and Salesforce Service Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Service Cloud.
HubSpot Service Hub
Source
Salesforce Service Cloud
Destination
Compatibility
12 of 14
objects map 1:1 between HubSpot Service Hub and Salesforce Service Cloud.
Complexity
BStandard
Timeline
5-7 weeks
Try the reverse
Overview
Moving from HubSpot Service Hub to Salesforce Service Cloud means translating a support data model built on one CRM platform into a different CRM's case management architecture. HubSpot Service Hub stores every support interaction—email, call, chat, note—as a separate engagement object linked to a Ticket, requiring us to query each engagement type independently and reconstruct a unified conversation thread before loading it into Salesforce Case. Ticket pipelines in HubSpot become Case Record Types with custom Status values in Salesforce. We preserve the original ticket close date, resolution time, and source channel, but flag that HubSpot's Customer Health Scores and Knowledge Base articles require separate rebuild decisions: health score algorithms are HubSpot-specific and articles do not map to Salesforce Knowledge as structured records. Automation in HubSpot Service Hub—workflows, canned responses, and SLA rules—does not migrate; we deliver a written inventory for the customer's admin to rebuild in Salesforce Flow or Omni-Channel.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Source platform
HubSpot Service Hub platform overview
Scorecard, SWOT, gotchas, and pricing for HubSpot Service Hub.
Destination platform
Salesforce Service Cloud platform overview
Scorecard, SWOT, gotchas, and pricing for Salesforce Service Cloud.
Data migration guide
The complete Salesforce Service Cloud migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
HubSpot Service Hub migration guide
Understand the data you're exporting from HubSpot Service Hub before mapping it.
Destination checklist
Salesforce Service Cloud migration checklist
Pre- and post-cutover tasks for moving onto Salesforce Service Cloud.
Source checklist
HubSpot Service Hub migration checklist
Exit checklist for unwinding your HubSpot Service Hub setup cleanly.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a HubSpot Service Hub object lands in Salesforce Service Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
HubSpot Service Hub
Ticket
Salesforce Service Cloud
Case
1:1HubSpot Tickets map directly to Salesforce Cases. The HubSpot ticket subject maps to Case Subject, hs_ticket_priority to Case Priority, hs_pipeline to Salesforce Case Record Type, and hs_ticket_stage to Case Status values that we configure per Record Type. Custom ticket properties migrate as custom Case fields. HubSpot's ticket source (email, chat, phone, form) maps to Case Origin. Closed-Lost and Closed-Won resolution from HubSpot custom fields becomes Case Reason.
HubSpot Service Hub
Engagement: Email
Salesforce Service Cloud
EmailMessage + Task
1:1HubSpot email engagements (stored as separate engagement objects) reconstruct into Salesforce EmailMessage records linked to the Case via the WhatId field. The email body, timestamp, sender, and recipient address migrate. We query HubSpot's email engagements endpoint, resolve the parent ticket by ticket_id, and attach each EmailMessage to the corresponding Case record. EmailMessage status (New, Read, Replied, Sent) maps from HubSpot's email engagement metadata.
HubSpot Service Hub
Engagement: Call
Salesforce Service Cloud
Task (TaskSubtype = Call)
1:1HubSpot call engagements map to Salesforce Task with TaskSubtype = Call. Call duration, disposition, recording URL, and outcome migrate to custom Task fields (call_duration_seconds__c, call_disposition__c, recording_url__c). We resolve the parent Case by linking the Task to WhatId = Case ID and set ActivityDate to the original HubSpot call timestamp for timeline fidelity.
HubSpot Service Hub
Engagement: Meeting
Salesforce Service Cloud
Event
1:1HubSpot meeting engagements (including Zoom and Google Meet transcripts if available) map to Salesforce Event with StartDateTime, EndDateTime, Subject, and Location preserved. Attendee resolution attaches EventRelation records to the associated Contact (WhoId) and Case (WhatId). Meeting outcome and notes migrate as Event description.
HubSpot Service Hub
Engagement: Note
Salesforce Service Cloud
Note
1:1HubSpot notes linked to tickets migrate to Salesforce Note records attached via ContentDocumentLink to the parent Case. Note body and create timestamp preserve. Rich text formatting is retained where possible; images in HubSpot notes migrate as ContentDocument records linked to the Note.
HubSpot Service Hub
Engagement: Chat (Conversations)
Salesforce Service Cloud
Task + EmailMessage
1:1HubSpot chat and Facebook Messenger, WhatsApp, and Instagram DM conversations stored in the Conversations inbox map to a combined Task (for activity logging) and EmailMessage (for thread content). The conversation thread is reconstructed as a series of EmailMessage records with direction (Inbound/Outbound) preserved. Chat transcripts without a ticket association are flagged for manual review.
HubSpot Service Hub
Contact
Salesforce Service Cloud
Contact
1:1HubSpot Contacts map directly to Salesforce Contacts. Standard fields (name, email, phone, address) migrate cleanly. Lifecycle stage, lead status, and any custom contact properties transfer to Salesforce custom fields. We resolve the Contact by email as the primary key during import. If the destination Salesforce org uses Person Accounts for B2C support cases, we flag this during scoping and adjust the mapping.
HubSpot Service Hub
Company
Salesforce Service Cloud
Account
1:1HubSpot Company records map to Salesforce Account. Company domain name becomes the Account Website field. If the destination Salesforce org uses a parent-account hierarchy, we flatten HubSpot's single-level company structure unless the customer specifies a hierarchy mapping. Dedupe is by domain name during import.
HubSpot Service Hub
Ticket Pipeline
Salesforce Service Cloud
Case Record Type + Case Status
lossyHubSpot ticket pipelines (up to Professional tier's pipeline count limit) map to Salesforce Case Record Types, each with its own set of Case Status values. Stage names from HubSpot become Status picklist labels; stage display order preserves. Probability per stage migrates to Salesforce but as an informational field on the Record Type since Case does not use probability natively. We configure the Record Type in a Sandbox before production migration.
HubSpot Service Hub
Knowledge Base Article
Salesforce Service Cloud
Salesforce Knowledge (article types)
1:1HubSpot Knowledge Base articles can be exported via API and loaded into Salesforce Knowledge, but the structure mapping is not 1:1. HubSpot articles have category, slug, body, and publish status; Salesforce Knowledge uses Article Types (custom metadata), data category groups, and Lightning-rendered article pages. We migrate article title, body content, category path (as data categories), and publish status. Embedded HubSpot forms, Breeze-agent-specific deflection settings, and article view analytics do not transfer and are flagged as rebuild items.
HubSpot Service Hub
CSAT / Feedback Survey
Salesforce Service Cloud
Custom Field on Case
1:1HubSpot CSAT survey responses linked to tickets migrate as custom fields on Salesforce Case (csat_score__c, csat_response_text__c, csat_submitted_date__c). The survey object structure in HubSpot does not map to a native Salesforce equivalent, so response metadata (survey name, question text) migrates as Case description or a custom text field. We flag that post-migration CSAT collection should use Salesforce Survey or an AppExchange survey tool.
HubSpot Service Hub
Owner (Agent/User)
Salesforce Service Cloud
User
1:1HubSpot Owners map to Salesforce User records by email match. Active and inactive status preserves. Team assignments in HubSpot map to Salesforce Public Groups or Queues depending on whether the customer uses queue-based case assignment. Owners without a matching Salesforce User go to a reconciliation queue for admin provisioning before case import begins.
HubSpot Service Hub
Customer Health Score
Salesforce Service Cloud
Custom Field on Account/Contact
1:1HubSpot Customer Success Workspace health scores (calculated from engagement data) cannot migrate as a working algorithm in Salesforce because health score computation is HubSpot-specific. We migrate the most recent health score value as a static number in a custom field (hs_health_score__c) on Account and/or Contact. Post-migration health scoring must be rebuilt using Salesforce reports, Salesforce Health Score solutions on AppExchange, or a dedicated CS platform like Gainsight.
HubSpot Service Hub
Tag
Salesforce Service Cloud
Multi-Select Picklist or Case Tag
lossyHubSpot tags on tickets and contacts migrate as string values to a Salesforce multi-select picklist field (case_tags__c) or Case Tag object. HubSpot does not enforce a global tag taxonomy, so tags from multiple sources may have naming collisions; we deduplicate and prefix by source object where necessary. The customer chooses between multi-select picklist (simpler) and Case Tags (Salesforce-native) during scoping.
| HubSpot Service Hub | Salesforce Service Cloud | Compatibility | |
|---|---|---|---|
| Ticket | Case1:1 | Fully supported | |
| Engagement: Email | EmailMessage + Task1:1 | Fully supported | |
| Engagement: Call | Task (TaskSubtype = Call)1:1 | Fully supported | |
| Engagement: Meeting | Event1:1 | Fully supported | |
| Engagement: Note | Note1:1 | Fully supported | |
| Engagement: Chat (Conversations) | Task + EmailMessage1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Ticket Pipeline | Case Record Type + Case Statuslossy | Fully supported | |
| Knowledge Base Article | Salesforce Knowledge (article types)1:1 | Fully supported | |
| CSAT / Feedback Survey | Custom Field on Case1:1 | Fully supported | |
| Owner (Agent/User) | User1:1 | Fully supported | |
| Customer Health Score | Custom Field on Account/Contact1:1 | Fully supported | |
| Tag | Multi-Select Picklist or Case Taglossy | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
HubSpot Service Hub gotchas
Rate limits throttle large migration API calls
Side conversations and Zendesk macros have no HubSpot equivalent
HubSpot stores ticket history as fragmented engagement objects
Custom Objects require Enterprise tier in HubSpot
Ticket pipeline stage probability values do not export cleanly
Salesforce Service Cloud gotchas
Data Export 512MB file size cap breaks large org exports
API Daily Request Limits vary by license edition
No automatic data backup in base Salesforce
Picklist dependencies silently break records when unmapped
Workflow rules fire unexpectedly during data load
Pair-specific challenges
Migration approach
Discovery and scoping
We audit the source HubSpot Service Hub portal for tier (Starter/Professional/Enterprise), active ticket pipelines and their stage counts, custom ticket properties, engagement record volumes by type (email, call, meeting, note, chat), Knowledge Base article count and category depth, CSAT survey structure, customer health score presence, and owner/agent count. We pair this with a Salesforce Service Cloud edition review: Service Cloud Starter ($25/user) covers basic case management; Service Cloud Professional adds Omni-Channel and Salesforce Knowledge; Service Cloud Enterprise adds Entitlement Management, MILestones, and advanced Flow; Service Cloud Unlimited adds 24x7 support. The discovery output is a written scope document with object counts, a Salesforce edition recommendation, and a flag for any Enterprise-only source features that may not transfer.
Engagement reconstruction and conversation thread design
HubSpot's engagement API requires separate queries for each engagement type. We build a reconstruction query for each object type (emails via the email engagements endpoint, calls via call recordings endpoint, meetings via meetings endpoint, notes via notes endpoint, conversations via the conversations inbox API). We resolve each engagement record back to its parent HubSpot ticket_id and sort by timestamp to build a unified thread per ticket. This design step produces the thread schema we use during migration and is validated against a sample of 50 tickets before bulk migration begins.
Salesforce schema setup and Record Type configuration
We configure Salesforce Service Cloud in a Sandbox before any data moves. This includes creating custom Case fields for all HubSpot custom ticket properties, configuring Case Record Types (one per HubSpot ticket pipeline), setting up Case Status values per Record Type with display labels matching HubSpot stage names, creating custom fields for CSAT scores, health score values, and tag data, and configuring Omni-Channel routing settings (Presence Configuration, Skills, Routing Flows) if the customer plans to use them. Salesforce Knowledge article types and data category groups are set up if the customer requires Knowledge Base migration. All configuration is validated by the customer's Salesforce admin before Sandbox sign-off.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy depending on data volume) with production-like record counts. The customer's support operations lead reconciles: total Case count against HubSpot ticket count, sample Case thread completeness against HubSpot ticket conversation history, Contact and Account record counts, Owner-to-User mapping verification, tag coverage on sample cases, and CSAT score presence. Any missing mappings, truncated conversation threads, or field-type mismatches are corrected in the Sandbox schema before production migration begins.
Owner reconciliation and User provisioning
We extract every distinct HubSpot Owner referenced on tickets and contacts and match by email against the Salesforce destination org's User table. Owners without a matching Salesforce User are queued for admin provisioning. For inactive HubSpot agents who still need history attribution, we provision Salesforce Users with the IsActive flag set appropriately. Salesforce Queue assignment for unassigned cases is configured before case import so that ownerless tickets route to the correct queue rather than landing as unowned records.
Production migration in dependency order
We migrate in this sequence: Accounts (from HubSpot Companies), Contacts (with AccountId resolved), Case Record Types and Status values (validated in Sandbox), Cases (with RecordTypeId, Status, Origin, and Priority resolved), Engagement history (EmailMessages, Tasks, Events, Notes via Bulk API 2.0 reconstructed per Case), CSAT data (as custom Case fields), Knowledge Base articles (as Salesforce Knowledge articles with data category assignments), and health score values (as static custom fields on Account/Contact). Each phase emits a reconciliation row-count report. We use Bulk API 2.0 with chunking, parent-record lookup resolution, and exponential backoff on rate-limit responses for engagement-heavy phases.
Cutover, delta sync, and rebuild handoff
We freeze HubSpot ticket writes during cutover, run a final delta migration of any tickets or engagement records modified during the migration window, then enable Salesforce Service Cloud as the system of record. We deliver: a Ticket-to-Case ID cross-reference for any customer-facing ticket references, a Knowledge Base rebuild checklist with article titles and category assignments, a Workflow and SLA rebuild inventory (HubSpot workflows and SLA rules do not migrate; we document the trigger, conditions, and recommended Salesforce Flow or Entitlement equivalent), and a Omni-Channel routing setup guide. We do not rebuild HubSpot workflows or SLA rules as Salesforce Flow inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
HubSpot Service Hub
Source
Strengths
Weaknesses
Salesforce Service Cloud
Destination
Strengths
Weaknesses
Complexity grading
Standard Helpdesk migration. 1 of 7 objects need a manual workaround.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across HubSpot Service Hub and Salesforce Service Cloud.
Object compatibility
1 of 7 objects need a manual workaround.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
7-object category — typical timelines run 2–7 days end-to-end.
API constraints
HubSpot Service Hub: 100–190 req/10sec (per app, varies by tier); 250,000–1,000,000 req/day (shared across all apps in account).
Data volume sensitivity
HubSpot Service Hub exposes a bulk API — large-volume migrations stream efficiently.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during HubSpot Service Hub to Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.
Walk through your HubSpot Service Hub to Salesforce Service Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave HubSpot Service Hub
Other ways to arrive at Salesforce Service Cloud
Same-Helpdesk migrations
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.