Helpdesk migration

Migrate from Hesk to Zoho Desk

Field-level mapping, validation, and rollback between Hesk and Zoho Desk. We move data and schema; workflows are rebuilt natively in Zoho Desk.

Hesk logo

Hesk

Source

Zoho Desk

Destination

Zoho Desk logo

Compatibility

58%

7 of 12

objects map 1:1 between Hesk and Zoho Desk.

Complexity

CModerate

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Hesk to Zoho Desk is a database-to-API migration rather than an API-to-API move, because Hesk exposes no public REST endpoint. We connect directly to the customer's MySQL instance, enumerate the full schema (tickets, KB articles, users, staff, custom fields, canned responses), and push records into Zoho Desk through its REST API with batch chunking and rate-limit handling. The migration resolves Hesk's flat user model against Zoho Desk's split Contacts and Agents model, re-maps attachment file paths after the data lands, and flags that Zoho Desk's native Zwitch tool does not support Hesk as a migration source — meaning a database-first or custom-engineering approach is mandatory. Custom fields, canned responses, and ticket history transfer as structured data; automations, SLAs, and email templates are documented for the customer's admin to rebuild in Zoho Desk's rule builder post-migration.

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

Hesk logo

Hesk

What's pushing teams away

  • Hesk has no built-in REST API, which blocks teams that need to automate workflows, integrate with CRMs, or connect third-party chatbots at scale.
  • The admin UI is described as functional but dated, with reviewers noting the management panel could benefit from modern design and UX improvements.
  • Larger support teams outgrow Hesk's flat feature set and migrate to platforms like Zendesk, Freshdesk, or JIRA Service Management for automation, SLA management, and multi-channel routing.
  • Hesk Cloud pricing is not transparently published on the site, leading some customers to feel uncertain about total cost when moving off self-hosted.
  • The knowledge base and ticket search are basic compared to enterprise alternatives, with limited customisation of article layouts and no built-in versioning.

Choosing

Zoho Desk logo

Zoho Desk

What's pulling them in

  • Deep Zoho ecosystem integration lets support data tie directly to CRM contacts, invoice records in Zoho Books, and custom apps built in Zoho Creator, providing a unified customer view without third-party middleware.
  • Pricing undercuts comparable platforms significantly: Enterprise at roughly $40 per agent per month versus Zendesk at comparable tiers, making it attractive for cost-sensitive teams scaling past 10 agents.
  • Blueprints and multi-level escalations allow teams to codify support workflows and enforce SLA routing automatically, reducing manual triage for mid-size support operations.
  • Multi-channel ticket ingestion unifies email, social media, live chat, and phone into a single queue view, giving agents one inbox without context-switching across channels.
  • The free tier up to 3 agents lets small teams validate the platform before committing, reducing financial risk for startups and micro-businesses evaluating help desk software.

Object mapping

How Hesk objects map to Zoho Desk

Each row shows how a Hesk object lands in Zoho Desk, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Hesk

Ticket

maps to

Zoho Desk

Ticket

1:1
Fully supported

Hesk Ticket records (id, subject, message, status, priority, owner, category, custom field values) map to Zoho Desk Ticket records. We read the hesk_tickets table via direct MySQL query, transform each row to a Zoho Desk Ticket API payload (POST /api/tickets), and post via batched requests with rate-limit handling. The ticket history table (hesk_log) threads as separate Comment records in Zoho Desk under the same ticket ID. Priority and status values from Hesk map to Zoho Desk's enumerated picklist values (Open, Pending, On-Hold, Resolved, Closed and Low, Medium, High, Urgent).

Hesk

Customer (End User)

maps to

Zoho Desk

Contact

1:1
Fully supported

Hesk end-user accounts (name, email, IP address, creation date) map to Zoho Desk Contacts. The email field is the dedupe key during import. IP addresses from Hesk store as a custom field on the Contact record for GDPR audit purposes if required. Hesk allows emailless users for phone-only contacts — these create Contacts without an email address in Zoho Desk, which is valid for the Contact object but requires downstream handling if email routing is needed.

