Helpdesk migration
Field-level mapping, validation, and rollback between Zammad and HubSpot Service Hub. We move data and schema; workflows are rebuilt natively in HubSpot Service Hub.
Zammad
Source
HubSpot Service Hub
Destination
Compatibility
9 of 14
objects map 1:1 between Zammad and HubSpot Service Hub.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Zammad to HubSpot Service Hub is a schema and context migration, not a simple record export. Zammad organizes support around Tickets with a flat Group/Role permission model; HubSpot Service Hub uses Tickets linked to Contacts, Companies, and Pipelines with a shared CRM record that surfaces marketing and sales context at the agent level. We migrate Zammad Users (Agents and Customers) to HubSpot Contacts, Zammad Organizations to HubSpot Companies, and Zammad Tickets to HubSpot Tickets with their full article thread history. Zammad's Groups map to HubSpot Inboxes and Teams, with the Group's email address becoming the routing address on the HubSpot Inbox. Zammad time entries that cannot be corrected after creation are flagged before migration so customers can review and correct them in the source system. We do not migrate Triggers, Macros, Text Modules, or SLA configurations as code; we deliver a written inventory for the customer's admin to rebuild in HubSpot Workflows, Snippets, and SLA policies. Knowledge Base articles are migrated as content, not as structured knowledge-base records, because Zammad's article schema does not map directly to HubSpot's Knowledge Base object model.
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.
Source platform
Zammad platform overview
Scorecard, SWOT, gotchas, and pricing for Zammad.
Destination platform
HubSpot Service Hub platform overview
Scorecard, SWOT, gotchas, and pricing for HubSpot Service Hub.
Data migration guide
The complete HubSpot Service Hub migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
HubSpot Service Hub migration checklist
Pre- and post-cutover tasks for moving onto HubSpot Service Hub.
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 HubSpot Service Hub, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Zammad
Ticket
HubSpot Service Hub
Ticket
1:1Zammad Tickets map directly to HubSpot Tickets with state (open, pending, closed), priority (low, normal, high, urgent), and owner preserved. The full article thread (emails, chat logs, notes, public replies, internal notes) migrates as HubSpot Ticket Conversations. Zammad's ticket number becomes the ticket ID in HubSpot. Tags on the Zammad ticket transfer to HubSpot Ticket Labels. Group assignment on the Zammad ticket maps to the HubSpot Inbox routing.
Zammad
User (Agent)
HubSpot Service Hub
User
1:1Zammad Agents map to HubSpot User records. We resolve by email match. Agents without a matching HubSpot User go to a reconciliation queue for the customer's admin to provision before record import. Zammad role permissions do not map to HubSpot Roles because HubSpot's permission model uses Roles, Teams, and Individual-level overrides differently; we deliver a Zammad role-to-HubSpot-permission mapping document for the admin to configure post-migration.
Zammad
User (Customer)
HubSpot Service Hub
Contact
1:1Zammad Customer records (the end-user who submits tickets) map to HubSpot Contacts. The Zammad customer's email, name, phone, and organization membership transfer to HubSpot Contact properties. Zammad's Customer users do not become HubSpot Users because HubSpot User seats are for agents, not end-users.
Zammad
Organization
HubSpot Service Hub
Company
1:1Zammad Organizations map to HubSpot Companies. Organization domain, name, note, and member Users transfer. A User can belong to multiple Organizations in Zammad; HubSpot Companies support multiple contacts, but the many-to-many relationship requires a junction approach if the customer needs dual-company associations. We flag this during scoping and default to a primary-company assignment with secondary associations stored in a custom field-contact field.
Zammad
Group
HubSpot Service Hub
Inbox + Team
lossyZammad Groups map to HubSpot Inboxes (for email routing) and HubSpot Teams (for agent access control). The Group's email address becomes the routing address on the HubSpot Inbox. Group members (agents) are assigned to the corresponding HubSpot Team. Zammad's assignment rules (ticket routing to Groups) become HubSpot Inbox routing rules. Default Groups like 'Users' and 'First Level Support' require customer guidance on which HubSpot Inbox to map to.
Zammad
Tag
HubSpot Service Hub
Ticket Label
1:1Zammad Tags (flat key-value labels on Tickets) map to HubSpot Ticket Labels. Labels in HubSpot attach to ticket records and can be used for filtering, reporting, and workflow triggers. Zammad tag associations migrate as label assignments on each ticket.
Zammad
SLA
HubSpot Service Hub
SLA Policy (Professional and Enterprise)
lossyZammad SLAs define response and resolution time commitments tied to Calendars. HubSpot Service Hub Professional and Enterprise include SLA Policies with First Response and Next Response SLA targets. We map Zammad SLA configurations to HubSpot SLA Policies, converting the calendar-based business hours to HubSpot Business Hours. First Response SLA from Zammad maps to HubSpot First Response SLA; Resolution Time SLA maps to Time to Close SLA. Starter tier lacks SLA Policies; we flag this gap during scoping.
Zammad
Calendar (Business Hours)
HubSpot Service Hub
Business Hours
1:1Zammad Calendars defining business hours migrate to HubSpot Business Hours. Working days, timezone, and holiday schedules transfer. Calendars must exist in HubSpot before SLAs that reference them are created. We create HubSpot Business Hours during the schema phase.
Zammad
Custom Object / Object Attribute
HubSpot Service Hub
Custom Object / Custom Property
1:1Zammad Custom Objects extending Tickets, Users, Organizations, and Groups migrate to HubSpot Custom Objects (Professional tier and above) and Custom Properties on standard objects. We pre-create the destination schema via HubSpot's API including field types, picklist values, and lookup relationships. Zammad's Boolean, Date, DateTime, Integer, Float, Text, Single Select, Multi Select, and User Reference types map to their HubSpot equivalents. Lookup relationships to other custom objects require pre-creation of the target schema.
Zammad
Attachment
HubSpot Service Hub
File (ContentDocument / Attachments)
1:1Attachments on Zammad ticket articles migrate as HubSpot Files attached to the parent Ticket record via ContentDocumentLink. Content-type, filename, and size are preserved. We chunk large attachment batches (over 50 GB total) into sequential API calls respecting HubSpot's per-second rate limits. Inline images embedded in ticket articles migrate as separate Files.
Zammad
Knowledge Base Article
HubSpot Service Hub
Knowledge Base Article
1:1Zammad Knowledge Base articles migrate as HubSpot Knowledge Base articles with title, body content, and category assignments preserved. Zammad article visibility settings (internal vs. external) do not map directly to HubSpot's portal visibility model; we flag these for admin configuration. Multi-language Zammad articles with locale tags require the destination HubSpot Knowledge Base to have matching language settings enabled.
Zammad
Trigger
HubSpot Service Hub
Workflow (documented, not migrated)
lossyZammad Triggers automate actions based on ticket conditions and migrate as a written inventory document for HubSpot rebuild. Zammad trigger conditions referencing custom Objects map to HubSpot Workflow triggers on custom property values. We document the trigger name, conditions, operators, and action set for the admin to recreate in HubSpot Workflows. Active/inactive status is noted for the admin to apply during rebuild.
Zammad
Macro
HubSpot Service Hub
Snippet (documented, not migrated)
lossyZammad Macros bundle ticket updates and article templates for quick agent responses. We document Macros with their action sets, template content, and Group ID references for the admin to rebuild as HubSpot Snippets and Shared Inbox macros. Zammad macro-specific ticket field updates map to HubSpot workflow-triggered property updates.
Zammad
Text Module
HubSpot Service Hub
Snippet (documented, not migrated)
lossyZammad Text Modules are reusable response templates with multi-language support. We document Text Module content, language tags, and usage counts for the admin to recreate as HubSpot Snippets. The destination must have matching locale configurations.
| Zammad | HubSpot Service Hub | Compatibility | |
|---|---|---|---|
| Ticket | Ticket1:1 | Fully supported | |
| User (Agent) | User1:1 | Fully supported | |
| User (Customer) | Contact1:1 | Fully supported | |
| Organization | Company1:1 | Fully supported | |
| Group | Inbox + Teamlossy | Fully supported | |
| Tag | Ticket Label1:1 | Fully supported | |
| SLA | SLA Policy (Professional and Enterprise)lossy | Fully supported | |
| Calendar (Business Hours) | Business Hours1:1 | Fully supported | |
| Custom Object / Object Attribute | Custom Object / Custom Property1:1 | Fully supported | |
| Attachment | File (ContentDocument / Attachments)1:1 | Fully supported | |
| Knowledge Base Article | Knowledge Base Article1:1 | Fully supported | |
| Trigger | Workflow (documented, not migrated)lossy | Fully supported | |
| Macro | Snippet (documented, not migrated)lossy | Fully supported | |
| Text Module | Snippet (documented, not migrated)lossy | 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
HubSpot Service Hub gotchas
Rate limits throttle large migration API calls
Side conversations and Zendesk macros have no HubSpot equivalent
HubSpot stores ticket history as fragmented engagement objects
Custom Objects require Enterprise tier in HubSpot
Ticket pipeline stage probability values do not export cleanly
Pair-specific challenges
Migration approach
Discovery and Zammad instance audit
We audit the source Zammad instance across tier (Starter, Professional, Plus), agent count, ticket volume, organization count, attachment size, custom Object definitions, active Triggers and Macros, and SLA configurations. We also review time-entry volume and flag any tickets with time accounting that require pre-migration correction. The discovery output is a written migration scope including a record-count matrix, custom object schema inventory, and a HubSpot Service Hub tier recommendation based on the customer's SLA, automation, and agent-count requirements.
HubSpot destination schema setup
We create the HubSpot destination schema before any data migration. This includes provisioning Custom Objects (if Professional or Enterprise), custom properties on Ticket and Contact objects, Inboxes with email routing addresses mapped from Zammad Groups, Teams for agent access control, Business Hours from Zammad Calendars, and SLA Policies for Professional and Enterprise tiers. Schema is validated in a HubSpot test portal before production migration begins.
Staging migration and reconciliation
We run a full migration into a HubSpot staging or sandbox environment using production-like data volume. The customer's operations lead reconciles record counts (Contacts in, Companies in, Tickets in, Labels in), spot-checks 25-50 random ticket records against the Zammad source for thread completeness and attachment presence, and reviews tag preservation. We flag mapping corrections here. Staging sign-off is required before production migration begins.
Time-entry pre-migration review
We extract all tickets with time entries and surface them to the customer's admin before migration. Because Zammad time entries are immutable post-creation, any corrections must happen in Zammad before the migration. We provide a sorted list of tickets with time entries, the entry timestamps, and the logged duration so the admin can review and correct before the cutover window. This step prevents corrupted time data from migrating to HubSpot.
Production migration in dependency order
We run production migration in record-dependency order: Contacts (from Zammad Customer users), Companies (from Zammad Organizations with primary-contact resolution), Teams and Inboxes (from Zammad Groups with email routing), Business Hours and SLA Policies (from Zammad Calendars and SLAs), Tickets with thread history and attachments (via batched API calls with rate-limit handling), Custom Objects and their associations (with lookup resolution to parent records), and Knowledge Base articles. Each phase emits a row-count reconciliation report before the next phase begins.
Trigger, Macro, and Text Module inventory delivery
We do not migrate Zammad Triggers, Macros, or Text Modules as code because their automation logic does not map directly to HubSpot Workflows, Snippets, or Shared Inbox macros. We deliver a written inventory of every active Trigger (with conditions, operators, and action sets), Macro (with template content and Group ID references), and Text Module (with multi-language tags) for the customer's admin to rebuild in HubSpot. We support a one-week post-migration window for questions on the inventory document.
Cutover, delta sync, and hypercare
We freeze Zammad writes during cutover, run a final delta migration of records modified during the migration window, then designate HubSpot as the system of record. We deliver the Zammad cutover checklist (inbox routing update, DNS MX change if applicable, agent training on HubSpot Inbox). We provide a two-week hypercare window where we resolve reconciliation issues raised by the customer's support team. We do not provide post-migration admin training, workflow rebuild, or ongoing support as standard scope; these are separate engagements.
Platform deep dives
Zammad
Source
Strengths
Weaknesses
HubSpot Service Hub
Destination
Strengths
Weaknesses
Complexity grading
Moderate Helpdesk migration. 3 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 HubSpot Service Hub.
Object compatibility
3 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 HubSpot Service Hub migration scoping. Not seeing yours? Book a call.
Walk through your Zammad to HubSpot Service Hub 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 HubSpot Service Hub
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.