Helpdesk migration
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
Source
HubSpot Service Hub
Destination
Compatibility
7 of 12
objects map 1:1 between eTicket and HubSpot Service Hub.
Complexity
CModerate
Timeline
2-4 weeks
Overview
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.
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
eTicket platform overview
Scorecard, SWOT, gotchas, and pricing for eTicket.
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 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
HubSpot Service Hub
Ticket
1:1eTicket 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
HubSpot Service Hub
Contact
1:1eTicket 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
HubSpot Service Hub
Company
1:manyeTicket 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
HubSpot Service Hub
User
1:1eTicket 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
HubSpot Service Hub
Inbox
lossyeTicket 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
HubSpot Service Hub
Conversation (Tickets)
1:1eTicket 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
HubSpot Service Hub
ContentDocument
1:1eTicket 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
HubSpot Service Hub
Multi-select Picklist or HubSpot Topic
lossyeTicket 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
HubSpot Service Hub
Custom Property
lossyeTicket 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
HubSpot Service Hub
Knowledge Base Article
1:1eTicket 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
HubSpot Service Hub
Knowledge Base Category
1:1eTicket 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)
HubSpot Service Hub
Ticket (hs_createdate, hs_updatedate)
lossyOriginal 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.
| eTicket | HubSpot Service Hub | Compatibility | |
|---|---|---|---|
| Ticket | Ticket1:1 | Fully supported | |
| Customer | Contact1:1 | Fully supported | |
| Customer | Company1:many | Fully supported | |
| Agent | User1:1 | Fully supported | |
| Team | Inboxlossy | Fully supported | |
| Conversation | Conversation (Tickets)1:1 | Fully supported | |
| Attachment | ContentDocument1:1 | Fully supported | |
| Tag | Multi-select Picklist or HubSpot Topiclossy | Fully supported | |
| Custom Ticket Field | Custom Propertylossy | Fully supported | |
| KB Article | Knowledge Base Article1:1 | Fully supported | |
| KB Category | Knowledge Base Category1:1 | Fully supported | |
| Ticket (historical timestamp) | Ticket (hs_createdate, hs_updatedate)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.
eTicket gotchas
Project is effectively dormant — latest release dates to 2008
No public API or vendor-supported export tooling
Attachments live on disk and can be orphaned
No SLA, automation, or modern routing engine
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
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.
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.
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.
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.
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.
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
eTicket
Source
Strengths
Weaknesses
HubSpot Service Hub
Destination
Strengths
Weaknesses
Complexity grading
Moderate Helpdesk migration. 6 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 eTicket and HubSpot Service Hub.
Object compatibility
6 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
eTicket: Not applicable — no API surface exists..
Data volume sensitivity
eTicket 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 eTicket to HubSpot Service Hub migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave eTicket
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.