Hesk

Staff Account

maps to

Zoho Desk

Agent

1:1
Fully supported

Hesk Staff records (name, email, role: administrator/manager/agent, password hash, permission flags) require mapping to Zoho Desk Agents, which are Zoho user accounts scoped to specific Departments. We resolve Hesk staff by email match against the destination Zoho Desk agent list. If a matching Zoho Agent does not exist, we hold the record and flag it for provisioning before production migration. Role hierarchy (admin vs agent) maps to Zoho Desk permission profiles and department membership rather than a direct role translation.

Hesk

Ticket Category

maps to

Zoho Desk

Department

lossy
Fully supported

Hesk ticket categories (hesk_categories: id, name, description) map to Zoho Desk Departments because Zoho Desk routes tickets by Department rather than flat category IDs. We create a Zoho Desk Department for each Hesk category during the schema-setup phase, and re-map the foreign key reference on each ticket record during import so that tickets land in the correct department. The customer decides whether to merge multiple Hesk categories into a single Zoho Desk department or preserve a 1:1 mapping.

Hesk

Knowledge Base Article

maps to

Zoho Desk

Knowledge Base Article

1:1
Fully supported

Hesk KB articles (title, content in HTML, category association, publication status) map to Zoho Desk KB articles via POST /api/articles. The Hesk category-to-department mapping applies here too. Publication status (published/draft) in Hesk maps to Zoho Desk's Published/Internal status. We preserve article content including embedded images as ContentDocument or image URL references where possible, noting that Hesk KB attachments may require path re-mapping after migration (see Gotcha on attachment re-mapping).

Hesk

Canned Response

maps to

Zoho Desk

Macro

1:1
Fully supported

Hesk canned responses (title, HTML content) map to Zoho Desk Macros, which are pre-built action sequences that agents can trigger from a ticket. We import canned responses as Macro templates with the message body pre-populated. If the canned response references ticket fields via Hesk's variable syntax, we document those placeholders for the customer to re-configure in Zoho Desk's Macro editor using Zoho Desk's own variable syntax (${ticket.id}, ${contact.lastName}, etc.).

Hesk

Custom Field

maps to

Zoho Desk

Custom Field

lossy
Fully supported

Hesk custom field definitions (field label, type: text/date/dropdown/checkbox/radio) and their per-ticket values migrate to Zoho Desk custom fields scoped to the Ticket module. We read hesk_custom_fields for definitions and hesk_ticket_fields for values, then create equivalent Zoho Desk custom fields during schema setup using the Fields API before importing data. The field type must match: Hesk dropdown maps to Zoho Desk Picklist, checkbox maps to Multi-Select Picklist, date maps to Date field. We flag any Hesk custom field that exceeds Zoho Desk's field-name character limit (50 characters) for manual renaming before migration.

Hesk

Attachment (file-system)

maps to

Zoho Desk

Attachment (via Zoho Desk API)

1:1
Fully supported

Hesk ticket and KB article attachments are files stored on disk with paths in MySQL (hesk_attachments table: file_key, article_id, ticket_id). We export the entire attachments directory alongside the database dump, re-upload each file via Zoho Desk's Attachments API (POST /api/tickets/{ticketId}/attachments or /api/articles/{articleId}/attachments), and update the file path reference in the imported records. If the destination Zoho Desk portal uses a different domain than the source Hesk instance, all embedded image URLs inside KB article HTML content are re-written to reflect the new portal URL.

Hesk

Ticket History / Audit Log

maps to

Zoho Desk

Ticket Comments

1:1
Fully supported

