How to Migrate from Freshdesk to Zoho Desk
Moving a live support operation from Freshdesk to Zoho Desk is less a single button-press and more a project with three moving parts: getting the data across intact, getting the people pointed at the new tool, and rebuilding the logic — the automations, SLAs, and reports — that never travels with the tickets. The data part is largely solved for you; Zoho ships a native importer and there are mature paid tools that do the heavy lifting. The rebuild part is where teams get surprised. This guide walks the whole move end to end: what maps to what, a realistic downtime plan, the native-versus-paid-tool tradeoff, and the gotchas that bite in the middle of a migration weekend.
The two ways to get your data across
There are two credible paths, and most teams pick one based on data volume and appetite for handholding.
The first is Zoho's own native importer, Zwitch, which you reach inside Zoho Desk under Setup → Data Administration → Data Migration. Per Zoho's Migrating From Freshdesk to Zoho Desk documentation, Zwitch reads a set of XML backup files exported from Freshdesk and maps them into Zoho Desk objects. It's free, it's first-party, and it's opinionated about file format — it accepts XML only (JSON is unsupported), and you have to keep the original backup filenames intact, like Users1.xml and Tickets1.xml.
The second is a third-party migration service such as Help Desk Migration (by Relokia), which connects to both help desks via API, runs a free demo migration on a sample, and then does a full pass with a mapping wizard and support on hand. This is the path to choose when you have a large or messy dataset, custom fields everywhere, or you simply want a dry run you can inspect before committing.
What actually moves — and what you rebuild
This is the single most important table in any migration plan. Standard records port cleanly; the operational logic does not. Based on Zoho's Zwitch documentation and Help Desk Migration's Zoho Desk guides, here's the honest split.
| Object in Freshdesk | Where it lands in Zoho Desk | Moves automatically? |
|---|---|---|
| Agents (from Users) | Agents | Yes — active/confirmed agents; match by email |
| Contacts (from Users) | Contacts | Yes |
| Companies / Organizations | Accounts | Yes |
| Tickets (subject, status, priority, source) | Tickets | Yes — standard fields map directly |
| Ticket ID | Stored in display-id | Yes — original Freshdesk ID preserved |
| Public notes / replies | Threads | Yes |
| Private notes | Ticket Comments | Yes |
| Attachments | Attachments | Yes |
| Custom ticket fields | Custom fields | Partial — created dynamically, types predicted from sampled data; create in advance for a clean map |
| Knowledge base (Solutions) | KB Root Categories → Sections → Article Translations | Yes |
| Tags | Tags | Yes (via paid tools) |
| Automations / Dispatch'r / Supervisor rules | — | No — rebuild in Zoho Blueprint/Workflows |
| SLA policies & business hours | — | No — rebuild |
| Scenario automations / canned responses | — | Rebuild (macros/snippets) |
| Analytics, reports, dashboards | — | No — rebuild in Zoho Desk reports |
| Ticket assignment / round-robin logic | — | No — reconfigure |
The pattern to internalise: records move, rules don't. Zoho's own documentation lists the objects Zwitch transfers, and automations, SLAs, workflows, and reports are conspicuously absent from that list — because those are configuration, not data, and every help desk expresses them differently. Budget explicit time to rebuild them, ideally before the data lands so the new tickets have somewhere to flow.
Step by step: the migration itself
Whichever tool you use, the sequence is broadly the same. Here's a native-first walkthrough with the third-party equivalents noted.
- Audit and clean first. Merge duplicate contacts, close stale tickets, and prune junk in Freshdesk. You're about to pay (in time or credits) to move every record, so migrate less by deleting more.
- Provision Zoho Desk. Create your departments, agent seats, and — critically — the custom fields you'll need. Both Zoho's importer and paid tools warn that custom fields map best when they already exist on the target; Help Desk Migration recommends creating them in advance because they cannot always be created automatically.
- Export from Freshdesk. For Zwitch, generate the XML backup files from Freshdesk and keep their original filenames. For a paid tool, you instead connect Freshdesk via subdomain and API key — no manual export.
- Map fields. Line up each Freshdesk field to its Zoho Desk counterpart. The hard rule from Help Desk Migration: only map fields of the same type — a text field to a text field, a dropdown to a dropdown — or the migration will error or silently drop values.
- Match agents. Zoho matches agents by email. Deactivated, unconfirmed, or Light agents won't appear until you activate or confirm them, so sort agent status before this step.
- Run a demo / test batch. Migrate a small sample and open the resulting tickets. Check threads, private-vs-public note placement, attachments, and custom-field values. (Note: with Help Desk Migration, the Full Migration deletes the free demo's records first to avoid duplicates — expected behaviour, not a bug.)
- Run the full migration, then reconcile counts (tickets, contacts, articles) against Freshdesk before you cut over.
The downtime plan — be honest about the freeze
Here's the part glossy migration pages gloss over: tickets keep arriving while you migrate. If you export Freshdesk on Friday and import over the weekend, anything that lands in the gap won't be in your snapshot. Zoho notes that most Freshdesk-to-Zoho-Desk migrations complete in 1–5 business days depending on volume, and third-party runs on large datasets can take longer — so plan for the gap, don't wish it away.
A workable freeze plan:
- Pick a low-volume window (a weekend, a holiday) and announce a maintenance note internally.
- Disable email notifications on both systems during the run — Help Desk Migration explicitly recommends this so agents and customers aren't spammed by status changes on migrated tickets.
- Freeze new work in Freshdesk at export time; route incoming email/portal tickets to a holding inbox.
- Run a Delta pass at the end if your tool supports it, to sweep up records created after the initial export, before flipping DNS/forwarding to Zoho.
- Cut over intake — point your support email and portal at Zoho Desk only once counts reconcile.
Expect a genuine, if short, freeze. The alternative — running both help desks live in parallel — creates split ticket histories that are far more painful to untangle later.
Native Zwitch vs a paid tool: which to pick
Zwitch is free and first-party, which is exactly right for a small-to-mid Freshdesk instance with mostly standard fields and a tidy KB. Its constraints are real, though: it's XML-file driven, custom-field mapping is best-effort based on sampled data, and there's less hand-holding when something doesn't line up.
A paid tool like Help Desk Migration costs money (typically priced per record, with a free demo) but buys you an API-to-API connection, an inspectable demo run, granular field mapping, Delta migration, and support during the cutover. For large, custom-heavy, or business-critical moves, that's usually money well spent. Neither option, it's worth repeating, moves your automations, SLAs, or reports — that rebuild is on you regardless of which importer you choose.
Where an AI layer fits after the move
Once your tickets are in Zoho Desk, the temptation is to rebuild every Freshdesk automation one-for-one and call it done. It's worth pausing there. A lot of what teams laboriously recreate — routing rules, canned-response macros, first-reply templates — exists to compensate for the fact that the help desk itself can't reason about a ticket. That's the gap an AI agent layer closes, and it's worth understanding the build-versus-buy tradeoff before you commit engineering time to it.
If you're weighing the switch specifically to get better automation, note that you can add that intelligence to the help desk you already run without migrating at all. Macha is an AI agent layer that sits on top of the Freshdesk you already use as a native connector — it does not replace Freshdesk or Zoho Desk, and it isn't a help desk of its own. The broader category of AI agents for customer service exists to do the reasoning-heavy work — reading a ticket, understanding intent, drafting a grounded reply, and calling out to your systems through a custom tool — that a migration and a pile of static rules never quite deliver. If part of your motivation for moving is "our Freshdesk automation isn't smart enough," it's worth reading how to automate Freshdesk with AI first, because you may not need to move at all. (Macha's connector is for Freshdesk specifically — not Freshchat, Freshservice, or Freshcaller — and credits are consumed per AI action, not per resolution; the pricing page breaks that down.)
None of that changes the migration mechanics if you've decided Zoho Desk is where you're going. But it's the honest footnote: sometimes the pain that triggers a migration is an intelligence gap, not a platform gap — and those are solved very differently.
FAQ
Does the native Zoho Desk importer move everything from Freshdesk? No. Zwitch moves records — agents, contacts, accounts, tickets, threads, comments, attachments, and knowledge base articles — and it preserves your original Freshdesk ticket ID in a display-id field. It does not move automations, SLA policies, business hours, or reports; those are configuration and must be rebuilt in Zoho Desk.
How long does a Freshdesk-to-Zoho-Desk migration take? Zoho says most migrations complete within 1–5 business days, and smaller datasets often finish in under a day. Large or custom-heavy instances run through a third-party tool can take longer, especially with a demo pass plus a full run plus a Delta sweep at the end.
What's the difference between Zwitch and Help Desk Migration? Zwitch is Zoho's free, first-party importer that reads XML backup files from Freshdesk. Help Desk Migration is a paid third-party service (typically priced per record, with a free demo) that connects both systems via API and offers an inspectable demo, granular field mapping, and Delta migration. Neither moves your automations or SLAs.
Do I have to create custom fields before migrating? Yes, ideally. Custom fields can be created dynamically by Zwitch with types predicted from sampled data, but both Zoho and Help Desk Migration recommend creating the fields you need in Zoho Desk first — then mapping like-type to like-type — for a clean, predictable result.
Can I add AI to Freshdesk instead of migrating? Yes. If your motivation is smarter automation rather than the platform itself, an AI agent layer like Macha connects to Freshdesk as a native connector and runs on top of it — reading tickets, drafting grounded replies, and triaging by intent — without any data migration at all.
Deciding whether the move is even necessary? Start a free trial of Macha and connect it to your Freshdesk in minutes to see how much of the "we need better automation" problem it solves before you commit to a migration.
Add AI agents to your Freshdesk
Macha resolves tickets end to end on Freshdesk — no migration, no code.
Shopify
Stripe
Slack
Notion
Google Workspace
Confluence

