Helpdesk migration

Migrate from HelpDeskZ to HubSpot Service Hub

Field-level mapping, validation, and rollback between HelpDeskZ and HubSpot Service Hub. We move data and schema; workflows are rebuilt natively in HubSpot Service Hub.

HelpDeskZ logo

HelpDeskZ

Source

HubSpot Service Hub

Destination

HubSpot Service Hub logo

Compatibility

50%

6 of 12

objects map 1:1 between HelpDeskZ and HubSpot Service Hub.

Complexity

CModerate

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from HelpDeskZ to HubSpot Service Hub means replacing a self-hosted PHP ticket system with a SaaS help desk that is part of a unified CRM. HelpDeskZ has no REST API — migration runs entirely through direct MySQL queries against the source database, extracting ticket threads, user records, department assignments, and files from the filesystem. We unserialize the PHP-serialized custom_fields column on each ticket, map HelpDeskZ status integers to HubSpot ticket pipeline status values, and upload attachment files into HubSpot's file storage with ticket associations. Agents and clients from HelpDeskZ become HubSpot users and contacts respectively. We do not migrate email pipeline threading (Message-ID and In-Reply-To references), knowledge base articles (HelpDeskZ has none built-in), or any HelpDeskZ email-to-ticket routing configuration — these are flagged in the inventory delivered alongside migration. SLA policies, ticket pipelines, help desk views, and team structures must be configured in HubSpot before or after migration, not during it.

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

HelpDeskZ logo

HelpDeskZ

What's pushing teams away

  • The feature set has stagnated — without active development, teams outgrow the platform as support volume and complexity increase.
  • Limited to no native integrations with modern tools like Slack, Salesforce, or Zapier, forcing teams to manually bridge workflows or abandon the platform.
  • No public REST API means third-party automation, reporting, and data extraction all require direct database queries, which most non-technical teams cannot maintain.
  • As the vendor (EvolutionScript) has scaled to other products, documentation and community support for HelpDeskZ have thinned, leaving self-hosted customers without guidance for troubleshooting.

Choosing

HubSpot Service Hub logo

HubSpot Service Hub

What's pulling them in

  • Unified CRM context means every support ticket links directly to the Contact and Company record without a separate integration
  • Free tier provides unlimited support seat access with basic ticketing and a shared inbox for small teams to validate fit before committing
  • Omnichannel routing consolidates email, live chat, Facebook Messenger, WhatsApp, and Instagram DM into one queue
  • Built-in customer success workspace gives health scores and portfolio views that other standalone helpdesks cannot match
  • AI-powered Breeze agent automates common resolutions and surfaces knowledge base articles without agent intervention

Object mapping

How HelpDeskZ objects map to HubSpot Service Hub

Each row shows how a HelpDeskZ 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.

HelpDeskZ

Ticket

maps to

HubSpot Service Hub

Ticket

1:1
Fully supported

HelpDeskZ tickets map directly to HubSpot Ticket objects. We extract the ticket subject, body, status (integer), priority (integer), created date, and updated date from the tickets table. The conversation feed in HubSpot is populated from the replies table, inserted in chronological order so the thread reads correctly. Custom fields stored in the serialized PHP column are decoded, extracted as key-value pairs, and written to HubSpot custom ticket properties that we pre-create during schema setup.

HelpDeskZ

Ticket Reply

maps to

HubSpot Service Hub

Ticket Conversation (Comment)

1:1
Fully supported

Each HelpDeskZ replies table row becomes a HubSpot Ticket comment. We map the reply body, author type (agent vs client), and timestamp. The author email resolves to a HubSpot Contact or User by email lookup. Private agent notes in HelpDeskZ (distinguished by a dedicated column or is_agent flag) map to HubSpot's internal notes on the Ticket rather than public comments. Original Message-ID and In-Reply-To headers are not transferred; HubSpot assigns its own thread identifiers at insert time.

HelpDeskZ

User (Agent)

maps to

HubSpot Service Hub

User

1:1
Fully supported

HelpDeskZ users with role Admin or Agent map to HubSpot Users. We extract name, email, role, and created date from the users table. The user's hashed password is not migrated — agents must set a HubSpot password at onboarding. Agents who previously had admin privileges in HelpDeskZ should be granted Super Admin or standard user access in HubSpot based on the customer's org design.

HelpDeskZ

User (Client)

maps to

HubSpot Service Hub