Hesk's hesk_log table records ticket events (opened, replied, status changed, reassigned) as structured rows with timestamps and actor. We export the full history and import each log entry as a Zoho Desk Comment record on the parent Ticket, preserving the original timestamp and attributing the comment to the mapped Agent if the actor is a staff member, or to the Contact if the actor is the customer. Status-change log entries without a message body are imported as private internal notes in Zoho Desk to preserve the audit trail without creating spurious public comments.

Hesk

Hesk Settings / Configuration

maps to

Zoho Desk

Zoho Desk Configuration Bundle

lossy
Fully supported

Hesk stores configuration (email routing, ticket statuses, priority labels, branding) in hesk_settings as serialized rows. We export the full settings bundle as a written configuration inventory document, mapping each Hesk setting to its equivalent Zoho Desk setup location (Admin > Channels > Email > Email Configuration, Admin > Ticket Fields, Admin > Departments). We do not apply settings programmatically; the document guides the customer's Zoho Desk administrator through manual configuration after migration.

Hesk

User (IP Address / GDPR data)

maps to

Zoho Desk

Contact custom field

lossy
Fully supported

Hesk stores the creating IP address on every user record. For GDPR-aware migrations, we offer an optional anonymisation pass that strips IP addresses from imported Contacts before they land in Zoho Desk. We apply this as a pre-transform step. If full anonymisation is required (name, email, and message content stripped), ticket subjects and thread structure remain but message bodies are replaced with [Anonymised] — we confirm the customer's GDPR scope before applying this option because it permanently reduces migration fidelity.

Hesk

Hesk Mods (Community Add-ons)

maps to

Zoho Desk

Not applicable

lossy
Fully supported

Mods-for-HESK community add-ons extend Hesk's database schema with non-standard fields and tables. We discover any non-standard tables during the schema scan, document their structure, and flag them for the customer to review. These tables do not have a standard Zoho Desk equivalent and must be handled as custom objects or external references post-migration. We do not include them in the standard migration scope without explicit scope extension.

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.

Hesk logo

Hesk gotchas

High

No REST API means all migrations are database-first

High

Moving Hesk between servers requires version parity

Medium

GDPR anonymisation may conflict with ticket preservation

Medium

Attachments are file-system references, not database blobs

Low

Custom field limits are undocumented but exist

Zoho Desk logo

Zoho Desk gotchas

High

Agent email identity determines comment ownership after migration

High

Blueprints and SLA policies do not export via API

Medium

File upload capped at 10GB per migration batch

Medium

Tier-gated export and migration capabilities

Low

Inbound migration is two-phase with a hard Phase 2 cutoff

Pair-specific challenges

  • Hesk has no REST API — database-first migration is mandatory

    Hesk exposes no public API for creating, reading, or updating records. All migration work must read directly from the MySQL database or use Hesk's XML/Excel UI export as an intermediary. This means the customer must provide MySQL credentials and ensure our migration infrastructure can reach the MySQL port (typically 3306) from our environment. We handle connection security via SSH tunnel or a whitelisted IP with TLS on the connection. Zoho Desk's own Zwitch migration tool does not support Hesk as a source, so a custom-engineered migration pipeline is the only path.

  • KB article attachments do not migrate via Zoho Desk's Zwitch

    Zoho Desk's official Zwitch documentation explicitly states that KB article attachments will not be migrated — only the article text content transfers. If the customer's Hesk knowledge base contains articles with downloadable attachments, those files must be handled separately. We export the entire Hesk attachments directory, upload each file to Zoho Desk's document management layer, and update embedded HTML image URLs to reflect the new portal domain. This re-mapping step is included in our standard scope for KB migration.

  • Attachment file paths must be re-mapped after migration

    Hesk stores ticket attachments on disk with file paths referencing the source server's domain or absolute path. When records land in Zoho Desk, any embedded image or file link pointing to the old Hesk domain or old file path becomes a broken reference. We extract the attachments directory as part of the database-and-files package, re-upload files to Zoho Desk, and re-write HTML content and attachment URLs in article bodies post-import. If the source Hesk instance is decommissioned simultaneously with cutover, we ensure the file transfer is complete before DNS retirement.

  • Custom fields hit Zoho Desk's field-type constraints during import

    Zoho Desk does not allow changing a custom field's type after creation, and field names are capped at 50 characters. Hesk custom fields with names exceeding 50 characters must be shortened during the schema-design phase, which the customer must approve. Dropdown fields in Hesk that exceed Zoho Desk's maximum picklist value count (120 values) must be split into dependent picklists or converted to a text field, which changes how agents interact with the field in the ticket form.

  • Ticket history import requires correct authorship attribution

    Hesk's hesk_log table records ticket events with the acting user ID (staff) or 'customer' as the actor. When we import these as Zoho Desk Comments, we must resolve each actor ID to a Zoho Desk Agent or Contact record. If the original Hesk staff member is not yet provisioned as a Zoho Agent at migration time, their comments are attributed to a system migration account. We resolve ownership gaps during the agent reconciliation step before production migration begins, but customers with complex historical staffing changes should expect some audit log attribution to require post-migration manual correction.

