Helpdesk migration

Migrate from UserHorn to Salesforce Service Cloud

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 logo

UserHorn

Source

Salesforce Service Cloud

Destination

Salesforce Service Cloud logo

Compatibility

58%

7 of 12

objects map 1:1 between UserHorn and Salesforce Service Cloud.

Complexity

BStandard

Timeline

6-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

UserHorn logo

UserHorn

What's pushing teams away

  • Admin area is reported as complicated initially per reviewer feedback — onboarding has a learning curve that can stall adoption.
  • Very small vendor with limited public review footprint, making procurement validation difficult.
  • Feature depth (advanced SLA management, omnichannel chat, voice integration, AI assist) lags Zendesk / Freshdesk / Intercom by a wide margin.
  • No publicly documented REST API — integration with external CRMs or BI tools requires vendor cooperation.
  • Startup tier (€50/year) is hard-capped to projects under 3 years old and only 2 staff members; outgrowing it forces the larger Professional tier.

Choosing

Salesforce Service Cloud logo

Salesforce Service Cloud

What's pulling them in

  • Deep Salesforce ecosystem integration with Sales Cloud, Marketing Cloud, and custom Apex apps creates a single pane of glass for enterprise customer data and cross-functional workflows.
  • Omnichannel case routing — email, chat, phone, social, and messaging — unified under one case object means agents do not lose context when customers switch channels mid-interaction.
  • AI for customer service (Einstein AI / Agentforce) offers automated case classification, suggested replies, and chatbot routing that reduces Tier-1 ticket volume without manual rule authoring.
  • Entitlement and milestone tracking enforces SLA compliance natively, automatically calculating breach windows and surfacing violations to supervisors in dashboards.
  • Salesforce's massive AppExchange ecosystem provides pre-built connectors, industry-specific managed packages, and third-party tools that extend Service Cloud beyond its out-of-box capabilities.

Object mapping

How UserHorn objects map to Salesforce Service Cloud

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

maps to

Salesforce Service Cloud

Case

1:1
Fully supported

UserHorn 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

maps to

Salesforce Service Cloud

Contact + Account

1:many
Fully supported

UserHorn 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

maps to

Salesforce Service Cloud

Account

1:1
Fully supported

If 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

maps to

Salesforce Service Cloud

User

1:1
Fully supported

UserHorn 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

maps to

Salesforce Service Cloud

Queue

1:1
Fully supported

If 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

maps to

Salesforce Service Cloud

ContentDocument + ContentVersion + ContentDocumentLink

1:1
Fully supported

UserHorn 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

maps to

Salesforce Service Cloud

CaseComment

1:1
Fully supported

UserHorn 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

maps to

Salesforce Service Cloud

CaseTag or Custom Multi-Select Picklist

lossy
Fully supported

UserHorn 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

maps to

Salesforce Service Cloud

Case.Status

lossy
Fully supported

UserHorn 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

maps to

Salesforce Service Cloud

Custom Case Fields

lossy
Fully supported

Any 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

maps to

Salesforce Service Cloud

Salesforce Knowledge

1:1
Fully supported

If 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

maps to

Salesforce Service Cloud

BusinessHours + Entitlement + Milestone

lossy
Fully supported

If 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.

Gotchas + challenges

What specifically takes care here

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 logo

UserHorn gotchas

Medium

Startup tier locks new accounts to projects under 3 years old

High

No documented public API for export

Medium

Language variants live as separate language projects, not translations

Low

Custom-branded domain configuration must be reconfigured post-migration

Salesforce Service Cloud logo

Salesforce Service Cloud gotchas

High

Data Export 512MB file size cap breaks large org exports

High

API Daily Request Limits vary by license edition

High

No automatic data backup in base Salesforce

Medium

Picklist dependencies silently break records when unmapped

Medium

Workflow rules fire unexpectedly during data load

