Helpdesk migration

Migrate from eTicket to Freshdesk

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

eTicket logo

eTicket

Source

Freshdesk

Destination

Freshdesk logo

Compatibility

80%

8 of 10

objects map 1:1 between eTicket and Freshdesk.

Complexity

CModerate

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from eTicket to Freshdesk is a schema translation that requires careful object-level mapping before any records move. eTicket stores Customers, Agents, Teams, Tickets, Conversations, Attachments, Tags, and KB Articles in a flat or loosely relational structure; Freshdesk expects Contacts, Companies, Agents, Groups, Tickets with threaded Conversations, and Knowledge Base categories mapped to its hierarchical object model. We audit eTicket's custom field inventory during scoping, resolve the agent-to-User lookup in Freshdesk before any ticket import, and chunk large ticket histories into batches that respect Freshdesk's API pagination limits. Automations, SLA policies, and reporting dashboards do not migrate as code; we deliver a written inventory of these for your admin to rebuild in Freshdesk's Admin settings.

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

eTicket logo

eTicket

What's pushing teams away

  • The project is effectively dormant — the latest documented release (1.7.3) is from October 2008, with no modern development cadence, leaving customers exposed to unpatched dependency and security issues.
  • No public API and no modern integration story — teams that want to connect helpdesk data to CRM, BI, or modern automation tools have no native path.
  • PHP and MySQL stack assumptions are dated; deploying on modern hosting often requires patching PHP compatibility issues that the upstream project does not address.
  • Limited reporting and analytics — eTicket is a basic queue-and-conversation tool, with no SLA timers, no advanced workflow, and no dashboard depth that modern helpdesks ship by default.
  • Migration paths to modern helpdesks (Zendesk, Freshdesk, Help Scout) are entirely manual — there is no published export tool or supported migration partner, so teams must scrape the MySQL database directly.

Choosing

Freshdesk logo

Freshdesk

What's pulling them in

  • Free tier for 1-2 agents with no credit card makes initial evaluation risk-free and appeals to startups and small support teams.
  • Per-agent pricing is predictable and scales cleanly as teams grow from Growth at $15/agent/month to Enterprise at $89/agent/month.
  • Freddy AI Copilot and Email AI Agent bring AI assistance without forcing a full platform switch, appealing to teams already embedded in Freshdesk.
  • Multilingual help desk and customer portal features serve global SMB teams without requiring enterprise-level investment.
  • Collaborators up to 5,000 included in paid plans allow non-agent stakeholders to view tickets without additional licensing cost.

Object mapping

How eTicket objects map to Freshdesk

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

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

eTicket

Customer

maps to

Freshdesk

Contact

1:1
Fully supported

eTicket Customer records map directly to Freshdesk Contact. We map Name, Email, Phone, and any custom fields. If eTicket stores a Company name on the Customer record and the customer uses Freshdesk Companies, we create a Company record first and link the Contact via the company_id field. Any Customer without an email is flagged for admin review because Freshdesk Contacts require a unique email by default.

eTicket

Customer

maps to

Freshdesk

Company

1:many
Fully supported

If eTicket stores an Organization or Company field on the Customer record, we group those Customers into Freshdesk Company records. Multiple eTicket Customers sharing the same company name merge into one Freshdesk Company, with each Customer linked via company_id. This step is optional and confirmed during scoping based on whether the team uses Freshdesk's Companies feature.

eTicket

Agent

maps to

Freshdesk

Agent (Freshdesk)

1:1
Fully supported

eTicket Agents map to Freshdesk Agents. We match by email address. Any eTicket Agent without a corresponding Freshdesk User is added to a reconciliation queue for the customer's admin to provision before the ticket import phase. Agent status (active/inactive) in eTicket maps to Freshdesk agent availability status, and Group membership migrates if the customer uses Freshdesk Groups.

eTicket

Team

maps to

Freshdesk

Group

1:1
Fully supported

eTicket Teams map to Freshdesk Groups. We use the Group API to create destination Groups before agent reassignment, then update each agent's group_id to point to the corresponding Freshdesk Group. If eTicket agents belong to multiple Teams, we create multiple Freshdesk Group memberships per agent.

eTicket

Ticket

maps to

Freshdesk

Ticket

1:1
Fully supported

eTicket Tickets map directly to Freshdesk Tickets. Subject, description (as the first conversation), status, priority, and type transfer. Ticket ID from eTicket is preserved in a custom field eticket_id__c for audit and cross-reference. We handle the Freshdesk status numeric values (2=Open, 3=Pending, 4=Resolved, 5=Closed) against eTicket's status labels during the transform step.

eTicket

Conversation

maps to

Freshdesk

Conversation

1:1
Fully supported

Each eTicket ticket conversation (customer reply or agent response) maps to a Freshdesk Conversation record attached to the corresponding Ticket. We preserve threading order by setting the created_at timestamp and inbound/outbound direction (incoming vs outgoing). Attachments referenced in conversations migrate as Freshdesk attachments with the 10 MB file size limit checked before upload.

