Helpdesk migration
Field-level mapping, validation, and rollback between Zammad and Freshdesk. We move data and schema; workflows are rebuilt natively in Freshdesk.
Zammad
Source
Freshdesk
Destination
Compatibility
6 of 8
objects map 1:1 between Zammad and Freshdesk.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Zammad to Freshdesk is a directional mismatch: Zammad ships a Freshdesk import wizard but not an export path, while Freshdesk has no native Zammad import path at all. We bridge that gap using Zammad's REST API to extract tickets, users, organizations, groups, and tags, then write them into Freshdesk via the Freshdesk REST API with per-plan rate-limit handling. Zammad's time entries are immutable post-creation — we flag any tickets with time accounting for customer review before migration, so corrections happen in the source system where they are possible. SLA configurations, Knowledge Base articles, and custom Objects require Freshdesk equivalents to be provisioned in advance; we deliver a schema pre-checklist with those requirements listed. Workflows, Triggers, Macros, and Text Modules do not migrate as code; we inventory them and hand the list to your admin for Freshdesk rebuild.
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 Zammad 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.
Zammad
Ticket
Freshdesk
Ticket
1:1Zammad tickets map to Freshdesk tickets with state, priority, group assignment, owner, requester, organization, tags, and full article/thread history preserved. Zammad article types (email, chat note, call log, note) map to Freshdesk conversation entries. We resolve the requester to a Freshdesk Contact and the owner to a Freshdesk Agent at migration time. The Zammad ticket number does not persist in Freshdesk — we store the original Zammad ticket ID in a custom field zammad_ticket_id__c for audit traceability.
Zammad
User (Agent)
Freshdesk
Agent
1:1Zammad Agents map to Freshdesk Agents. We match by email address as the dedupe key. Agents without a matching Freshdesk user go to a reconciliation queue — the customer provisions the Freshdesk agents before record migration begins. Role permissions (Admin, Agent) map to Freshdesk's agent groups and roles. Note that user passwords do not migrate — agents receive password-reset emails from Freshdesk post-migration.
Zammad
User (Customer)
Freshdesk
Contact
1:1Zammad Customers map to Freshdesk Contacts. We migrate name, email, phone, organization membership, and any custom contact fields. The Zammad customer login identity does not transfer — contacts become users in Freshdesk with a Freshdesk-specific identity. Organization membership from Zammad maps to the Freshdesk Contact's company_name field, linked to the migrated Company record.
Zammad
Organization
Freshdesk
Company
1:1Zammad Organizations map to Freshdesk Companies. We preserve the organization name, domain, note, and any organization-level custom fields. Company must be created before Contact migration so that the company link is satisfied at Contact insert time. A Zammad User can belong to multiple Organizations — we map each membership to a Freshdesk Contact-Company association record.
Zammad
Group
Freshdesk
Group
1:1Zammad Groups map to Freshdesk Groups. We transfer group name, email address, assignment rules, and active/inactive status. Default groups like 'Users' and 'First Level Support' are preserved with matching Freshdesk equivalents. Group-level SLA bindings require Freshdesk SLA policies to be pre-configured; we deliver the SLA mapping checklist during schema pre-provisioning.
Zammad
Tag
Freshdesk
Tag
1:1Zammad's flat key-value tags attached to tickets map to Freshdesk tags on tickets. Tags are preserved as-is — there is no tag hierarchy or taxonomy in either platform. We migrate the full tag list and all ticket-tag associations. Duplicate tag names are deduplicated at the destination.
Zammad
SLA
Freshdesk
SLA Policy
lossyZammad SLAs with response and resolution time commitments tied to calendars and priorities map to Freshdesk SLA Policies. However, Freshdesk SLA Policies use a different configuration model — they are defined per requester type or company rather than globally per priority. We deliver an SLA mapping matrix listing every Zammad SLA, its calendar bindings, business hours, and escalation rules, with recommended Freshdesk SLA Policy equivalents to configure before migration.
Zammad
Custom Object / Object Attribute
Freshdesk
Custom Object or Custom Ticket Field
lossyZammad custom Objects on tickets, users, organizations, and groups map to Freshdesk custom Objects (Growth and above, beta) or custom ticket fields. We map supported field types directly (Boolean, Integer, Float, Text, Single Select, Multi Select). Custom datetime fields in Zammad cannot map to a Freshdesk custom field type — we flag these and recommend converting to Date or DateTime fields in the source before migration. Any Zammad custom Object that uses the disabled-not-deleted convention is flagged separately for review.
| Zammad | Freshdesk | Compatibility | |
|---|---|---|---|
| Ticket | Ticket1:1 | Fully supported | |
| User (Agent) | Agent1:1 | Fully supported | |
| User (Customer) | Contact1:1 | Fully supported | |
| Organization | Company1:1 | Fully supported | |
| Group | Group1:1 | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| SLA | SLA Policylossy | Fully supported | |
| Custom Object / Object Attribute | Custom Object or Custom Ticket Fieldlossy | 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.
Zammad gotchas
Migration Wizard requires empty, uninitialized instance
Agent count limits are enforced, not advisory
Time entries are immutable post-creation
Custom Objects use a disabled-not-deleted convention
Annual billing cancellation requires 90-day notice
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 plan confirmation
We audit the Zammad instance for ticket volume, user counts (Agents and Customers), organization count, tag inventory, SLA configurations, knowledge base articles, and custom Object definitions. We confirm the Freshdesk target plan — specifically whether it includes API access (Blossom or above required) and the applicable rate-limit ceiling. We also review Zammad's agent tier (Starter cap at 5, Professional cap at 35) to flag any agent-count risk. The discovery output is a written scope and a pre-flight checklist naming every Freshdesk object that must be provisioned before migration begins.
Freshdesk schema pre-provisioning
We deliver a schema pre-provisioning checklist to the customer before migration. This includes: Groups matching the Zammad group structure, Companies (from Zammad Organizations) pre-created or mapped during import, custom ticket fields matching Zammad custom Object field types (or flagged for conversion), SLA Policies configured per the Zammad SLA mapping matrix, and knowledge base categories matching Zammad article categories. The customer provisions these in Freshdesk while we build and validate the migration pipeline against a Freshdesk trial account.
Migration pipeline build and sandbox validation
We build the extraction pipeline against Zammad's REST API (pagination, rate-limit handling, attachment streaming) and the load pipeline into Freshdesk's REST API (batch chunking, parent-record lookup, dedupe). We run a sandbox migration using a representative sample — typically 100-200 tickets with attachments, time entries, and custom field values — and deliver a reconciliation report comparing source counts against destination counts. Mapping corrections happen here, not in production.
Time-entry pre-flight review
We extract every Zammad ticket that contains a time entry and deliver a time-entry report to the customer. The customer reviews and corrects any erroneous time entries in Zammad before migration. Once extraction begins, Zammad data is read-only in our pipeline — we do not write back to Zammad. Corrections after extraction pass begins will not be picked up unless a second extraction pass is scheduled, which extends the timeline.
Production migration in dependency order
We run production migration in record-dependency order: Groups (created in Freshdesk first), then Agents (provisioned in Freshdesk with a reconciliation queue for unmapped owners), then Companies (from Zammad Organizations), then Contacts (from Zammad Customers with company links resolved), then Tickets (with requester, owner, group, tags, and article history), then Tags, then SLA mappings, then custom Object records. Each phase emits a row-count reconciliation report before the next phase begins. API rate-limit handling and exponential backoff run throughout.
Cutover, validation, and automation inventory handoff
We freeze Zammad writes during cutover, run a final delta pass of any records modified during the migration window, then confirm Freshdesk as the system of record. We deliver a full reconciliation report (source vs destination counts per object), a Zammad-to-Freshdesk ID mapping table, and a written inventory of every Zammad Trigger, Macro, Text Module, and Scheduler with its trigger conditions and recommended Freshdesk Automation Rule equivalent. We do not rebuild Zammad automations as Freshdesk automations inside the migration scope; that is an admin task or a separate engagement.
Platform deep dives
Zammad
Source
Strengths
Weaknesses
Freshdesk
Destination
Strengths
Weaknesses
Complexity grading
Standard Helpdesk migration. 1 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Zammad and Freshdesk.
Object compatibility
1 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
Zammad: Not publicly documented in core REST API docs — Zammad is self-hostable, so effective limits depend on each instance's deployment topology and any reverse-proxy throttling in front of the app.
Data volume sensitivity
Zammad 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 Zammad to Freshdesk migration scoping. Not seeing yours? Book a call.
Walk through your Zammad 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 Zammad
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.