Helpdesk migration guide

The Definitive Guide to Migrating to Freshdesk

Freshdesk is a multi-channel helpdesk whose import model rewards teams that pre-create agents, ticket fields and groups, and that treat Dispatch'r, Observer and Supervisor rules as rebuild work rather than import work.

22 min read 9 sections Updated May 27, 2026
Freshdesk
Tickets
Conversations
Customers
Attachments
Knowledge Base
Tags

Inside this guide

What you'll learn, section by section

  1. 01

    Why teams migrate to Freshdesk

    The four shapes a Freshdesk migration takes, and what makes the platform easier — or harder — than the category average.

  2. 02

    The Freshdesk data model you need to map into

    Tickets, Contacts, Companies, Agents, Groups, Solutions and Custom Objects — the destination schema decoded.

  3. 03

    Pre-migration prep — the work before you touch Freshdesk

    What must be true on the source, the destination, and across the team before the first row hits the import tool.

  4. 04

    Import mechanisms: UI wizard, CSV, and managed-migration tools

    The load paths in, each with different limits and shapes. Picking the wrong one is how mid-migrations stall at scale.

  5. 05

    Mapping your data into Freshdesk

    The longest section — because field mapping is where almost every migration that fails actually breaks.

  6. 06

    The pitfalls that derail Freshdesk migrations

    Nine specific failure modes — ranked by impact, each tied to the exact Freshdesk mechanism that breaks.

  7. 07

    Validation and cutover

    What to verify after the import job, in what order — and how to fail safely when something is wrong.

  8. 08

    Migration partners and tools

    Freshworks Marketplace apps, managed-migration vendors and iPaaS — what each is good for and how to choose.

  9. 09

    Frequently asked questions

    The eight questions every Freshdesk migration team works through before they sign the scope.

Section 01

Why teams migrate to Freshdesk

The four shapes a Freshdesk migration takes, and what makes the platform easier — or harder — than the category average.

Freshdesk is the customer-support product from Freshworks, founded in Chennai, India in 2010 by Girish Mathrubootham and Shan Krishnasamy 1. The company is now headquartered in San Mateo, California and went public on Nasdaq in 2021. Freshdesk sits inside a broader Freshworks suite that includes Freshservice (ITSM), Freshchat (messaging), Freshcaller (voice) and Freshsales (CRM).

The typical Freshdesk customer is a B2C or SMB support organisation — 3 to 500 agents — running inbound volume across email, web portal, social and chat without the admin overhead of Zendesk or ServiceNow. Compared with Zendesk, Freshdesk positions on simpler pricing and a flatter learning curve; compared with Help Scout or Front, it positions on a deeper automation engine and built-in Freddy AI for triage and reply suggestions.

Migration shapes that land on Freshdesk fall into four patterns. First, consolidation: replacing a stack of Zendesk plus Intercom plus a separate KB tool with Freshdesk's combined helpdesk and Solutions KB 4. Second, Zendesk exits — driven by pricing pressure or AI-deflection economics where Freddy Copilot replaces Zendesk AI's per-resolution fees.

Third, legacy replacements — shared Gmail inboxes, osTicket, Spiceworks or homegrown ticket systems — where the source has no real schema and the project is really a re-architecture. Fourth, M&A integration, where an acquired business standardises onto the parent's Freshdesk. A Zendesk migration usually has clean ticket-and-user parity but messy trigger logic; a shared-mailbox migration has no schema at all.

What makes migrating *to* Freshdesk easier than the category average is the Sandbox feature, which builds a full replica of production configuration and lets admins dry-run schema changes and imports before pushing to live 27. The native Contacts and Companies CSV importer is forgiving on date formats and auto-resolves duplicates by email.

What makes it harder than the average is that Dispatch'r, Observer and Supervisor rules, Scenario Automations, SLA policies, canned responses and Solutions categories do not import — all rebuild in the admin UI. Throughput is shaped by the plan tier you sit on, and Custom Objects are Enterprise-only, capped at 20 per account 11.

Teams that scope the rebuild up front finish on time; teams that assume parity do not.

Freshdesk is flexible and forgiving on the surface, but under the hood it has very clear opinions about how tickets, contacts, agents, groups, and fields fit together.

Section 02

The Freshdesk data model you need to map into

Tickets, Contacts, Companies, Agents, Groups, Solutions and Custom Objects — the destination schema decoded.