eTicket

Attachment

maps to

Freshdesk

Attachment

1:1
Fully supported

eTicket file attachments migrate as Freshdesk Ticket Attachments. We download each attachment from eTicket, validate the file size (Freshdesk caps at 10 MB per file), and upload via Freshdesk's attachment API before linking to the corresponding conversation record. Files exceeding 10 MB are flagged for the customer's admin to handle manually.

eTicket

Tag

maps to

Freshdesk

Tag

1:1
Fully supported

eTicket Tags migrate as Freshdesk Tags. Tags are applied to Tickets via Freshdesk's tag API after the ticket is created. We preserve the tag string exactly to maintain reporting continuity. Tags used for categorization (not just labels) are reviewed during scoping to ensure the target tag taxonomy is consistent.

eTicket

Custom Field

maps to

Freshdesk

Custom Field

lossy
Fully supported

eTicket custom ticket fields are mapped to Freshdesk custom fields by type: text fields map to Text, numeric fields map to Number, date fields map to Date, and dropdown-style fields map to Dropdown or Checkbox depending on eTicket's structure. Freshdesk allows a maximum of 100 custom fields per object. We pre-create the destination custom fields via Freshdesk's API before any ticket import begins. Fields with no direct Freshdesk equivalent are flagged and mapped to a Text field with a note in the migration documentation.

eTicket

KB Article

maps to

Freshdesk

Article

1:1
Fully supported

If eTicket stores Knowledge Base articles, they map to Freshdesk Solution Articles. We preserve article title, description (rich text), folder assignment, and status (Draft/Published). Articles without a matching Freshdesk Folder or Category are placed in a default folder created during setup. Multilingual articles are migrated as separate article records with the language indicated in a custom field.

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.

eTicket logo

eTicket gotchas

High

Project is effectively dormant — latest release dates to 2008

High

No public API or vendor-supported export tooling

Medium

Attachments live on disk and can be orphaned

Medium

No SLA, automation, or modern routing engine

Freshdesk logo

Freshdesk gotchas

High

API access is blocked on the free plan

High

Per-minute rate limits are account-wide and endpoint-specific

Medium

Multi-channel source types do not map 1:1 to all destinations

Medium

Custom objects created in-product cannot be accessed by other apps

Low

Contact import requires at least 10 existing tickets in the account

