Helpdesk migration
Field-level mapping, validation, and rollback between UserHorn and Salesforce Service Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Service Cloud.
UserHorn
Source
Salesforce Service Cloud
Destination
Compatibility
7 of 12
objects map 1:1 between UserHorn and Salesforce Service Cloud.
Complexity
BStandard
Timeline
6-8 weeks
Overview
UserHorn is a helpdesk platform for which no public API documentation, data schema, or technical reference was recoverable during research. To scope a migration accurately, we require at minimum an API authentication method, a list of core objects, and sample field names from your UserHorn instance. Until then, we treat this as a structured discovery-first engagement where we map the destination (Salesforce Service Cloud) with confidence and instrument the source audit to fill in the gaps. Salesforce Service Cloud uses the Case object as its core ticket model, Account and Contact as the customer hierarchy, and ContentDocument for file attachments. We do not migrate automations, macros, or help center configurations as code. We deliver a written inventory of these for your admin to rebuild in Salesforce Flow and Experience Cloud.
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
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.
Destination checklist
Salesforce Service Cloud migration checklist
Pre- and post-cutover tasks for moving onto Salesforce Service Cloud.
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 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.
UserHorn
Ticket / Case
Salesforce Service Cloud
Case
1:1UserHorn tickets map to Salesforce Case. We require the source field name for ticket subject, description, status, priority, and origin before mapping. Case Record Type is set based on UserHorn category or ticket type. Historical timestamps (created, updated, resolved) migrate to Case.CreatedDate, Case.LastModifiedDate, and a custom closed_date__c field if the source tracks resolution time separately. Without UserHorn API documentation, we instrument a discovery export to capture the actual field names and data types before field mapping is finalized.
UserHorn
Customer Contact
Salesforce Service Cloud
Contact + Account
1:manyUserHorn customer contacts map to Salesforce Contact records linked to an Account. If UserHorn stores only a name and email per ticket (no company), we create a single-person Account per Contact during migration. If UserHorn has a separate Organization or Company object, that maps to Account and the contact maps to Contact with AccountId resolved. We preserve the original requester email and any contact property fields (phone, role, company) in mapped Salesforce fields or custom fields.
UserHorn
Organization / Company
Salesforce Service Cloud
Account
1:1If UserHorn has a distinct Organization object, those records map to Salesforce Account. Account.Name comes from the organization name, Account.Phone from the contact phone if available, and Account.BillingAddress from any stored address. Account is created before Contact import so that the Contact.AccountId lookup is satisfied at the moment of Contact insert.
UserHorn
Agent / Assignee
Salesforce Service Cloud
User
1:1UserHorn agents or assignees map to Salesforce User records by email address match. We resolve the User.Email lookup during migration. Any UserHorn agent without a matching Salesforce User is held in a reconciliation queue for the customer's admin to provision before record import resumes. Active versus inactive status migrates to a custom field agent_active_status__c on User for reference.
UserHorn
Team / Group / Queue
Salesforce Service Cloud
Queue
1:1If UserHorn has agent teams or groups, those map to Salesforce Queues. We create Queue records during schema setup with names matching the UserHorn group labels. CaseOwnerId is set to either the resolved User or the Queue ID depending on whether the ticket was assigned to a specific agent or a team pool.
UserHorn
Attachment / File
Salesforce Service Cloud
ContentDocument + ContentVersion + ContentDocumentLink
1:1UserHorn ticket attachments migrate to Salesforce ContentDocument records linked to the Case via ContentDocumentLink. ContentVersion stores the file body and metadata (filename, content type, size). We preserve the original upload timestamp as ContentVersion.FirstPublishLocationId or a custom field attachment_uploaded__c. Large attachment batches (over 5,000 files) require chunking and individual ContentVersion inserts due to Salesforce storage and API batch limits.
UserHorn
Comment / Internal Note
Salesforce Service Cloud
CaseComment
1:1UserHorn ticket comments and internal notes map to Salesforce CaseComment records linked to the Case. We use CommentType = 'Public' for customer-visible comments and CommentType = 'Private' for agent-only notes. The original timestamp migrates to CaseComment.CreatedDate. If UserHorn tracks comment authors separately, we resolve the author to a Salesforce User or Contact by email.
UserHorn
Tag / Label
Salesforce Service Cloud
CaseTag or Custom Multi-Select Picklist
lossyUserHorn ticket tags or labels migrate to a custom multi-select picklist field on Case (tag__c) if the tag count is under 150 values per Salesforce picklist limits. If tags exceed picklist capacity, we migrate tags to Salesforce Topics with TopicAssignment records. The customer chooses tag strategy during scoping.
UserHorn
Status / Resolution State
Salesforce Service Cloud
Case.Status
lossyUserHorn ticket status values (open, pending, resolved, closed) map to Salesforce Case Status picklist values. We define the mapping during discovery by reviewing UserHorn status labels. Status transition timestamps (time in open, time to first response) migrate to custom Case fields (first_response_time__c, resolution_time__c) for SLA audit if tracked in UserHorn.
UserHorn
Custom Ticket Fields
Salesforce Service Cloud
Custom Case Fields
lossyAny custom fields on UserHorn tickets (checkbox, dropdown, date, number, text) require pre-creation in Salesforce as custom Case fields before migration. Field type mapping: UserHorn text to Salesforce Text(255) or TextArea; date to Date; number to Number; dropdown to Picklist. Validation rules on Salesforce custom fields must be reviewed before load to avoid record rejection.
UserHorn
Knowledge Base / Canned Responses
Salesforce Service Cloud
Salesforce Knowledge
1:1If UserHorn has a knowledge base or article library, articles map to Salesforce Knowledge ArticleVersion records with the article type set during discovery. Article titles, body content, and category assignments migrate. We do not migrate the article approval workflow or published version history; we set all migrated articles to Draft status for the customer's knowledge manager to review and publish post-migration.
UserHorn
SLA Policy / Business Hours
Salesforce Service Cloud
BusinessHours + Entitlement + Milestone
lossyIf UserHorn has SLA policies or service level targets tied to ticket response or resolution time, those map to Salesforce Entitlement records linked to the Account, with BusinessHours set to the customer's support hours. Case Milestones track first response and resolution time against the entitlement. We document the SLA mapping during discovery and configure entitlements in the Salesforce destination org before Case import.
| UserHorn | Salesforce Service Cloud | Compatibility | |
|---|---|---|---|
| Ticket / Case | Case1:1 | Fully supported | |
| Customer Contact | Contact + Account1:many | Fully supported | |
| Organization / Company | Account1:1 | Fully supported | |
| Agent / Assignee | User1:1 | Fully supported | |
| Team / Group / Queue | Queue1:1 | Fully supported | |
| Attachment / File | ContentDocument + ContentVersion + ContentDocumentLink1:1 | Fully supported | |
| Comment / Internal Note | CaseComment1:1 | Fully supported | |
| Tag / Label | CaseTag or Custom Multi-Select Picklistlossy | Fully supported | |
| Status / Resolution State | Case.Statuslossy | Fully supported | |
| Custom Ticket Fields | Custom Case Fieldslossy | Fully supported | |
| Knowledge Base / Canned Responses | Salesforce Knowledge1:1 | Fully supported | |
| SLA Policy / Business Hours | BusinessHours + Entitlement + Milestonelossy | 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
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
Schema discovery and API instrumentation
We request API access or a data export from UserHorn. Without public documentation, we instrument the actual export to capture object names, field names, field types, and relationship fields. We also capture sample record counts per object. This discovery output is the basis for all downstream mapping. If UserHorn provides only a CSV export, we use that; if API access is available, we use the REST endpoints with rate-limit-aware pagination.
Salesforce destination setup and schema pre-creation
We configure the Salesforce destination org in parallel with discovery. This includes enabling Service Cloud features (Case Management, possibly Salesforce Knowledge), creating custom Case fields to receive UserHorn custom ticket fields, defining Case Record Types and Case Status values mapped from UserHorn status labels, creating Queues for agent teams, and configuring BusinessHours and Entitlement processes for SLA tracking. All schema is deployed into a Salesforce Sandbox first for validation.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox using production-like data volume. The customer's Service Cloud admin reconciles record counts (Cases in, Contacts in, Accounts in, Attachments in), spot-checks 25-50 random Cases against the UserHorn source, and signs off the schema and mapping before production migration begins. Any field mapping corrections happen here.
User provisioning and queue reconciliation
We extract every distinct agent and team referenced in UserHorn ticket assignments and match by email against the Salesforce destination org's User table. Agents without a matching User go to a reconciliation queue. The customer's Salesforce admin provisions any missing Users. Queue records are created with names matching the UserHorn team labels. Migration cannot proceed past Case import without resolved OwnerIds because Case requires an Owner.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from UserHorn organizations or per-contact singletons), Contacts (with AccountId resolved), Cases (with ContactId, AccountId, OwnerId, and RecordTypeId resolved), CaseComments (linked to Case), Attachments (via ContentVersion and ContentDocumentLink), Knowledge Articles (to Draft status), and Entitlements (linked to Account). Each phase emits a row-count reconciliation report. We use Salesforce Bulk API 2.0 for attachment batches exceeding 5,000 records.
Cutover, validation, and automation rebuild handoff
We freeze UserHorn writes during cutover, run a final delta migration of any records modified during the migration window, then enable Salesforce Service Cloud as the system of record. We deliver the Automation and Macro Inventory document to the customer's admin team for rebuild in Salesforce Flow. We support a one-week hypercare window where we resolve reconciliation issues raised by the service team. We do not rebuild automations inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
UserHorn
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 UserHorn 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
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 Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.
Walk through your UserHorn 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 UserHorn
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.