Freshdesk platform Contacts Companies Deals Tickets Tasks Notes
Standard objects orbit the platform; every association can be many-to-many with optional labels.

Freshdesk is built around a small set of standard objects with default and custom fields, plus lookup relationships. Solutions (Freshdesk's knowledge base) sits alongside the ticketing schema; Custom Objects extend it on Enterprise.

Before you can map a field on the source side, you need to know exactly which destination object the row belongs on, what fields it requires, and which value will serve as its upsert key. The table below summarises the objects you will touch in a Freshdesk migration.

Object Stores Required on import Tier
Tickets Support requests across email, portal, phone, chat and social Requester (email or contact ID), subject, description, status, priority, source All tiers
Contacts End-users / requesters — individuals who raise tickets Email (primary unique key) or phone All tiers
Companies Customer organisations that contacts belong to Name (unique within account) All tiers; multi-company per contact requires the feature toggle
Agents Internal users who resolve tickets Email, name, role; occasional vs full-time flag All tiers; seat-counted
Groups Agent collections used by routing and SLAs Name; member agent IDs All tiers
Solutions (KB) Categories → Folders → Articles, with translations Category, folder, article title, body All tiers; multilingual on Growth+
Products Lines of business in multi-product accounts Name; primary email Estate / Forest legacy; succeeded by Workspaces
Workspaces Newer isolation model replacing multi-product Workspace name; assigned agents and fields Enterprise (newer accounts)
Custom Objects Customer-defined record types associated to tickets, contacts or companies Schema defined first; per-field requirements Enterprise; max 20 per account, 100 fields each [11]

Contacts use email as the default unique identifier — the importer overwrites an existing contact if the CSV email matches one already in the helpdesk 9. A contact can hold a primary email plus up to nine secondary emails, allowing one person to span ten addresses 9. Companies match on name by default and are case-insensitive on dedup.

Tickets do not have a natural unique key — Freshdesk assigns a sequential ticket ID at creation. The standard pattern is to import with a unique_external_id custom text field on contacts and a custom number or text field on tickets that stores the source platform's ticket number, then use that for reconciliation and any later delta sync.

When you import via CSV, Freshdesk upserts contacts and companies on their unique key: matches update, misses create. Tickets always create — there is no native upsert for ticket CSV. Custom field types determine validation; the catalogue below covers what you can model and the limits to plan around.

Field type Limits Notes
Text 255 chars (single-line); larger for paragraph Stores any alphanumeric string; case-preserved
Paragraph (multi-line) ~64,000 chars Rich-text not supported; HTML stripped
Number Integer; signed Numeric filters and reports supported
Decimal Two decimal places by default Locale-dependent display; store as period-separated
Date YYYY-MM-DD only Date-only; timezone-stripped — wrong format aborts import 16
Dropdown Up to 3 levels of nesting on dependent fields Dropdown values are case-sensitive — exact match required 12
Checkbox true / false Multi-select uses a separate field type
Lookup relationship Up to 5 associations per Custom Object Custom-Native links Custom Objects to Tickets, Contacts, Companies only 13
Custom fields per ticket / contact / company Plan-gated: Free 0, Growth/Pro/Enterprise scale per type Custom fields cannot be deleted once data exists; archive instead

Relationships in Freshdesk are modelled as lookup fields added to ticket, contact or company forms. Native objects support Custom-Native and Native-Custom associations for Tickets, Contacts and Companies only — other native objects do not participate in custom-object associations 13. Custom Objects support up to 5 associations each, and a Custom Object record limit is not enforced as a hard ceiling but plan-scaled throughput effectively gates it 11.

There is no native master-detail cascade-delete: deleting a parent contact does not delete its tickets — reproduce that in Workflow Automator if your source platform relied on it. Companies-to-contacts is one-to-many by default; a feature toggle enables one contact across multiple companies.

Section 03

Pre-migration prep — the work before you touch Freshdesk

What must be true on the source, the destination, and across the team before the first row hits the import tool.

The single best predictor of a clean Freshdesk migration is how much work you do on the source side before the first import button is pressed. Practitioners describe it plainly: teams that respect Freshdesk's schema end up with calm migrations; teams that do not spend weeks cleaning up after go-live.

The single best predictor of a clean migration is how much work you do before the first import button is pressed.

Treat the source export as raw material that needs to be shaped to Freshdesk's expected formats — email lowercased, phone normalised to E.164 with country code (Freshdesk's phone channel requires +14088481234 style, not 408-848-1234 9), dropdown values cased exactly as configured in the destination, dates rewritten to YYYY-MM-DD, agents resolved to Freshdesk agent emails.