Migration approach

Six steps for a successful Hesk to Zoho Desk data migration

  1. Schema discovery and database inventory

    We connect to the customer's MySQL instance via a secure, time-boxed connection, enumerate all Hesk tables (hesk_tickets, hesk_users, hesk_staff, hesk_categories, hesk_kb_articles, hesk_kb_categories, hesk_custom_fields, hesk_ticket_fields, hesk_attachments, hesk_log, hesk_settings, hesk_canned), record table and row counts, and scan for non-standard Mods-for-HESK schema extensions. We also export the attachments directory (naming convention and path structure). The discovery output is a written data inventory with record counts, schema map, and a GDPR scope questionnaire delivered to the customer for signature before any data extraction begins.

  2. Zoho Desk schema design and department mapping

    We configure the Zoho Desk destination before any data is pushed. This includes creating Departments that mirror Hesk's categories (one Department per category, or merged where the customer chooses consolidation), provisioning Agent accounts (matched to Hesk staff by email), creating custom fields on the Ticket module with correct field types, and setting up the KB structure with article categories. We also configure the customer's Zoho Desk timezone and date format to match Hesk's settings so that timestamps on imported records are accurate. The schema setup is validated in a pre-production Zoho Desk portal before migration begins.

  3. Sandbox migration and reconciliation

    We run a full test migration into the Zoho Desk sandbox environment using a representative data sample (typically the most recent 500 tickets, 50 KB articles, and 100 contacts). The customer's support operations lead spot-checks imported records against the source Hesk instance — verifying subject lines, ticket status, assigned agent, custom field values, and attachment presence. We correct any mapping errors identified during reconciliation and re-run the sandbox pass before scheduling production migration. This step typically takes three to five business days.

  4. Agent and user provisioning reconciliation

    We extract every distinct Hesk staff member referenced on tickets and in the log history, and match them against the Zoho Desk agent list by email address. Any Hesk staff member without a corresponding Zoho Agent account is placed in a provisioning queue. The customer's Zoho Desk administrator creates the missing agent accounts and assigns them to the correct Departments before production migration resumes. Migration cannot proceed past this step because ticket assignment (OwnerId) requires a valid Zoho Agent on every record.

  5. Production migration in dependency order

    We run the production migration in the correct dependency sequence: Departments (from Hesk categories), Agents (from Hesk staff, validated against the reconciliation queue), Contacts (from Hesk users), Knowledge Base Articles (with content and article-category mapping), Ticket records (with Department, Agent, and Contact lookups resolved), Ticket Comments (from hesk_log entries threaded under the correct parent ticket), Attachments (file-system export re-uploaded via the Zoho Desk Attachments API with URLs re-written), Custom field values (appended to ticket records after custom field creation is confirmed), and Canned Responses (imported as Macros). Each phase emits a row-count reconciliation report.

  6. Cutover, validation, and automation handoff

    We coordinate a cutover window with the customer's support team. During cutover, Hesk write access is suspended (or DNS is repointed if Hesk is self-hosted), a final delta migration captures any records modified during the migration window, and Zoho Desk is enabled as the system of record. We deliver a written automation inventory document listing every Hesk setting and workflow rule that has no equivalent in Zoho Desk — including email templates, ticket routing rules, and SLA configurations — with recommended Zoho Desk equivalents (Automation Rules, Macros, SLA Policies). The customer's Zoho Desk administrator rebuilds these post-migration. We support a five-business-day hypercare window for reconciliation issues raised during the first week of live operation.