Contact

1:many
Fully supported

HelpDeskZ users with role Client map to HubSpot Contacts. We extract name, email, phone, and created date. If a Contact with the same email already exists in HubSpot (from sales or marketing records), we match on email and update rather than create a duplicate. The original HelpDeskZ client ID is preserved in a custom field hd_client_id__c for audit and cross-reference.

HelpDeskZ

Department

maps to

HubSpot Service Hub

Team

1:1
Fully supported

HelpDeskZ departments are a flat id-name lookup table. We map each department to a HubSpot Team. Ticket assignments in HelpDeskZ that reference a department ID are translated to HubSpot team membership at migration time. If the customer has hierarchical departments, we flatten them to HubSpot Teams since HubSpot does not support nested team hierarchies natively.

HelpDeskZ

Ticket Attachment

maps to

HubSpot Service Hub

File + Ticket Association

1:1
Fully supported

HelpDeskZ stores file attachments on disk in the uploads/ directory, with only the filename stored in the tickets and replies tables. We read each filename, locate the corresponding file on the source filesystem, upload it to HubSpot's file manager API, and associate it with the target Ticket record. Missing files are logged as warnings and skipped to allow migration to proceed. Files exceeding HubSpot's attachment size limits are flagged for the customer to handle manually or host externally.

HelpDeskZ

Ticket Status

maps to

HubSpot Service Hub

Ticket Pipeline Status

lossy
Fully supported

HelpDeskZ stores ticket status as integer codes (typically: 1=Open, 2=Pending, 3=Resolved, 4=Closed). We map these integers to HubSpot ticket pipeline status values during extraction. Customers who have added custom status values or renamed statuses via database edits must provide the full status code table during scoping so we can build the correct mapping before migration begins.

HelpDeskZ

Ticket Priority

maps to

HubSpot Service Hub

Ticket Priority

lossy
Fully supported

HelpDeskZ stores priority as an integer (1=Low, 2=Normal, 3=High, 4=Urgent). We map these to HubSpot ticket priority values (LOW, MEDIUM, HIGH, URGENT). If the customer has non-standard priority mappings, we document the custom mapping during scoping.

HelpDeskZ

Custom Field

maps to

HubSpot Service Hub

Custom Ticket Property

lossy
Fully supported

HelpDeskZ custom fields are stored as a PHP serialized string in the custom_fields column of the tickets table. We detect the PHP version on the source server, apply the correct unserialization method (handling PHP 7 vs PHP 8 serialization differences), and extract each key-value pair. Each custom field becomes a HubSpot custom ticket property with a type determined during scoping (text, number, date, dropdown). We pre-create all HubSpot custom properties before migration so that ticket inserts do not fail on unknown property errors.

HelpDeskZ

Email-to-Ticket (POP3/IMAP)

maps to

HubSpot Service Hub

Connected Email Channel Configuration

lossy
Fully supported

HelpDeskZ email-to-ticket routing stores POP3/IMAP credentials and mailbox settings in the database. We extract these settings and flag them in the migration inventory. The actual email pipeline cannot migrate because HubSpot's connected email channel uses OAuth2 authentication and its own mailbox routing, not POP3/IMAP polling. We deliver the mailbox settings to the customer's HubSpot admin to reconfigure as a HubSpot connected email channel post-migration.

HelpDeskZ

Ticket Timestamp

maps to

HubSpot Service Hub

Ticket Createdate + hs_lastModifiedDate

1:1
Fully supported

HelpDeskZ created_date and updated_date timestamps on each ticket are preserved as HubSpot ticket createdate and hs_last_modified_date. These timestamps are critical for reporting on historical ticket volume and agent response times. We set these via the HubSpot Tickets API at insert time rather than relying on HubSpot's default server-side timestamp.

HelpDeskZ

HelpDeskZ Configuration (Statuses, Priorities, Departments)

maps to

HubSpot Service Hub

HubSpot Pipeline + Teams Configuration

lossy
Fully supported

The complete HelpDeskZ configuration schema — ticket statuses, priorities, departments, and any custom ticket type flags — is documented in the migration inventory. This document is the reference for rebuilding the equivalent configuration in HubSpot Service Hub. We deliver this before migration begins so that the customer can configure HubSpot pipelines and teams while data extraction is underway.

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.

HelpDeskZ logo

HelpDeskZ gotchas

High

No REST API — migration requires direct database reads