Source-side prep

  • Audit and dedup the source contact list before export — email deduplication should be done on the source spreadsheet, not relied on at import time. Practitioners report 10–25% fuzzy-match false positives in B2B lists where two people share name + company, so dedup requires human review.
  • Decide ticket scope — how much history is operationally useful? Two to five years of tickets is common; full history is technically possible but adds little value beyond about three years and substantially increases migration time and storage.
  • Normalise emails to lowercase, trim whitespace, and remove role-based addresses (info@, sales@) that you do not want flooding the contact database. Freshdesk will overwrite an existing contact when an import row matches its email 9.
  • Convert dropdown values to exact destination casing — Freshdesk dropdowns are case-sensitive on import. High and high are different values; mismatches are silently dropped or fail the row 12.
  • Stamp a stable external ID on every record in the source export — the source platform's primary key or a UUID — so re-runs, delta migrations and reconciliation are deterministic.

Destination-side prep

  • Build a Sandbox from Admin → Support Operations → Sandbox — a Sandbox is a full replica of your Freshdesk configuration used to dry-run schema changes and imports end-to-end before pushing to production 17.
  • Provision every agent including inactive or legacy ones needed for historical ticket ownership — rows whose assigned agent does not exist at import time land unowned, which silently breaks group reporting.
  • Create groups and assign agents before importing tickets, because group-based routing and SLA policies key off group membership at the moment a ticket is created or imported.
  • Pre-create every custom field on the right object (ticket, contact, company) with the right type — text vs paragraph vs dropdown matters because Freshdesk will not let you change a field's type after data has been written to it 12.
  • Define Custom Objects and their associations before importing related ticket data — Custom Object schemas must exist before records of that type can be created, and a ticket only supports one custom-object lookup per ticket 1113.
  • Disable automations during import — Dispatch'r, Observer, Supervisor rules, Scenario Automations and email notifications should all be turned off in Admin → Workflows before you import, or every imported ticket will fire its full automation chain at customers.

People prep

Cutover only works if humans cooperate. Lock down a source-system freeze window — typically 24 to 72 hours — and communicate it to every department that touches the helpdesk. Train agents on Freshdesk ticket-handling and rebuilt macros before go-live, not after. A typical Freshdesk migration runs roughly 2,000 tickets per hour through managed-migration tools, so plan the cutover window against total ticket count.

Section 04

Import mechanisms: UI wizard, CSV, and managed-migration tools

The load paths in, each with different limits and shapes. Picking the wrong one is how mid-migrations stall at scale.

Freshdesk exposes several load paths and the right one depends on dataset size, object mix, and whether you need to re-run idempotently. The native CSV importer covers Contacts and Companies through the UI. Tickets, conversations and attachments come in through managed-migration tools that sit on top of Freshdesk and add staging, transformation and dedup layers.

UI Import — Contacts and Companies

The native import lives under Admin → Customers → Contacts (or Companies) → Import 9. It accepts CSV with headers that the importer auto-maps to Freshdesk fields; you can also manually adjust the mapping if column names diverge from field names 8. Existing contacts matched on email are overwritten by import rows, so backups before re-importing are essential.

Limits on the native CSV path are modest: the importer does not publish a hard per-file row cap but practical experience and the Freshworks marketplace Import app exist precisely because the native flow becomes unwieldy past a few thousand rows 5. Tickets are not importable through the native UI — they must come in via a managed-migration tool.

Third-party and managed-migration tools

Several specialist managed-migration apps live on the Freshworks Marketplace, alongside generic iPaaS tools like Airbyte and Fivetran 529. For one-time migrations from sources such as Zendesk, Intercom, Help Scout, Jira Service Management or shared inboxes, these tools handle ticket-by-ticket loading, conversation threading, attachment transfer and delta sync after the initial load.

For ongoing syncs (the post-migration phase), Airbyte and Fivetran become the system of integration — Airbyte's open-source Freshdesk connector lands ticket and contact data into a warehouse for analytics, and reverse-ETL flows write enrichment back into Freshdesk.