Pair-specific challenges

  • UserHorn schema is not publicly documented

    No API documentation, data schema, object model, or field reference for UserHorn was recoverable from public sources. We cannot confirm API field names, authentication method, rate limits, or export endpoints without direct access to your UserHorn instance. Before migration begins, we require API credentials or a data export from UserHorn so that we can instrument the actual field names and map them to Salesforce. We treat this as a discovery-first engagement: schema discovery, then mapping, then migration.

  • Automations, macros, and SLA rules do not migrate as code

    UserHorn automations, macros, SLAs, and workflow rules are platform-specific constructs with no direct Salesforce equivalent. Salesforce Flow uses record-triggered, scheduled, and screen variants with different action models. We do not migrate automations as code. We deliver a written inventory of every active UserHorn automation, macro, and SLA policy with its trigger conditions, actions, and a recommended Salesforce Flow or Entitlement configuration equivalent for your admin to rebuild post-migration.

  • Helpdesk platforms lack the Account-Contact hierarchy

    Most helpdesk platforms store a customer name and email per ticket without a formal Account (company) layer. Salesforce Service Cloud requires Account for multi-person organizations and for entitlement and asset tracking. If UserHorn tickets reference only individual contacts without a parent organization, we create individual Account records per Contact during migration. This adds migration time and may affect reporting if the customer needs territory or account-level rollups post-migration.

  • Salesforce field validation rules block record import silently

    Salesforce orgs commonly enforce required field rules, conditional validation, and picklist whitelists that cause record rejection during import. Without temporarily disabling or extending validation rules for the migration user, rejection rates of 5-30 percent are common on first load. We coordinate with the customer's Salesforce admin to grant the migration user the necessary field access and either disable validation rules during load or extend them with a migration-context check.

  • Salesforce Knowledge is a separate setup from Service Cloud

    Salesforce Knowledge is not enabled by default in all Service Cloud orgs and requires a separate configuration step (Enable Knowledge in Setup, define article types, assign permissions to profiles). Migrated articles land in Draft status and must be published manually or through a separate publish workflow. We include Knowledge article migration in scope but flag it as a post-migration review item for the customer's knowledge manager.

Migration approach

Six steps for a successful UserHorn to Salesforce Service Cloud data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

UserHorn logo

UserHorn

Source

Strengths

  • Combined knowledge base, community forum, and ticketing in one branded portal.
  • Inexpensive entry point with €11/month Professional tier.
  • Free SSL certificate and custom-domain hosting included.
  • Multilingual project support up to 5 languages.
  • 7-day free trial without payment for Professional evaluation.

Weaknesses

  • Admin UI complexity creates onboarding friction.
  • No public API documentation for self-serve integration.
  • Macro / automation / SLA depth is limited or absent.
  • Small vendor with limited public review footprint.
  • Multilingual model uses separate language projects rather than translations.
Salesforce Service Cloud logo

Salesforce Service Cloud

Destination

Strengths

  • Enterprise-grade security, compliance certifications, and audit logging available across all paid editions with Shield offering enhanced event monitoring.
  • Scalable multi-tenant cloud architecture supporting orgs from 5 users to 150,000+ seat enterprises without infrastructure management overhead.
  • Omnichannel contact center unifying email, live chat, phone, messaging, and social into a single Case timeline per customer interaction.
  • Rich workflow automation via Salesforce Flow, Process Builder, and Apex triggers enabling complex case escalation, routing, and field updates.
  • Native AI capabilities (Agentforce / Einstein) for case auto-routing, classification, suggested responses, and chatbot escalation without third-party add-ons.

Weaknesses

  • Per-seat pricing model with no contact limits creates unpredictable cost scaling for large organizations adding many agents over time.
  • No automatic data backup — organizations must purchase a third-party backup solution or build manual Data Loader exports to protect against data loss from human error, failed deployments, or integrations overwriting records.
  • Steep learning curve for non-technical users requiring dedicated admin resources and formal training investment before teams reach productive velocity.
  • Annual contract requirements and limited pro-ration on exit create significant switching cost friction, especially for organizations evaluating alternatives mid-cycle.
  • Add-on licensing (CPQ, Einstein Activity Capture, Shield, Data Cloud) can double effective per-seat cost without clear documentation of which features are included in base tiers.

Complexity grading

How hard is this migration?

Standard Helpdesk migration. 1 of 7 objects need a manual workaround.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across UserHorn and Salesforce Service Cloud.

  • Object compatibility

    B

    1 of 7 objects need a manual workaround.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    UserHorn: Not publicly documented — confirmed during integration scoping..

  • Data volume sensitivity

    B

    UserHorn doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your UserHorn to Salesforce Service Cloud migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about UserHorn to Salesforce Service Cloud data migrations

Answers to the questions buyers ask most during UserHorn to Salesforce Service Cloud migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between six and eight weeks for accounts under 20,000 tickets and 5,000 contacts when UserHorn schema is accessible early. Migrations requiring extensive schema reverse-engineering (because API access or export documentation is not immediately available), large attachment volumes, or multi-object dependency resolution move to ten to sixteen weeks. Discovery alone — capturing actual field names and object relationships from UserHorn — takes one to two weeks before field mapping begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from UserHorn.
Land in Salesforce Service Cloud, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day