Medium

Custom fields are stored as serialized PHP arrays

Medium

Email-to-ticket threading does not migrate cleanly

Low

Attachment files are stored on disk, not in the database

HubSpot Service Hub logo

HubSpot Service Hub gotchas

High

Rate limits throttle large migration API calls

High

Side conversations and Zendesk macros have no HubSpot equivalent

High

HubSpot stores ticket history as fragmented engagement objects

Medium

Custom Objects require Enterprise tier in HubSpot

Medium

Ticket pipeline stage probability values do not export cleanly

Pair-specific challenges

  • HelpDeskZ has no REST API — migration requires direct database access

    HelpDeskZ exposes no HTTP API. All data extraction runs through direct MySQL/MariaDB queries against the source database. We require read credentials to the database server (host, port, database name, table prefix) and SSH access or firewall rule opening if the database is on a private network. If the database is inaccessible due to hosting provider restrictions or forgotten credentials, migration cannot proceed until the customer restores database access. This is a scoping-stage gate, not a post-migration discovery.

  • PHP-serialized custom fields require version-aware decoding

    HelpDeskZ stores custom field values in a single serialized PHP array column on the tickets table. PHP 7 and PHP 8 produce incompatible serialization formats for some data types (objects, references). We detect the PHP version on the source server during extraction, apply the correct unserialization method, and fall back to regex extraction for corrupted serialized strings. Custom fields with corrupted serialization are skipped and logged so the customer can address them manually or as a post-migration cleanup task.

  • Email threading references do not migrate to HubSpot

    HelpDeskZ email-to-ticket records store Message-ID and In-Reply-To email headers that reference the HelpDeskZ mail system. These identifiers are not valid in HubSpot's ticket threading model. We extract the raw email body and attachment filenames but HubSpot assigns its own thread identifiers at insert time. If the customer relies on email threading for audit or compliance, they must implement a re-threading strategy in HubSpot post-migration.

  • Attachment files may be missing or on inaccessible storage

    HelpDeskZ stores uploaded files on disk in the uploads/ directory. The filesystem path is configurable and may have been moved, symlinked, or deleted over the lifetime of the installation. We verify the uploads directory path during scoping by querying the uploads_path configuration value. If the directory is inaccessible, we log missing files as warnings and skip them to prevent migration from blocking on a single lost attachment. The customer should audit the uploads directory before migration begins.

  • HubSpot Service Hub Professional is required for help desk workspace and SLA policies

    The HubSpot help desk workspace with pipelines, SLA policies, and team-based ticket routing is available only on Service Hub Professional ($90/seat/month) and Enterprise. If the customer selects Starter tier, tickets migrate as CRM records without the help desk workspace, no SLA timers, and no native multi-channel routing. We confirm the destination HubSpot tier during scoping and flag any help desk-specific features that require an upgrade before migration begins.

Migration approach

Six steps for a successful HelpDeskZ to HubSpot Service Hub data migration

  1. Scoping and database access verification

    We audit the HelpDeskZ database schema, table prefix, and PHP version. We confirm database read credentials, verify the uploads/ filesystem path is accessible via the same or a linked server, and extract the full status and priority code tables. We also confirm the HelpDeskZ version (EvolutionScript original vs ViktorNova fork) because the table schema and custom field storage can differ. The output is a written scoping document with record counts (tickets, users, attachments) and the confirmed database access path. This gates the migration start date.

  2. HubSpot destination configuration

    We guide the customer through HubSpot Service Hub configuration before migration begins. This includes creating the ticket pipeline and status values that match the HelpDeskZ status codes, setting up Teams that correspond to HelpDeskZ departments, and creating any custom ticket properties to receive HelpDeskZ custom field values. We pre-create all HubSpot custom properties via the CRM Properties API so that ticket inserts do not fail on unknown property errors. If the customer is on Starter tier and wants help desk features, we flag the tier upgrade requirement here.

  3. Data extraction and transformation

    We extract tickets, replies, users, and department records from the MySQL database via direct queries. For each ticket, we unserialize the custom_fields column, extract the conversation thread from the replies table in chronological order, and collect attachment filenames. We transform HelpDeskZ status and priority integer codes to the HubSpot-equivalent values using the mapping table agreed during scoping. We build a contact dedupe map by email so that HelpDeskZ clients matching existing HubSpot contacts are updated rather than duplicated.

  4. Attachment file extraction and upload

    We iterate over the attachment filename list per ticket, locate each file in the HelpDeskZ uploads/ directory, validate the file exists and is under the size limit, upload it to HubSpot's file manager API, and store the returned HubSpot file ID for association with the target ticket. Files that are missing or exceed HubSpot's attachment size limit are logged as warnings. We group attachments by ticket so that ticket insertion failures do not orphan uploaded files.

  5. HubSpot API insertion in dependency order

    We insert into HubSpot in dependency order: Teams (from departments), Users (from agents), Contacts (from clients with dedupe by email), then Tickets with conversation comments. Attachment associations are set after both the ticket and the file exist in HubSpot. We use HubSpot's Tickets API with batch upsert where the HelpDeskZ ticket ID is the external ID. Ticket timestamps (createdate, hs_last_modified_date) are set explicitly at insert to preserve the original HelpDeskZ creation date. We apply rate-limit handling with exponential backoff on 429 responses.

  6. Reconciliation report and automation handoff

    We generate a row-count reconciliation report comparing HelpDeskZ source record counts against HubSpot destination record counts for each object type. We log skipped records with reason codes (missing attachment, corrupted custom field, dedupe match) for customer review. We deliver the HelpDeskZ configuration inventory documenting email pipeline settings, custom statuses, and any non-standard department structures for the customer's HubSpot admin to reconfigure in HubSpot's connected email and help desk settings. We do not rebuild automations, SLAs, or ticket routing rules — these require HubSpot admin configuration post-migration.