Rule

Under 5,000 contacts/companies on standard fields → native CSV import. Any ticket history, any conversation threads, or any cross-platform migration → managed-migration tool.

Section 05

Mapping your data into Freshdesk

The longest section — because field mapping is where almost every migration that fails actually breaks.

SOURCE FRESHDESK FirstName, LastName firstname, lastname AccountName company AnnualRevenue annualrevenue Owner.Email hubspot_owner_id CreatedDate createdate
Field-mapping flow — every source field resolves to a destination property or an explicit drop.

Mapping is where every helpdesk migration earns its scars. The schema decisions you make in your mapping spreadsheet determine whether agents can find historical tickets on day two, whether SLAs fire correctly on day five, and whether reporting trusts the data on day thirty.

Work object by object, top to bottom of the import order: Agents and Groups first (so tickets can be assigned), then Companies (so contacts can be associated), then Contacts, then Tickets and their conversation threads, then Solutions (KB), and finally Custom Object records.

Contacts and Companies

Common source → Freshdesk Contact mapping

Source Destination
  • email
    email (unique identifier)

    Lowercased on import; upsert key by default — match overwrites 9

  • secondary emails
    secondary_emails (up to 9)

    One contact can hold 10 emails total 9

  • first / last name
    name

    Freshdesk stores a single name field; concatenate on the source side

  • phone
    phone

    Normalise to E.164 with country code (+14088481234) so the phone channel can match 9

  • company
    company_id (lookup) or company_name

    Import companies first; contacts resolve to the most recent matching company name

  • view all company tickets flag
    view_all_tickets

    Set during import or contact cannot see organisation-level ticket lists 9

  • language
    language

    Two-letter code; defaults to account language if missing

  • time zone
    time_zone

    Use the IANA format Freshdesk expects (America/Los_Angeles)

Tickets, conversations and threads

Tickets are the centre of gravity. Each carries a requester, subject, description (first message body), status, priority and source channel — the source value (email, portal, phone, chat, feedback widget, outbound) drives Source-based reports.

Conversations on a ticket come in two flavours: public notes (visible to the requester) and private notes (internal-only). Both carry author, body, timestamp and optional attachments. The migration pattern: create the ticket with the description as the first message, then load remaining conversation entries as notes (private and public agent notes) and replies (outbound public agent replies). Backdating created_at on each note keeps the thread chronological rather than collapsing to import-day 21.

Common source → Freshdesk Ticket mapping

Source Destination
  • ticket_id / case_number
    Custom number field: legacy_ticket_id

    Freshdesk assigns its own sequential ID — store the source ID in a custom field for reconciliation

  • subject / title
    subject

    Required

  • first message body
    description

    HTML accepted; inline images need attachment re-upload

  • requester email
    email or requester_id

    Import contact first; use email if contact already exists

  • status
    status (numeric: 2=Open, 3=Pending, 4=Resolved, 5=Closed)

    Map source statuses to the integer codes Freshdesk expects 19

  • priority
    priority (numeric: 1=Low, 2=Medium, 3=High, 4=Urgent)

    Same integer-code mapping; defaults to Low if missing

  • channel / source
    source (numeric: 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedback widget, 10=Outbound)

    Drives Source reports — get this right or your channel mix breaks

  • assigned agent
    responder_id (or email)

    Agent must exist in Freshdesk at import time or ticket lands unassigned

  • group
    group_id

    Group must exist; otherwise ticket falls into default group

  • tags
    tags (array)

    Free-form strings; tag spillover is a common cleanup issue post-migration

Solutions (knowledge base)

Freshdesk's knowledge base is Solutions, a three-level hierarchy: Category → Folder → Article. Categories group folders (often by product or audience), folders group articles, and articles carry title, HTML body, status (draft/published) and visibility (public/logged-in/agents-only).

Import KB content top-down: categories first, then folders inside each category, then articles inside each folder. Translations are imported separately per article per language code and require the article to exist in the primary language first. Inline images in article HTML must be re-uploaded as attachments — source URLs that point at the old platform's CDN will break.

Automation rebuild — Dispatch'r, Observer, Supervisor, Scenario Automations

Freshdesk has three automation engines and none of them import — they are rebuilt by hand in Admin → Workflows. Dispatch'r fires on ticket creation (events like a new email arriving). Observer fires on ticket update (events like status changes or note additions). Supervisor is time-based and runs hourly across the helpdesk — useful for SLA escalations and stale-ticket nudges 20.