Pair-specific challenges

  • Freshdesk API is not available on the Sprout/free plan

    Freshdesk's REST API requires the Blossom plan or above. If the destination account is on Sprout, API-based migration is blocked and the customer must upgrade before any automated transfer begins. We confirm the destination plan tier during scoping. If the customer is on Sprout, we include the plan upgrade decision in the discovery output and delay the migration until API access is active. This is a pair-specific constraint because eTicket itself may also be on a free or entry-level plan that limits export options.

  • Freshdesk's List Tickets API caps at 300 pages of results

    Freshdesk's List Tickets endpoint uses cursor-based pagination and returns a maximum of 300 pages. For ticket volumes exceeding this limit, we use Freshdesk's native Data Export feature (Admin > Account Details > Export) which generates a downloadable file with all ticket records and emails a link. We then parse the export file and import via the API in batches. This two-step approach (file export plus API import) adds processing time and requires the customer to have an active Freshdesk account with export permissions.

  • Custom field type mismatches silently reject ticket imports

    Freshdesk enforces field types at the API level. A custom field defined as Number in Freshdesk will reject a string value passed from eTicket without throwing a visible error in the migration log. We pre-validate all eTicket custom field values against the destination Freshdesk custom field type before the first ticket import batch runs. Any non-conforming values are logged, corrected (for example, stripping non-numeric characters from a Phone field stored as Number), or mapped to a Text field if correction is not possible.

  • Agent email lookup failure orphans ticket assignments

    Freshdesk tickets require a valid agent_id for assignment. If an eTicket ticket is assigned to an agent whose email does not match any Freshdesk User, the import request fails unless a default agent is specified. We resolve all eTicket agent emails against the Freshdesk User table before migration and either map to a matching User or assign to a designated fallback agent. Orphaned assignments are logged in a reconciliation report delivered post-migration.

  • Workflows, SLA policies, and automations do not migrate

    Freshdesk Workflow conditions, SLA policies, and automations (such as auto-assignment rules or escalation triggers) are configuration objects that do not transfer via the API in a way that preserves their logic. We do not migrate them as code. We deliver a written inventory of every active eTicket workflow, SLA rule, and automation with its trigger conditions, actions, and a recommended Freshdesk equivalent (Freshdesk's Rule Engine or Automations under Admin > Workflows). The customer's admin rebuilds these in Freshdesk post-migration.

Migration approach

Six steps for a successful eTicket to Freshdesk data migration

  1. Discovery and scoping call

    We audit the source eTicket instance for record counts (Customers, Agents, Teams, Tickets, Conversations, Attachments, Tags, KB Articles), custom field definitions and their data types, and any integration endpoints in use. We confirm the destination Freshdesk plan (Sprout, Blossom, Garden, Estate, or Forest) to verify API availability. The output is a written migration scope with estimated row counts, a custom field mapping table, and a decision on whether to include KB articles and Companies in the initial migration.

  2. Schema preparation in Freshdesk

    We pre-create Freshdesk custom fields via the Custom Fields API before any record import begins. We create Groups via the Groups API to match eTicket Teams. If Companies are in scope, we create the Company records first so that Contact imports can reference company_id. We confirm the migration user's Agent permissions in Freshdesk and validate that the account can accept attachments up to 10 MB.

  3. Agent and User reconciliation

    We extract every distinct Agent email from eTicket and match against the Freshdesk User table. Agents without a matching Freshdesk User are logged in a reconciliation report. The customer's admin provisions missing Freshdesk agents (or confirms a fallback agent for inactive source agents) before the ticket import phase. Migration cannot safely begin with unassigned agents because Freshdesk requires a valid agent_id on every inbound ticket.

  4. Ticket migration in dependency order

    We migrate in this sequence: Companies (if applicable), Contacts, Groups, Agents, then Tickets with Conversations and Attachments. Tickets with a status of Open in eTicket are imported as Freshdesk status 2 (Open). We use batch sizes tuned to Freshdesk's rate limits, applying exponential backoff on 429 responses. Each batch emits a count reconciliation against the source record count before the next batch begins.

  5. Tag and knowledge base transfer

    After all tickets and their conversations are imported, we apply Tags to the corresponding Tickets via Freshdesk's tag API. If KB articles are in scope, we create Freshdesk Solution Folders and Categories first, then import articles with their published/draft status preserved. We flag any article with an inline image exceeding Freshdesk's attachment constraints.

  6. Cutover, validation, and automation inventory delivery

    We freeze writes to eTicket during cutover, run a final delta migration of any records modified in the window, and validate record counts in Freshdesk against the eTicket source. We deliver the automation inventory document (workflows, SLA policies, and automations requiring rebuild) to the customer's admin. We support a three-day post-cutover window for reconciliation issues raised by the support team. We do not rebuild eTicket automations as Freshdesk Workflows within the migration scope.

Platform deep dives

Context on both ends of the pair

eTicket logo

eTicket

Source

Strengths

  • Free and open-source self-hosted PHP/MySQL helpdesk.
  • Email-to-ticket (pop3/pipe) and web-form ticket creation in the core distribution.
  • Skinnable to match the host website's branding.
  • Multi-lingual UI and CAPTCHA / spam filtering included.
  • Full database ownership for teams that need on-premise data control.

Weaknesses

  • Project is effectively dormant; last release in October 2008.
  • No public API or supported migration tooling — exports go through direct MySQL queries.
  • No SLA engine, no automation rules, no modern reporting.
  • PHP / MySQL stack compatibility issues on modern hosting are not addressed upstream.
  • Limited third-party community or commercial support for new deployments.
Freshdesk logo

Freshdesk

Destination

Strengths

  • Generous free tier with no credit card required for 1-2 agents for 6 months.
  • Per-agent pricing model is transparent and scales linearly with team growth.
  • Freddy AI Copilot integrates assistance directly into the agent workspace without requiring separate tooling.
  • Multilingual help desk and customer portal serve global teams on Pro and Enterprise plans.
  • Shared inbox, threads, and tasks keep ticket context unified across multi-channel conversations.

Weaknesses

  • Freddy AI is a separate paid add-on charged per session, making AI costs unpredictable and hard to budget.
  • Performance issues including delayed loading and duplicate tickets are recurring user complaints during high-volume periods.
  • Customization is more limited than Zendesk, with fewer workflow options and reporting flexibility.
  • Add-ons for chat, advanced routing, and custom reporting are gated behind higher tiers or separate module purchases.
  • API access is completely disabled on the free plan, blocking any programmatic data export or migration tooling.

Complexity grading

How hard is this migration?

Moderate Helpdesk migration. 5 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 eTicket and Freshdesk.

  • Object compatibility

    C

    5 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

    eTicket: Not applicable — no API surface exists..

  • Data volume sensitivity

    B

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

Estimator

Estimate your eTicket to Freshdesk 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 eTicket to Freshdesk data migrations

Answers to the questions buyers ask most during eTicket to Freshdesk migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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

Book a free 30 minute consultation

Small teams under 5,000 tickets with no knowledge base articles typically complete in two to four weeks. Migrations with large ticket histories (over 20,000 records), multiple custom fields, or KB articles requiring folder and category mapping move to six to ten weeks. The timeline depends on the eTicket export method available, whether Freshdesk's API is accessible on the destination plan, and whether a parallel-run window is required for agent testing.

Adjacent paths

Related migrations to explore

Ready when you are

Move from eTicket.
Land in Freshdesk, 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