Helpdesk migration
Field-level mapping, validation, and rollback between UserHorn and HubSpot Service Hub. We move data and schema; workflows are rebuilt natively in HubSpot Service Hub.
UserHorn
Source
HubSpot Service Hub
Destination
Compatibility
10 of 13
objects map 1:1 between UserHorn and HubSpot Service Hub.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from UserHorn to HubSpot Service Hub consolidates your support stack onto a CRM-native platform where ticket records, contact records, and deal records share a single schema. HubSpot Service Hub uses Tickets as the core support object with a configurable pipeline model, conversation threads tracked in the shared Inbox linked to Contact or Company records, and agent management through HubSpot User roles and teams. We extract support records, customer profiles, agent assignments, and conversation history from UserHorn, map them to HubSpot Tickets with the correct pipeline and status values, and load them via HubSpot's REST and Bulk APIs with parent-record lookup resolution. We do not migrate Workflows, automations, knowledge base configurations, or reporting dashboards; these require rebuild by your admin using HubSpot's native tools post-migration. The scope includes a written inventory of any UserHorn automations requiring rebuild in HubSpot Workflows so your team has a concrete action plan after cutover.
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
UserHorn platform overview
Scorecard, SWOT, gotchas, and pricing for UserHorn.
Destination platform
HubSpot Service Hub platform overview
Scorecard, SWOT, gotchas, and pricing for HubSpot Service Hub.
Data migration guide
The complete HubSpot Service Hub migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
HubSpot Service Hub migration checklist
Pre- and post-cutover tasks for moving onto HubSpot Service Hub.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a UserHorn object lands in HubSpot Service Hub, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
UserHorn
Contact
HubSpot Service Hub
Contact
1:1UserHorn customer profiles (name, email, phone, company association) map directly to HubSpot Contact. We use email as the primary deduplication key. Any custom fields on the UserHorn contact record map to HubSpot custom contact properties created before migration. If UserHorn stores company-level data on the contact, we resolve the Company-to-Account lookup before contact insert.
UserHorn
Company
HubSpot Service Hub
Company
1:1UserHorn organizations or company records map to HubSpot Company. Domain becomes the Company website field. We resolve the Company-to-Contact association so that when contacts are loaded, their Company lookup is already satisfied. Company records are loaded before contacts to maintain referential integrity through the HubSpot Bulk API.
UserHorn
Ticket
HubSpot Service Hub
Ticket
1:1UserHorn tickets map to HubSpot Tickets. The ticket subject, description, status, priority, and timestamps migrate directly. We map UserHorn ticket statuses to HubSpot Ticket pipeline stage values, and any UserHorn custom fields map to HubSpot Ticket custom properties. Ticket ID is preserved in a custom field for cross-referencing against UserHorn records post-migration.
UserHorn
Ticket Status
HubSpot Service Hub
Ticket Pipeline Stage
lossyEach distinct status value in UserHorn becomes a HubSpot Ticket pipeline stage. We create the pipeline in HubSpot before migration with the same stage order and map status labels to stage names. Probability percentages for each stage are set during pipeline configuration to maintain accurate reporting post-migration.
UserHorn
Ticket Pipeline
HubSpot Service Hub
Ticket Pipeline
lossyIf UserHorn supports multiple ticket queues or pipelines, each maps to a separate HubSpot Ticket pipeline. HubSpot supports multiple concurrent pipelines from Professional tier. We configure each pipeline with its own stages, assigned teams, and SLA policies before record load.
UserHorn
Agent
HubSpot Service Hub
User
1:1UserHorn agents map to HubSpot Users. We match by email address. Any UserHorn agent without a corresponding HubSpot User goes to a reconciliation queue before migration; the customer provisions missing users in HubSpot before record import begins. Agent role and team assignments in UserHorn map to HubSpot role-based inbox routing and Team membership.
UserHorn
Conversation
HubSpot Service Hub
Conversation (Inbox)
1:1UserHorn ticket conversations and internal notes map to HubSpot conversational messages linked to the corresponding Ticket. Each message maps to a HubSpot ConversationMessage record with sender, recipient, timestamp, body, and attachment references. We resolve the Contact lookup by email for each message sender. Inline images in message bodies are handled as attachments linked to the conversation.
UserHorn
Attachment
HubSpot Service Hub
File (ContentDocument)
1:1Ticket attachments and inline images migrate as HubSpot Files attached to the corresponding Ticket via ContentDocumentLink. File names and MIME types are preserved. Large attachment batches are chunked to stay within HubSpot API upload limits.
UserHorn
Note
HubSpot Service Hub
Note
1:1UserHorn internal notes on tickets map to HubSpot Notes linked to the Ticket record. Note body text and timestamps migrate directly. We preserve the creating agent as a HubSpot Note property where the platform supports it.
UserHorn
Customer Property
HubSpot Service Hub
Contact Custom Property
1:1UserHorn custom fields on customer records migrate to HubSpot Contact custom properties. We pre-create the property in HubSpot before migration using the correct type (text, number, date, single-checkbox, dropdown) matching the UserHorn field type. Field dependencies and conditional display rules are not migrated as configuration.
UserHorn
Ticket Property
HubSpot Service Hub
Ticket Custom Property
1:1UserHorn custom fields on tickets migrate to HubSpot Ticket custom properties. We pre-create the property schema in HubSpot before migration. Multi-select checkbox values from UserHorn map to HubSpot multi-select contact or ticket properties. Any picklist fields are migrated with the original values preserved as-is.
UserHorn
Tag
HubSpot Service Hub
Ticket Topic or Custom Property
lossyUserHorn tags on tickets are evaluated for mapping strategy during discovery. Tags used for categorization migrate to HubSpot Ticket Topics with TopicAssignment records. Tags used as agent labels or ticket-type indicators migrate to a multi-select ticket custom property. The customer chooses the strategy during scoping.
UserHorn
Time Tracking
HubSpot Service Hub
Ticket Custom Property (number)
1:1If UserHorn tracks time spent on tickets, those values migrate to a HubSpot Ticket custom property of numeric type (time in minutes). We do not migrate timer sessions or time-entry line items as these are not standard HubSpot Ticket objects.
| UserHorn | HubSpot Service Hub | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Ticket | Ticket1:1 | Fully supported | |
| Ticket Status | Ticket Pipeline Stagelossy | Fully supported | |
| Ticket Pipeline | Ticket Pipelinelossy | Fully supported | |
| Agent | User1:1 | Fully supported | |
| Conversation | Conversation (Inbox)1:1 | Fully supported | |
| Attachment | File (ContentDocument)1:1 | Fully supported | |
| Note | Note1:1 | Fully supported | |
| Customer Property | Contact Custom Property1:1 | Fully supported | |
| Ticket Property | Ticket Custom Property1:1 | Fully supported | |
| Tag | Ticket Topic or Custom Propertylossy | Fully supported | |
| Time Tracking | Ticket Custom Property (number)1:1 | 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.
UserHorn gotchas
Startup tier locks new accounts to projects under 3 years old
No documented public API for export
Language variants live as separate language projects, not translations
Custom-branded domain configuration must be reconfigured post-migration
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
Pair-specific challenges
Migration approach
Discovery and schema verification
We begin by obtaining UserHorn data access: either a live API connection with documentation of available endpoints and field types, or a structured data export (CSV, JSON) with a schema map. We inventory all objects (tickets, contacts, companies, agents, conversations, attachments, custom fields) and estimate volumes for each. If UserHorn API access is unavailable or undocumented, we scope against an exported data sample and flag any objects that cannot be reconciled to a HubSpot equivalent before migration begins.
HubSpot Service Hub configuration
We configure HubSpot Service Hub before any data loads. This includes creating the Ticket pipeline with stage values mapped from UserHorn status values, configuring team-based inbox routing to match UserHorn agent queues, provisioning HubSpot Users to match UserHorn agents, creating custom contact properties and custom ticket properties to receive UserHorn custom field data, and setting up any required SLA policies if the destination is Professional tier or above. All configuration happens in a HubSpot Sandbox or staging portal before production.
Sandbox migration and reconciliation
We run a full migration into the configured HubSpot Sandbox environment using representative data volumes. The customer reviews migrated records against source records for each object type (tickets, contacts, conversations, agents) and signs off the mapping and schema before production migration. Any field-level corrections, missing custom properties, or pipeline stage adjustments are made during this phase. We do not proceed to production until the customer has validated the sandbox output.
Owner and agent reconciliation
We extract every distinct agent referenced on UserHorn ticket and conversation records and match by email against the HubSpot User table. Agents without a matching HubSpot User go to a reconciliation queue. The customer's HubSpot admin provisions any missing Users, assigns roles and team memberships, and confirms inbox routing configuration. Migration cannot proceed past this step because HubSpot requires a valid OwnerId on imported ticket and contact records.
Production migration in dependency order
We run production migration in record-dependency order: HubSpot Users (validated), Companies (from UserHorn organizations), Contacts (with CompanyId resolved), Tickets (with ContactId and OwnerId resolved), Conversation messages (with ContactId resolved by email), Attachments (linked to tickets via ContentDocumentLink), and Notes. Custom properties are loaded after base objects are confirmed. Each phase emits a row-count reconciliation report before the next phase begins. We use HubSpot's REST API for smaller record sets and Bulk API for larger volumes with chunking and exponential backoff.
Cutover, delta sync, and automation handoff
We freeze UserHorn writes during cutover, run a final delta migration of any records created or modified during the migration window, then enable HubSpot Service Hub as the system of record. We deliver the automation and knowledge base inventory document to the customer's admin team with recommended HubSpot Workflow equivalents for each UserHorn rule. We support a one-week hypercare window for reconciliation issues raised during the first week of live operation. Workflow rebuild, knowledge base reconstruction, and reporting dashboard setup are outside standard migration scope.
Platform deep dives
UserHorn
Source
Strengths
Weaknesses
HubSpot Service Hub
Destination
Strengths
Weaknesses
Complexity grading
Standard Helpdesk migration. 2 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across UserHorn and HubSpot Service Hub.
Object compatibility
2 of 7 objects need a mapping; the rest are 1:1.
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
UserHorn: Not publicly documented — confirmed during integration scoping..
Data volume sensitivity
UserHorn doesn't expose a bulk API — REST + parallelization used for high-volume runs.
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 UserHorn to HubSpot Service Hub migration scoping. Not seeing yours? Book a call.
Walk through your UserHorn to HubSpot Service Hub migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave UserHorn
Other ways to arrive at HubSpot Service Hub
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.