Scenario Automations (Freshdesk's equivalent of macros) are agent-invoked bundles of actions and likewise rebuild-only. Document every source rule with its trigger conditions and actions, group them by engine type, and rebuild in priority order — Dispatch'r first because it shapes incoming tickets, then Observer for in-flight updates, then Supervisor for time-based housekeeping, then Scenario Automations once agents start working in the system.

SLA policies, business hours and CSAT

SLA policies are configured under Admin → Workflows → SLA Policies and combine a business-hours calendar (working days and times), a set of priority-based response and resolution targets, and an escalation chain. SLA policies do not import — recreate every policy with its priority-level targets, link each to the right business-hours calendar, and assign products or groups as scoping conditions 20.

CSAT ratings live on resolved tickets. Historical CSAT scores can be loaded onto migrated tickets through a managed-migration tool — this is optional and only worth doing if you need year-over-year CSAT trend reporting in Freshdesk Analytics. New CSAT surveys post-go-live are sent automatically on ticket resolution based on the survey configuration in Admin → Customer Satisfaction.

Multi-channel inbox setup

Channel configuration is entirely UI-driven and must happen *after* the data import and *before* go-live. Email requires connecting each support address under Admin → Channels → Email with SPF/DKIM verification and forwarding from the source provider. Phone is a Freshcaller number; chat enables Freshchat; social connects Twitter, Facebook or Instagram; WhatsApp/SMS through the WhatsApp Business or SMS channel apps.

Do not enable email forwarding from production support inboxes until after the import window closes — otherwise every email forwarded during the migration creates a duplicate ticket against the contact you just imported 21.

Files and attachments

Attachments on tickets are capped at 20 MB per conversation on paid plans (15 MB on legacy Sprout / trial accounts) 23. Larger files use the Dropbox or OneDrive integration to hotlink rather than uploading directly. During migration, attachments are downloaded from the source as binaries and re-uploaded into Freshdesk attached to the migrated ticket or note.

Attachments count against the account's overall storage allowance, which is tier-dependent. For large estates, the common pattern is: re-upload only attachments newer than 12 months, and store deep links to S3 or the original provider in a custom URL property on older tickets.

Audit trail, ownership and original timestamps

created_at and updated_at are managed by Freshdesk — but Freshdesk allows backdating created_at on tickets during import so the timeline shows the original date 21. Freshdesk stamps the import day on most updates but preserves the original created_at, which means a first_responded_at that predates created_at is possible and benign 24.

Agent assignment during import works only if the agent email exists at the moment of import; rows whose responder_id cannot be resolved are imported with no agent set, which silently breaks downstream agent-based reporting. The audit log under Admin → Account → Audit Log tracks configuration changes (agent creation, automation edits, KB edits) but not granular per-field changes on individual tickets 25.

Section 06

The pitfalls that derail Freshdesk migrations

Nine specific failure modes — ranked by impact, each tied to the exact Freshdesk mechanism that breaks.

High impact

Automations left enabled during import

Dispatch'r, Observer, Supervisor and Scenario Automations all fire on imported tickets if left enabled. Every historical ticket triggers its full automation chain — agent assignment emails, SLA breach alerts, escalation notifications go out to customers and agents for tickets that closed two years ago. Disable every automation rule and email notification under Admin → Workflows and Admin → Email Notifications before the first row lands, and re-enable after reconciliation.

High impact

Dropdown values rejected on case mismatch

Freshdesk dropdown fields are case-sensitive. Source value High against destination option high is rejected; Tech Support against Tech support is rejected. The CSV importer aborts the row with an unclear error; programmatic loaders return value not in available choices. Normalise every dropdown column in the export to exactly match the destination option strings, including capitalisation, spacing and special characters 12. 12

High impact

Date fields require YYYY-MM-DD and abort on anything else

Freshdesk's date custom fields accept exactly YYYY-MM-DD. CSV imports with 01/15/2025, 15-Jan-2025 or ISO datetime strings fail with Invalid date format and the row is rejected 16. The error is clear when you read it but easy to miss because the importer keeps going on other rows. Rewrite every date column to YYYY-MM-DD in the export, and explicitly choose the date format in the import-mapping step. 16

High impact

created_at on tickets can be backdated, but not on contacts and companies

Tickets accept a created_at override during import — historical tickets show on the timeline at their original date. Contacts and Companies do not — every imported contact and company shows a created_at of import day in reports filtered by creation date 21. The mitigation is to add a legacy_created_date custom datetime field on Contacts and Companies, populate it from the source export, and rewrite every historical contact-cohort report to filter on the legacy field. 21

Medium impact

Custom Objects cap at 20 per account with 5 associations each

Custom Objects are Enterprise-only and capped at 20 per account, 100 fields per object, and 5 associations per object 11. Tickets only support one custom-object lookup field per ticket — so a many-to-many model between tickets and a custom object requires an intermediate object and complex routing rather than a clean junction table. Detect this in advance and either collapse the model or push the secondary association into a contact-level custom field. 11

Medium impact

Custom field type cannot be changed after data is written

Once a Freshdesk custom field has data in it — even one row — you cannot change its type from text to dropdown, or dropdown to text. The field has to be archived and a new field created with the right type, then data copied across via Workflow Automator or a backfill script. Teams discover this on day two when they realise a free-text product code should have been a dropdown for reporting. Lock the schema before the first import 12. 12

Medium impact

Email channel reconnect creates duplicate tickets

When you connect a support email channel to Freshdesk after the import, Freshdesk fetches the last 48–72 hours of messages from that inbox by default and creates tickets for each — duplicating tickets you already imported for that window 21. The mitigation is to either delete the over-fetched tickets created during the reconnect, or schedule the email connection to happen after the source mailbox is fully drained. 21

Low impact

Sandbox is plan-gated and changes sync one-way only

Sandbox is available on Estate / Forest legacy and Pro / Enterprise current plans, not on Growth or Free 17. Even on supported tiers, you build the Sandbox once as a replica, then test changes — and syncing back to production goes one direction (Sandbox → live) with conflict resolution required when a config changed on both sides. Plan for the Sandbox copy to drift if production keeps changing during migration prep. 17

Section 07

Validation and cutover

What to verify after the import job, in what order — and how to fail safely when something is wrong.

1 Read-only Source goes write-frozen 2 Final delta Export incremental changes 3 Import Load into Freshdesk 4 Validate Reconcile + spot-check 5 Cut over Users on new system
Cutover sequencing — five gated phases between source read-only and full user access.

Validation is the bridge between the import finishing and agents being allowed in. The reliable pattern is a three-stage approach: a demo / sample load of about 100 random tickets with stakeholder spot-checks, the full load with real-time monitoring of record counts and error rates, then a delta migration that captures everything that changed in the source during the full load.

Build a reconciliation queries spreadsheet that compares source and destination on each of these counts. Anything outside a 0.5 percent variance gets investigated before agents get login access.

  • Total tickets imported vs source — minus deliberately excluded rows (spam, test tickets, rows older than the agreed history horizon).
  • Tickets per status (Open, Pending, Resolved, Closed) vs source — a non-trivial mismatch usually signals a status integer-code mapping error.
  • Tickets per priority and per source channel vs source — confirms the priority and source integer-code mappings round-tripped correctly.
  • Conversation count per ticket for a 100-ticket sample vs source — confirms public and private notes attached to the right parent.
  • Total contacts and companies imported vs source — checking that email-based collapse did not over-merge two distinct people sharing an inbox.
  • Attachments per ticket for a 50-ticket sample — confirms the binary re-upload completed and inline images render.
  • Solutions categories, folders and articles counted by hierarchy — confirms the KB tree round-tripped.
  • Agent and group assignmentsGROUP BY responder_id and confirm no ticket landed unassigned that should not have.
  • CSAT scores if historical Satisfaction Ratings were loaded — confirms historical scores attached to the right tickets.

On top of reconciliation, run a manual spot-check: pick 30 random tickets across statuses and verify each against the source UI — subject, body, full conversation thread, attachments, requester, agent, status, tags. Pick five VIP tickets and trace the full conversation graph. If three or more of the 30 show non-trivial discrepancies, halt the load, fix the root cause, and re-import affected tickets by source ID.

Freshdesk does not have a native bulk-undo for imports. The real rollback strategy is: export every record to a tagged S3 bucket before the import starts, stamp every imported ticket with a migration_batch_id custom field, and if catastrophe strikes, bulk-delete by that batch ID and re-import from the cleaned source. Soft-deleted tickets in Freshdesk's trash retain for 30 days, providing a brief recovery window for accidental deletions 25.

Cutover sequencing: (1) source goes read-only; (2) final delta export captures everything that changed during the test-import window; (3) delta is imported via the same loader; (4) reconciliation runs; (5) email forwarding repoints from source to Freshdesk support addresses; (6) automations and email notifications re-enable; (7) agents get login access and a 48-hour hyper-care window; (8) source decommission is scheduled 30 to 90 days out.

Section 08

Migration partners and tools

Freshworks Marketplace apps, managed-migration vendors and iPaaS — what each is good for and how to choose.

The Freshworks ecosystem has a smaller set of specialist migration vendors than Zendesk or Salesforce, but the tools that exist are mature. Wizard-driven managed-migration apps on the Freshworks Marketplace install into your Freshdesk account and walk through field mapping in a UI 529 — covering Zendesk, Intercom, Help Scout, Jira Service Management, ServiceNow, Gorgias and shared inboxes as common sources.

A second band of long-running managed-migration vendors in the Freshdesk corner offers free sample migrations of around 100 tickets with associated organisations and contacts, then quotes the full migration based on record count and complexity. These tools handle ticket-by-ticket loading, conversation threading, attachment transfer and a follow-up delta migration to catch records that changed during the main load.

On the ETL and iPaaS side, Airbyte and Fivetran both have Freshdesk connectors. Their role in a migration is rarely the migration itself — it is the staging layer that lands source data into a warehouse, the transformation layer that converts dropdown values and resolves agent IDs in SQL, and the ongoing-sync layer that takes over once the one-time migration is complete. Workato and Tray.io are common picks where the migration is bundled with workflow-automation rebuilds.

Managed-migration cost ranges vary widely. A clean Zendesk-to-Freshdesk move under 25,000 tickets with standard fields and no Solutions content often lands in the $1,500–$5,000 range. Larger migrations with full conversation history, attachments, KB content and SLA / automation rebuild typically run $5,000–$25,000, driven by ticket count, custom-field complexity, historical depth and the integrations that need rebuilding rather than re-pointed29.

For teams that want to outsource the migration end-to-end, FlitStack specialises in Freshdesk migrations and handles the field mapping, ticket-history preservation, Dispatch'r / Observer / Supervisor rebuild, Solutions KB import and validation work described in Sections 5 and 7 of this guide. Pricing is fixed-fee, based on ticket count and source platform, with separate line items for Custom Objects and SLA / automation rebuild depth so the scope is transparent before signature.

This is one of several legitimate paths — the right choice for any given team depends on whether they want a Marketplace app they can drive themselves, a managed vendor handling the full project, an iPaaS-first approach, or a specialist migration partner. Explore FlitStack →

Section 09

Frequently asked questions

The eight questions every Freshdesk migration team works through before they sign the scope.

References

Sources

  1. 1 Freshworks — Wikipedia
  2. 4 r/SaaS — Migrating from Zendesk + Intercom
  3. 5 Import to Freshdesk — Freshworks Marketplace
  4. 8 Freshworks Community — FreshDesk company import process
  5. 9 Import and export customers and company information — Freshdesk
  6. 10 Throughput and plan-tier limits — Freshdesk
  7. 11 Freshworks Developer Community — Custom Object limits
  8. 12 Zammad — Freshdesk custom field types that cannot be mapped abort import
  9. 13 Associating different object types in Freshdesk
  10. 16 Freshworks — Offline Events common errors (date format)
  11. 17 Set up your Sandbox account — Freshdesk Support
  12. 19 Freshdesk integration reference
  13. 20 Creating automation rules that run on hourly triggers — Freshdesk
  14. 21 Converting Support Emails into tickets — Freshdesk Support
  15. 23 Ticket attachment size limit — Freshdesk Support
  16. 24 Freshworks Community — first_responded_at before created_at
  17. 25 Track helpdesk changes using Audit Log in Freshdesk
  18. 27 Freshdesk Sandbox — Freshworks
  19. 29 Freshworks Data Import to Freshdesk — Marketplace

Need help running this migration?

FlitStack AI runs Freshdesk migrations end-to-end.

Fixed-fee pricing, a hands-on migration engineer, full field mapping and validation. The work described in this guide — done for you.