Helpdesk migration

Migrate from eTicket to HubSpot Service Hub

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

eTicket logo

eTicket

Source

HubSpot Service Hub

Destination

HubSpot Service Hub logo

Compatibility

58%

7 of 12

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

Complexity

CModerate

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from eTicket to HubSpot Service Hub is a migration from a standalone ticketing tool into a CRM-native service platform. eTicket organizes support around Tickets, Customers, Agents, and Teams with a lightweight schema; HubSpot Service Hub uses Contacts, Companies, Tickets, Inboxes, and Conversations with pipeline stages, SLA policies, and a unified Help Desk Workspace. We sequence the migration to resolve Agents against HubSpot Users, Customers against Contacts and Companies, and Tickets against the target pipeline configuration before import. We do not migrate automations, sequences, SLA policies, or the eTicket knowledge base as code; we deliver a written map of these for your admin to rebuild. HubSpot Service Hub pricing starts at $9 per seat on Starter and scales through Professional and Enterprise with AI features including Breeze Customer Agents at the top tier.

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

eTicket logo

eTicket

What's pushing teams away

  • The project is effectively dormant — the latest documented release (1.7.3) is from October 2008, with no modern development cadence, leaving customers exposed to unpatched dependency and security issues.
  • No public API and no modern integration story — teams that want to connect helpdesk data to CRM, BI, or modern automation tools have no native path.
  • PHP and MySQL stack assumptions are dated; deploying on modern hosting often requires patching PHP compatibility issues that the upstream project does not address.
  • Limited reporting and analytics — eTicket is a basic queue-and-conversation tool, with no SLA timers, no advanced workflow, and no dashboard depth that modern helpdesks ship by default.
  • Migration paths to modern helpdesks (Zendesk, Freshdesk, Help Scout) are entirely manual — there is no published export tool or supported migration partner, so teams must scrape the MySQL database directly.

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 eTicket objects map to HubSpot Service Hub

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

eTicket

Ticket

maps to

HubSpot Service Hub

Ticket

1:1
Fully supported

eTicket Tickets map directly to HubSpot Tickets with ticket ID preserved in hs_ticket_id__c for audit. eTicket status (Open, Pending, Resolved, Closed) maps to HubSpot ticket_pipeline_stage. Priority and category migrate as custom properties if the eTicket schema uses custom fields beyond the standard set. We validate the target HubSpot pipeline configuration before import and flag any status values with no equivalent stage in the destination pipeline.

eTicket

Customer

maps to

HubSpot Service Hub

Contact

1:1
Fully supported

eTicket Customer records map to HubSpot Contacts. Email is the dedupe key; we batch-load Contacts first so that subsequent Ticket imports can resolve the contact_id lookup. Any eTicket Customer with a company domain we attempt to associate to an existing HubSpot Company record or flag for manual association post-migration. Phone, address, and custom fields migrate as typed HubSpot properties.

eTicket

Customer

maps to

HubSpot Service Hub

Company

1:many
Fully supported

eTicket Customers that share a domain or company name merge into a single HubSpot Company record. The Company is created before Contact import and the hs_company_id__c on Contact satisfies the HubSpot lookup. We use domain extraction from customer email addresses as the primary grouping key when company linkage is not explicit in eTicket.

eTicket

Agent

maps to

HubSpot Service Hub

User

1:1
Fully supported

eTicket Agents map to HubSpot Users by email address match. We extract every distinct agent_id referenced on Ticket and Conversation records and match against the destination HubSpot User table. Any Agent without a matching User goes to a reconciliation queue for the customer's admin to provision the User before record import resumes. Agent status (active, inactive) maps to HubSpot User active flag.

eTicket

Team

maps to

HubSpot Service Hub

Inbox

lossy
Fully supported

eTicket Teams map to HubSpot Inboxes with team email addresses assigned as inbox routing addresses. Ticket assignment by team in eTicket becomes conversation routing rules in HubSpot based on inbox assignment. We configure inbox-to-team mappings during the pre-migration schema phase and test routing logic in a sandbox migration before production import.

eTicket

Conversation

maps to

HubSpot Service Hub

Conversation (Tickets)

1:1
Fully supported

eTicket conversation threads (customer messages and agent replies) migrate as HubSpot Ticket Conversations. Thread ordering is preserved by setting the timestamp on each conversation message to the original eTicket created_at value. We flag any inline images or embedded files that appear in conversation bodies and handle them as ContentDocument records linked via ContentDocumentLink to the parent Ticket. Side conversations (internal notes) migrate as private ticket conversations accessible only to users with appropriate HubSpot permissions.

eTicket

Attachment

maps to

HubSpot Service Hub

ContentDocument

1:1
Fully supported