Platform deep dives

Context on both ends of the pair

HelpDeskZ logo

HelpDeskZ

Source

Strengths

  • Zero licensing cost — GPL-licensed PHP software with no subscription or per-seat fees.
  • Complete data ownership via self-hosting — the database and uploads live on your own server.
  • Email-to-ticket via POP3/IMAP allows support teams to operate from existing mailboxes without a separate portal interface.
  • Lightweight and fast on modest hardware — designed for low-traffic environments where simplicity matters more than enterprise features.

Weaknesses

  • No documented public REST API, which blocks programmatic integrations and makes migration tooling development a custom database exercise.
  • Open-source community is small and fragmented — few plugins, no active forum, and the official vendor focuses on paid products instead.
  • Lacks built-in SLA tracking, canned responses, reporting dashboards, and multi-channel support that are standard in modern SaaS help desk platforms.
  • Self-hosting places server maintenance, security patching, and backup management entirely on the customer, with no managed hosting option from the vendor.
HubSpot Service Hub logo

HubSpot Service Hub

Destination

Strengths

  • Unified CRM object model means support context is always linked to sales and marketing data
  • Generous free tier with unlimited tickets and a shared inbox for small teams
  • Omnichannel inbox consolidates email, live chat, and major messaging platforms natively
  • Customer Success Workspace provides portfolio-level health scores without a separate tool
  • AI agent (Breeze) handles Tier-1 resolutions and knowledge base deflection automatically

Weaknesses

  • Per-seat pricing with mandatory onboarding fees inflates year-one cost significantly
  • Ticket history stored as fragmented engagement objects across APIs complicates export and migration
  • Custom Objects locked behind Enterprise tier limits portability for mid-market teams
  • Help desk depth—routing rules, SLA management, advanced reporting—trails dedicated tools like Zendesk
  • Setup and configuration requires real time investment; out-of-box defaults rarely fit existing workflows

Complexity grading

How hard is this migration?

Moderate Helpdesk migration. 3 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 HelpDeskZ and HubSpot Service Hub.

  • Object compatibility

    C

    3 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

    HelpDeskZ: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your HelpDeskZ to HubSpot Service Hub 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 HelpDeskZ to HubSpot Service Hub data migrations

Answers to the questions buyers ask most during HelpDeskZ to HubSpot Service Hub migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your HelpDeskZ to HubSpot Service Hub migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most HelpDeskZ migrations land between two and four weeks for databases under 5,000 tickets and 500 users. Migrations with high attachment volumes (over 10 GB of files), complex custom field schemas, or multiple custom status codes requiring explicit remapping logic move to five to eight weeks. The scoping phase adds one to two weeks on top of migration duration, during which we verify database access, extract record counts, and configure the HubSpot destination.

Adjacent paths

Related migrations to explore

Ready when you are

Move from HelpDeskZ.
Land in HubSpot Service Hub, 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