Helpdesk migration
Field-level mapping, validation, and rollback between Zammad and Gorgias. We move data and schema; workflows are rebuilt natively in Gorgias.
Zammad
Source
Gorgias
Destination
Compatibility
9 of 15
objects map 1:1 between Zammad and Gorgias.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Zammad to Gorgias is a migration from a ticket-centric open-source helpdesk built for omnichannel internal support into a Shopify-native helpdesk built for e-commerce revenue operations. Zammad's object model — Tickets, Organizations, Users, Groups, Roles, Tags, SLAs, and Custom Objects — maps to Gorgias's simpler data model of Tickets, Customers, Agents, and Teams, with the most significant structural gap being that Gorgias has no native Organization object; customer organizations must be stored as custom fields or tags. We resolve this during scoping by designing the mapping strategy before any records move. Zammad's immutable time entries require a pre-migration review in the source system, and Gorgias's per-ticket pricing model requires a volume analysis before cutover so that the customer is on the correct Gorgias plan from day one. Workflows, Macros, Text Modules, and Triggers do not migrate as automation code; we deliver a written inventory of every active Zammad trigger and macro for the customer's admin to rebuild in Gorgias's Rules and Macros system.
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 Gorgias, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Zammad
Ticket
Gorgias
Ticket
1:1Zammad Tickets map directly to Gorgias Tickets. The full article thread — customer replies, agent responses, internal notes, and attachments — migrates as message records on the ticket in chronological order. Zammad ticket state (new, open, pending, closed) maps to Gorgias ticket status (new, open, pending, resolved, closed). Priority mapping preserves Zammad's low/normal/high/very high priority tiers as Gorgias priority values.
Zammad
User (Agent)
Gorgias
Agent
1:1Zammad Agent records map to Gorgias Agents. We resolve by email address as the dedupe key. Agent role and permission sets from Zammad (Agent, Admin, Manager) do not have direct Gorgias equivalents for granular permissions, so we preserve the role name in a custom field on the Agent record. Any Zammad Agent without a matching Gorgias user goes to the reconciliation queue for the customer's admin to provision before record migration resumes.
Zammad
User (Customer)
Gorgias
Customer
1:1Zammad Customer records map to Gorgias Customers. The Zammad customer email becomes the primary identifier. We also migrate customer phone, language, and timezone where populated. Customer data from Zammad that does not map to a standard Gorgias Customer field migrates into custom fields on the Customer record.
Zammad
Organization
Gorgias
Customer custom field
lossyZammad's native Organization object has no direct Gorgias equivalent. We store the Organization name as a text custom field on the Gorgias Customer record. If the customer relies on Organization-to-User membership for reporting or filtering, we also map the Organization membership as a tag on each Customer (e.g., tag 'Acme Corp Member') so that Gorgias's tag-based filtering can replicate the Organization grouping logic. The customer chooses the tagging strategy during scoping.
Zammad
Group
Gorgias
Team
1:1Zammad Groups map to Gorgias Teams. The Group's email address and assignment rules migrate as Team settings in Gorgias. Group membership (which agents belong to which groups) translates to Team membership in Gorgias. Default Groups like 'Users' and 'First Level Support' require manual deactivation or renaming in Gorgias if they do not match the customer's team structure.
Zammad
Role
Gorgias
Agent custom field
lossyZammad Roles with granular permission sets do not map to a native Gorgias role model. We preserve role names as a custom field on the Gorgias Agent record and document the permission mapping as a written handoff. The customer's admin reviews the documentation and assigns Gorgias roles (Admin or Agent) manually after migration. Zammad's custom role permission sets require a manual reconfiguration in Gorgias's settings.
Zammad
Tag
Gorgias
Tag
1:1Zammad flat tags on Tickets migrate to Gorgias labels on the corresponding ticket. Tags are preserved as key-value labels with no taxonomy or hierarchy in either platform. If tags were used to encode organizational membership (see Organization mapping), those tag strings are preserved and used for the tag-based grouping strategy in Gorgias.
Zammad
SLA
Gorgias
SLA configuration
lossyZammad SLA configurations — response time and resolution time commitments tied to calendars and ticket priorities — require manual reconfiguration in Gorgias because SLA rules in Gorgias are structured differently. We extract the Zammad SLA definitions (escalation rules, calendar bindings, business hours) as a written specification document. Gorgias SLA features are available on Pro and above. The customer's admin rebuilds the SLA rules in Gorgias using the specification as a blueprint.
Zammad
Calendar (Business Hours)
Gorgias
Business Hours
lossyZammad Calendars defining business hours for SLA calculations migrate as written specifications. Gorgias Business Hours are configured separately from SLA rules and do not have a direct API import path. We document the calendar working days, timezone, and holiday schedules as a configuration guide. The customer's admin applies the settings in Gorgias Settings > Business Hours.
Zammad
Custom Object / Object Attribute
Gorgias
Custom Field
lossyZammad Custom Objects attached to Tickets, Users, Organizations, and Groups migrate as custom fields on the corresponding Gorgias record type. Supported Zammad attribute types — Boolean, Date, DateTime, Integer, Float, Text, Single Select, Multi Select — map to Gorgias custom field equivalents where types exist. Types that do not have a direct Gorgias equivalent (such as User Reference or Object Reference) are stored as text fields with the referenced value string preserved. We flag any custom object definitions that reference disabled-not-deleted Zammad attributes and recommend excluding them from migration.
Zammad
Trigger
Gorgias
Rule
lossyZammad Triggers automate actions based on ticket conditions and do not migrate as automation code to Gorgias. We extract every active Trigger with its condition operators and action set as a written inventory document. Each trigger maps to a Gorgias Rule with the equivalent condition and action logic. The customer's admin reviews the inventory and rebuilds triggers as Gorgias Rules. We flag any triggers that reference custom Object Attributes that could not be migrated due to type limitations.
Zammad
Macro
Gorgias
Macro
1:1Zammad Macros bundle ticket updates and article templates for quick agent responses. We migrate the macro content — reply text, subject line changes, status changes, and field updates — as Gorgias Macros. Macros with actions referencing specific Zammad Group IDs or User IDs require remapping to Gorgias Team and Agent IDs during migration. Macros referencing deleted or disabled Zammad attributes are flagged for the customer's admin to review before activation.
Zammad
Text Module
Gorgias
Template
1:1Zammad Text Modules (reusable response templates with variable placeholders) migrate as Gorgias Templates. We preserve multi-language Text Modules with their language tags, but the destination must have matching locale configurations in Gorgias. Text Modules with unsupported variables (Zammad-specific system variables not available in Gorgias) are flagged with a note on the equivalent Gorgias variable to use instead.
Zammad
Attachment
Gorgias
Attachment
1:1Attachments on Zammad ticket articles migrate to the corresponding Gorgias ticket as file attachments. We preserve the original filename, content-type, and file size. Attachments exceeding Gorgias's file size limits are flagged before migration, and the customer decides whether to compress, split, or exclude oversized files. The attachment migration runs as part of the ticket article migration phase.
Zammad
Knowledge Base Article
Gorgias
Help Center Article
1:1Zammad Knowledge Base articles (internal and external) migrate to Gorgias Help Center as articles within matching categories. Article visibility settings from Zammad — internal-only versus public — require manual reconfiguration in Gorgias because visibility is handled through Help Center publication settings rather than per-article flags. We migrate the article content and category structure; the customer's admin configures publication status post-migration.
| Zammad | Gorgias | Compatibility | |
|---|---|---|---|
| Ticket | Ticket1:1 | Fully supported | |
| User (Agent) | Agent1:1 | Fully supported | |
| User (Customer) | Customer1:1 | Fully supported | |
| Organization | Customer custom fieldlossy | Fully supported | |
| Group | Team1:1 | Fully supported | |
| Role | Agent custom fieldlossy | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| SLA | SLA configurationlossy | Fully supported | |
| Calendar (Business Hours) | Business Hourslossy | Fully supported | |
| Custom Object / Object Attribute | Custom Fieldlossy | Fully supported | |
| Trigger | Rulelossy | Fully supported | |
| Macro | Macro1:1 | Fully supported | |
| Text Module | Template1:1 | Fully supported | |
| Attachment | Attachment1:1 | Fully supported | |
| Knowledge Base Article | Help Center 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.
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
Gorgias gotchas
AI Agent adds outcome-based fees on top of billable ticket costs
Overage billing for tickets scales nonlinearly
API rate limits restrict bulk export throughput
Agent data visibility cannot be restricted by role for GDPR use cases
Knowledge Base translations require separate API calls per locale
Pair-specific challenges
Migration approach
Discovery and migration scoping
We audit the source Zammad instance across deployment type (cloud-hosted or self-hosted), tier (Starter/Professional/Plus), agent count, customer count, ticket volume, article history depth, active Triggers, Macros, Text Modules, SLA configurations, calendar bindings, and any custom Object definitions. For self-hosted instances, we coordinate with the customer's technical team to extract data via the REST API using an admin-level API token. The discovery output is a written migration scope document specifying record counts per object, a preliminary object mapping, and a Gorgias plan recommendation based on the customer's ticket volume analysis.
Organization mapping strategy and custom field design
Because Gorgias has no native Organization object, we design the Organization mapping strategy during this phase. We extract all Zammad Organizations and their member Users, then define whether Organization data will be stored as a text custom field on the Gorgias Customer record, as tags on each Customer, or as a combination. We also design the full custom field schema in Gorgias for all Zammad custom Object Attributes that will migrate as custom fields. Custom fields are created in Gorgias via the API before any data is imported. This step also includes designing the Team structure mapping from Zammad Groups.
Staging migration and reconciliation
We run a full migration into a Gorgias staging environment using production-like data volume. The customer reconciles record counts (Agents in, Customers in, Tickets in, Tags in), spot-checks 25-50 random tickets against the Zammad source for thread integrity and attachment preservation, and validates that Organization data appears correctly in the chosen mapping format. Any mapping corrections — wrong field types, missing custom fields, tag naming conventions — happen in this phase. No production data moves until the customer signs off on the staging validation report.
Trigger, Macro, and Text Module inventory
We extract every active Zammad Trigger, Macro, and Text Module as a written inventory document. The inventory lists each item's name, trigger conditions (for Triggers), content (for Macros and Text Modules), and the equivalent Gorgias Rule or Macro configuration. The document is delivered to the customer's admin team before cutover so that automation rebuilding can begin in parallel with or immediately after data migration. We do not rebuild Triggers as Gorgias Rules within the migration scope; this is a manual admin rebuild task guided by the inventory document.
Production migration in dependency order
We run production migration in record-dependency order: Agents first (with reconciliation of any missing users), then Customers (with Organization data mapped to the chosen strategy), then Teams (from Zammad Groups), then Tickets with full article history and attachments, then Tags, then custom fields on Customer and Ticket records. SLA configurations and Calendar specifications are delivered as written documentation rather than migrated as data. Each phase emits a row-count reconciliation report. We pause writes to the Zammad source during the production migration window to prevent delta records from being missed.
Cutover, validation, and automation handoff
We freeze the Zammad source at cutover, run a final delta migration of any records created or modified during the migration window, then switch the customer to Gorgias as the system of record. We deliver the Trigger, Macro, and Text Module inventory document to the customer's admin team along with a brief guide on rebuilding the most critical automations in Gorgias Rules. We support a one-week hypercare window where we resolve any reconciliation issues. SLA and Calendar rebuilding remains a manual admin task guided by the specification documentation we deliver. We do not provide post-migration admin support, training, or workflow rebuild as standard scope; these are separate engagements.
Platform deep dives
Zammad
Source
Strengths
Weaknesses
Gorgias
Destination
Strengths
Weaknesses
Complexity grading
Moderate Helpdesk migration. 4 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 Zammad and Gorgias.
Object compatibility
4 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 Gorgias migration scoping. Not seeing yours? Book a call.
Walk through your Zammad to Gorgias 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 Gorgias
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.