Platform deep dives

Context on both ends of the pair

Hesk logo

Hesk

Source

Strengths

  • Zero-cost self-hosted option with no per-agent or per-ticket billing ever.
  • PHP/MySQL stack runs on any shared hosting or VPS with minimal server requirements.
  • One-time license fee ($49.99) removes branding and includes direct developer support.
  • Unlimited users per installation regardless of plan.
  • Direct MySQL access gives full data portability for teams comfortable with SQL exports.

Weaknesses

  • No public REST API — automation and third-party integrations require custom development or Mods-for-HESK community add-ons.
  • Dated admin interface compared to modern SaaS help desks; UI customisation is limited to CSS themes.
  • Limited automation: no built-in workflow rules, SLA timers, or escalation triggers beyond basic ticket routing.
  • Server maintenance (backups, upgrades, cron jobs, mail server config) is the customer's responsibility on self-hosted.
  • No native multi-channel routing beyond email-to-ticket; chat, phone, and social channels require external tools.
Zoho Desk logo

Zoho Desk

Destination

Strengths

  • Generous free tier for teams of up to 3 agents with no time limit, reducing financial risk for small support operations.
  • Per-agent flat pricing across tiers is significantly lower than Zendesk, Freshdesk, or Intercom at equivalent feature levels.
  • Tight integration with Zoho CRM, Zoho Books, and Zoho Creator provides a unified data ecosystem without third-party middleware.
  • Multi-channel ticket aggregation consolidates email, social, chat, and phone into a single queue view.
  • Assisted migration service handles the two-phase transfer process with Zoho's own migration team for inbound moves.

Weaknesses

  • The UI is frequently described as dated, clunky, and inconsistent across modules compared to modern SaaS competitors.
  • Advanced automation features including Blueprints, multi-brand, and live chat are tier-gated, limiting the free and Express plans to basic ticketing.
  • Non-Zoho integrations require custom Deluge scripting or external middleware, reducing flexibility for heterogeneous tech stacks.
  • Steep learning curve and complex customization options mean slower onboarding for new agents and ongoing training investment.
  • Export and migration capabilities are gated by plan tier, with data backup only available on higher plans.

Complexity grading

How hard is this migration?

Moderate Helpdesk migration. 4 of 7 objects need a mapping; the rest are 1:1.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Hesk and Zoho Desk.

  • Object compatibility

    C

    4 of 7 objects need a mapping; the rest are 1:1.

  • 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

    Hesk: Not documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Hesk to Zoho Desk 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 Hesk to Zoho Desk data migrations

Answers to the questions buyers ask most during Hesk to Zoho Desk migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Hesk to Zoho Desk migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Hesk to Zoho Desk migrations complete in three to five weeks for installations with under 10,000 tickets, a modest knowledge base, and fewer than 20 custom fields. Larger migrations (10,000 to 50,000 tickets, a full knowledge base, and multiple custom field definitions) extend to six to ten weeks because of the file-system attachment export and re-upload, URL re-mapping for embedded images, and department hierarchy configuration. The main variable is the volume of attachment files and whether the Hesk knowledge base contains embedded media that requires per-article URL re-writing.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Hesk.
Land in Zoho Desk, 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