eTicket file attachments on Tickets and Conversations migrate as HubSpot ContentDocument records with the original filename and MIME type preserved. Each ContentDocument is linked to the parent Ticket via ContentDocumentLink. We chunk large attachment batches to avoid API timeouts and skip any attachment exceeding HubSpot's 25 MB per file limit, flagging those records for manual re-upload.

eTicket

Tag

maps to

HubSpot Service Hub

Multi-select Picklist or HubSpot Topic

lossy
Fully supported

eTicket Tags on Tickets migrate to HubSpot ticket_tag_ids (multi-select picklist) or HubSpot Topics with TopicAssignment records. The customer chooses tag strategy during scoping. Tags used for content classification migrate as Topics; tags used for ticket filtering migrate as multi-select picklist values on the Ticket object. We validate picklist values against the HubSpot property whitelist to avoid import rejection.

eTicket

Custom Ticket Field

maps to

HubSpot Service Hub

Custom Property

lossy
Fully supported

eTicket custom fields on Tickets (string, boolean, date, number, select, multi-select) map to HubSpot custom properties of equivalent type. We create each custom property in HubSpot before migration using the HubSpot Properties API with the correct field type and options array. Select and multi-select fields require explicit value mapping if eTicket uses different label names than the HubSpot picklist options. Boolean fields default to true/false values unless a different mapping is specified.

eTicket

KB Article

maps to

HubSpot Service Hub

Knowledge Base Article

1:1
Fully supported

eTicket KB Articles migrate to HubSpot Knowledge Base articles with title, body (HTML), author, folder, and publication status preserved. Category and subcategory structure maps to HubSpot Knowledge Base sections and categories. We do not migrate article-level permissions or version history; these are flagged as rebuild items in the handoff document. Articles with custom fields map to HubSpot article properties if available on the target tier.

eTicket

KB Category

maps to

HubSpot Service Hub

Knowledge Base Category

1:1
Fully supported

eTicket KB Categories map to HubSpot Knowledge Base categories with category name and parent-child hierarchy preserved. Category ordering migrates as article position within category. We validate category slug uniqueness in HubSpot before import to avoid naming conflicts.

eTicket

Ticket (historical timestamp)

maps to

HubSpot Service Hub

Ticket (hs_createdate, hs_updatedate)

lossy
Fully supported

Original eTicket created_at and updated_at timestamps migrate to HubSpot hs_createdate and hs_lastmodifieddate on Ticket. Closed tickets carry the original resolved_at as a custom property hs_resolved_at__c for reporting on mean time to resolution. We preserve chronological ordering for timeline display by setting timestamps before record upsert.

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.

eTicket logo

eTicket gotchas

High

Project is effectively dormant — latest release dates to 2008

High

No public API or vendor-supported export tooling

Medium

Attachments live on disk and can be orphaned

Medium

No SLA, automation, or modern routing engine

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

  • eTicket data cleanliness varies and delays are common

    eTicket is used by small support teams who often have inconsistent data hygiene: missing email addresses on Customers, inactive Agents still assigned to open Tickets, orphaned custom field values with no source picklist, and duplicate Customers with slightly different spellings. We audit the source data during scoping and flag records that will fail HubSpot's required-field validation (Contacts require an email or a HubSpot-generated email placeholder; Tickets require a pipeline and a subject). Data cleaning before migration is billable scoping work and is not optional for a clean import.

  • Custom ticket fields require pre-creation in HubSpot before import

    HubSpot requires custom properties to exist in the portal before records referencing them can be imported via API. If eTicket uses custom fields not in the standard set (such as custom dropdowns for product line, billing tier, or SLA level), we must create these as typed HubSpot properties in the destination portal before any Ticket records load. Migrations that skip this step result in records inserting without the custom field data, which then requires a second import pass to backfill. We handle property creation as a pre-migration configuration step, not a post-migration cleanup task.

  • Conversation threading requires email association to preserve message order

    HubSpot Tickets Conversations are ordered by timestamp and linked to a Contact and an Inbox. If eTicket conversations include private internal notes (visible only to agents) and customer-facing replies, we must separate these into the correct HubSpot conversation type and set visibility appropriately. Any emails sent from eTicket that used a shared inbox address rather than an agent-specific address may lose sender attribution in HubSpot unless we remap the from_address to the correct User record. We test thread rendering on a sample of 25 tickets during sandbox migration before committing to production thread order.

  • HubSpot API rate limits and batch chunking constrain import speed

    HubSpot's Contacts API enforces rate limits on a per-App basis (currently 100 requests/10 seconds with burst capacity). For migrations exceeding 5,000 records, we chunk data into batches, implement exponential backoff on 429 responses, and use HubSpot's batch endpoint where available to stay within limits without extending the migration window. Large attachment imports (ContentDocument uploads) run separately from record imports and may require additional time if the source has many files attached per ticket.

  • Automations, workflows, and SLA policies do not migrate as code

    eTicket rule-based automations (auto-assignment triggers, status-change notifications, escalation timers) have no direct HubSpot equivalent at the API level. We do not migrate them as functional rules. We deliver a written inventory of every active eTicket automation with its trigger conditions, actions, and recommended HubSpot Workflow equivalent, including any SLA policies that need to be rebuilt as HubSpot SLA objects on Professional and above. The customer's admin rebuilds these inside Service Hub post-migration; this work is outside the standard migration scope.

