Helpdesk migration
Field-level mapping, validation, and rollback between eTicket and Freshdesk. We move data and schema; workflows are rebuilt natively in Freshdesk.
eTicket
Source
Freshdesk
Destination
Compatibility
8 of 10
objects map 1:1 between eTicket and Freshdesk.
Complexity
CModerate
Timeline
2-4 weeks
Overview
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.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
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
Freshdesk
Contact
1:1eTicket 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
Freshdesk
Company
1:manyIf 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
Freshdesk
Agent (Freshdesk)
1:1eTicket 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
Freshdesk
Group
1:1eTicket 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
Freshdesk
Ticket
1:1eTicket 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
Freshdesk
Conversation
1:1Each 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
Freshdesk
Attachment
1:1eTicket 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
Freshdesk
Tag
1:1eTicket 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
Freshdesk
Custom Field
lossyeTicket 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
Freshdesk
Article
1:1If 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.
| eTicket | Freshdesk | Compatibility | |
|---|---|---|---|
| Customer | Contact1:1 | Fully supported | |
| Customer | Company1:many | Fully supported | |
| Agent | Agent (Freshdesk)1:1 | Fully supported | |
| Team | Group1:1 | Fully supported | |
| Ticket | Ticket1:1 | Fully supported | |
| Conversation | Conversation1:1 | Fully supported | |
| Attachment | Attachment1:1 | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| KB Article | Article1:1 | Fully supported |
Gotchas + challenges
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 gotchas
Project is effectively dormant — latest release dates to 2008
No public API or vendor-supported export tooling
Attachments live on disk and can be orphaned
No SLA, automation, or modern routing engine
Freshdesk gotchas
API access is blocked on the free plan
Per-minute rate limits are account-wide and endpoint-specific
Multi-channel source types do not map 1:1 to all destinations
Custom objects created in-product cannot be accessed by other apps
Contact import requires at least 10 existing tickets in the account
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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.
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
eTicket
Source
Strengths
Weaknesses
Freshdesk
Destination
Strengths
Weaknesses
Complexity grading
Moderate Helpdesk migration. 5 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across eTicket and Freshdesk.
Object compatibility
5 of 7 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
7-object category — typical timelines run 2–7 days end-to-end.
API constraints
eTicket: Not applicable — no API surface exists..
Data volume sensitivity
eTicket doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during eTicket to Freshdesk migration scoping. Not seeing yours? Book a call.
Walk through your eTicket to Freshdesk migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave eTicket
Other ways to arrive at Freshdesk
Same-Helpdesk migrations
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.