Migration approach

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

  1. Scoping and data audit

    We conduct a scoping call to extract the eTicket schema: all standard and custom fields on Ticket, Customer, Agent, Team, Conversation, Attachment, Tag, and KB Article objects. We export a record count summary, identify records with missing required fields, flag inactive agents with open ticket assignments, and assess data volume for pricing and timeline. Any data quality issues (duplicate Customers, missing emails, orphaned attachments) are documented in a pre-migration cleanup checklist for the customer's review before migration begins.

  2. HubSpot portal configuration

    We configure the destination HubSpot Service Hub portal before any data import: creating custom properties (matching each eTicket custom field type), defining ticket pipelines and stages, creating Inboxes mapped to eTicket Teams, provisioning Users for each Agent, and creating Knowledge Base categories matching the eTicket KB structure. Configuration is validated in a HubSpot sandbox or development portal before production import to avoid schema changes mid-migration.

  3. Sandbox migration and reconciliation

    We run a full migration into the production HubSpot portal using a subset of live data (typically the 100 most recent tickets with full conversation history) to validate thread ordering, attachment rendering, custom property population, and Contact-Company association accuracy. The customer's support operations lead reviews the sandbox results, spot-checks 25-50 records against the eTicket source, and approves the mapping before production migration begins. Any mapping corrections happen at this stage.

  4. Owner and agent reconciliation

    We extract every distinct eTicket Agent referenced on Tickets and Conversations and match by email against the HubSpot User table. Agents without a matching HubSpot User go to a reconciliation queue. The customer's HubSpot admin provisions any missing Users (active or inactive depending on whether the original eTicket agent is still on staff). Migration cannot proceed past this step because HubSpot conversation attribution requires a valid OwnerId on each Ticket record.

  5. Production migration in dependency order

    We run production migration in record-dependency order: HubSpot Users (validated from step 4), Companies (from eTicket Customers grouped by domain), Contacts (with CompanyId resolved), Knowledge Base categories and articles, Tickets (with ContactId, OwnerId, pipeline, and stage resolved), Conversations (threaded by timestamp with attachment ContentDocuments linked), and Tags (mapped to ticket_tag_ids or Topics). Each phase emits a row-count reconciliation report. We pause writes in eTicket during the final 24 hours before cutover to capture any late-arriving tickets as a delta import.

  6. Cutover, validation, and automation handoff

    We freeze eTicket writes during cutover, run a final delta migration of any records created or updated during the migration window, then enable HubSpot Service Hub as the system of record. We deliver the automation and workflow inventory document to the customer's admin team with a rebuild priority list. We support a 72-hour hypercare window where we resolve any data issues raised by the support team. We do not rebuild eTicket automations as HubSpot Workflows inside the migration scope; that work is a separate engagement or an internal admin task.

Platform deep dives

Context on both ends of the pair

eTicket logo

eTicket

Source

Strengths

  • Free and open-source self-hosted PHP/MySQL helpdesk.
  • Email-to-ticket (pop3/pipe) and web-form ticket creation in the core distribution.
  • Skinnable to match the host website's branding.
  • Multi-lingual UI and CAPTCHA / spam filtering included.
  • Full database ownership for teams that need on-premise data control.

Weaknesses

  • Project is effectively dormant; last release in October 2008.
  • No public API or supported migration tooling — exports go through direct MySQL queries.
  • No SLA engine, no automation rules, no modern reporting.
  • PHP / MySQL stack compatibility issues on modern hosting are not addressed upstream.
  • Limited third-party community or commercial support for new deployments.
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. 6 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 eTicket and HubSpot Service Hub.

  • Object compatibility

    D

    6 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

    eTicket: Not applicable — no API surface exists..

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between two and four weeks for accounts under 10,000 tickets, 2,000 customers, and no custom knowledge base. Migrations with a full KB article set, multiple eTicket teams mapped to HubSpot inboxes, large conversation histories (over 50,000 messages), or custom ticket fields requiring pre-creation move to six to ten weeks because of thread sequencing validation, attachment chunking, and multi-phase import testing. eTicket data cleanliness issues found during scoping can extend the timeline if data cleanup is required before migration begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from eTicket.
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