Helpdesk migration

Migrate from osTicket to HubSpot Service Hub

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

osTicket logo

osTicket

Source

HubSpot Service Hub

Destination

HubSpot Service Hub logo

Compatibility

71%

10 of 14

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

Complexity

CModerate

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from osTicket to HubSpot Service Hub is a migration from a narrow open-source API to a CRM-native service desk. osTicket's HTTP API supports ticket creation only and holds the full conversation history as a single rich-text thread blob per ticket, so we connect to the MySQL database directly using a read-only user to extract all records at scale. We split thread blobs into discrete message records during import so that each agent reply and customer response appears as a separate timeline entry in HubSpot's Conversations inbox. Organisations, Users, Agents, SLA Plans, Help Topics, and Custom Fields map to their HubSpot equivalents, with Departments resolved to Teams and SLA plan time windows stored as custom properties for the admin to activate post-migration. Workflows, automations, and canned-response templates do not migrate as code; we deliver a written inventory for the customer's admin to rebuild in HubSpot's workflow builder. The HubSpot Starter plan at $15 per seat per month is the entry tier for Service Hub, while osTicket's open-source edition carries no licensing cost but requires self-hosted infrastructure maintenance.

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

osTicket logo

osTicket

What's pushing teams away

  • No built-in live chat or real-time messaging channel, forcing teams to cobble together third-party chat integrations or manage chat separately from the ticketing workflow.
  • Limited scalability for high-volume environments — teams handling hundreds of tickets per day report performance degradation and lacking advanced routing or queue management.
  • Reporting and analytics are basic at best; there is no native dashboard with trend visualisation, SLA compliance charts, or agent performance metrics without third-party plugins.
  • Community-only support on the free tier means no guaranteed response time, and the commercial support package is priced as a separate annual subscription.
  • Teams outgrow the feature set as they scale — absence of built-in asset management, contract tracking, or advanced automation pushes organisations toward purpose-built ITSM platforms.

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

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

osTicket

Ticket

maps to

HubSpot Service Hub

Ticket

1:1
Fully supported

osTicket Ticket records migrate to HubSpot Tickets 1:1. The osTicket ticket ID is preserved in a custom property osticket_id__c for reconciliation. Status, Priority, Source channel, and created/updated timestamps map to HubSpot's standard Ticket properties. Ticket number in osTicket (formatted e.g., #0001234) is stored in a custom property for reference. We extract all ticket custom fields and map them to HubSpot Ticket custom properties, creating the HubSpot property schema during the scoping phase.

osTicket

Ticket Thread

maps to

HubSpot Service Hub

Conversation (Ticket Conversation)

1:many
Fully supported

osTicket stores the entire ticket conversation history — user replies, agent responses, and internal notes — as a single merged Thread record per ticket. We split this blob into discrete message records at migration time using osTicket's rendered-thread HTML structure, which is version-sensitive across osTicket releases. Each resulting message record receives the author name, timestamp, and internal vs. public flag preserved from the source thread. The split logic is applied during the MySQL read phase before records are written to HubSpot, ensuring that the conversation timeline in HubSpot's Tickets inbox mirrors the chronological order visible in osTicket.

osTicket

User (End User / Customer)

maps to

HubSpot Service Hub

Contact

1:1
Fully supported

osTicket Users (end users who submit tickets) map to HubSpot Contacts. We use email address as the dedupe key. Name, email, phone, and organisation linkage migrate. osTicket allows Users with no Organisation assignment; these map to standalone HubSpot Contacts without a Company association, and we flag them in the reconciliation report for the admin to link post-migration. Custom fields on osTicket user forms migrate to HubSpot Contact properties.

osTicket

Agent (Staff / Operator)

maps to

HubSpot Service Hub

User

1:1
Fully supported

osTicket Agents map to HubSpot Users (service desk agents). We resolve agents by email address. Any osTicket Agent without a matching HubSpot User email is placed in a reconciliation queue for the customer's admin to provision before production migration begins. osTicket per-department permissions do not have a direct HubSpot equivalent; we document the permission matrix in a written report for the admin to configure HubSpot Teams and access levels post-migration.

osTicket

Organisation (Company)

maps to

HubSpot Service Hub

Company

1:1
Fully supported

osTicket Organisations map to HubSpot Companies. The organisation name becomes the Company name field. We preserve organisation-level data including domain, phone, address, and any custom fields. The loosely-enforced User-to-Organisation relationship in osTicket is resolved by matching Users to their assigned Organisation by org_id at migration time, linking each Contact to the correct HubSpot Company via the HubSpot associations API.

osTicket

Department

maps to

HubSpot Service Hub

Team

1:1
Fully supported

osTicket Departments control ticket routing and agent permissions and carry an associated SLA plan and email routing address. We map Departments to HubSpot Teams (the inbox assignment unit in Service Hub). Each Department name and its associated SLA plan are recorded; the customer configures Team inboxes and routing rules in HubSpot post-migration based on the department inventory we deliver.

osTicket

SLA Plan

maps to

HubSpot Service Hub

Custom Property (First Response Due / Next SLADue)

lossy
Fully supported

osTicket SLA Plans define response and resolution deadlines tied to ticket priority. We extract SLA plan names, first-response hour windows, and resolution hour windows as typed HubSpot Ticket custom properties (e.g., sla_first_response_hours__c, sla_resolution_hours__c). These are not native HubSpot SLA objects (which are a separate premium add-on at Enterprise); the customer's admin activates HubSpot's native SLA feature or configures workflow-based SLA enforcement based on the migrated SLA data.

osTicket

Help Topic

maps to

HubSpot Service Hub

Ticket Subject Prefix or Tag

lossy
Fully supported

osTicket Help Topics are ticket categories that drive routing and SLA assignment. They are a first-class object in osTicket but have no direct HubSpot equivalent. We map Help Topics to a HubSpot Ticket custom property (e.g., help_topic__c as a single-select picklist) and optionally to HubSpot Tags on Tickets for reporting segmentation. The customer chooses the strategy during scoping.

osTicket

Attachment

maps to

HubSpot Service Hub

File (attached to Ticket)

1:1
Fully supported

osTicket stores attachments separately from the ticket thread record and links them by attachment ID. We extract attachment records alongside ticket threads, re-link them to the corresponding HubSpot Ticket using HubSpot's Files API, and preserve filename, MIME type, and file size. Attachments stored on the osTicket server filesystem (not in the database) require the customer to expose the attachment directory over a reachable URL or share it with us during scoping.

osTicket

Custom Fields (Ticket and User)

maps to

HubSpot Service Hub

Custom Properties

1:1
Fully supported

osTicket Custom Fields are configurable per ticket and user forms with types including text, boolean, date, list, and checkbox. We map each field to a corresponding HubSpot Ticket or Contact custom property with the appropriate field type. osTicket custom fields that are marked as required for end-user-facing forms silently block ticket creation via the osTicket API — this is handled at migration scoping time by temporarily setting them to optional, and restored post-migration if requested.

osTicket

Email Thread History

maps to

HubSpot Service Hub

Ticket Conversation

1:1
Fully supported

For tickets created via email (osTicket's email piping feature), the email thread history stored in the Thread blob migrates alongside the ticket. Each email in the thread is split into a discrete HubSpot Conversation message with author attribution, timestamp, and direction (inbound/outbound) preserved. Email addresses without a matching HubSpot Contact are created as stub Contact records during migration to preserve the sender attribution.

osTicket

Ticket Status

maps to

HubSpot Service Hub

Ticket Status

lossy
Fully supported

osTicket ticket statuses (Open, Closed, Archived, etc.) map to HubSpot Ticket Pipeline stage values. We map each osTicket status to a corresponding HubSpot pipeline stage, with Closed status triggering the completion timestamp. Custom osTicket ticket statuses are created as HubSpot Ticket pipeline stages during the schema preparation phase. The customer reviews and approves the status map before migration begins.

osTicket

Ticket Priority

maps to

HubSpot Service Hub

Ticket Priority

1:1
Fully supported

osTicket Priority levels (Low, Normal, High, Emergency) map directly to HubSpot Ticket Priority values. The mapping is 1:1 with no transformation required. Priority drives SLA plan assignment on the HubSpot side if native SLA enforcement is activated.

osTicket

Agent Stats / Department Stats

maps to

HubSpot Service Hub

No direct equivalent (reported separately)

1:1
Fully supported

osTicket tracks agent and department-level ticket statistics (tickets opened, closed, average response time) as derived data stored in the database. These are not individual records with a creation timestamp — they are computed rollup counters. We do not migrate rollup counters. The customer can recreate agent performance reporting in HubSpot's Service Hub analytics from the migrated ticket history once the agent is assigned as the ticket owner in HubSpot.

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.

osTicket logo

osTicket gotchas

High

API supports ticket creation only

Medium

Ticket threads are a single rich-text blob

Medium

Custom fields require optional setting for API

High

IP-restricted API keys block automated migration tooling

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

  • osTicket API has no bulk read — we connect to MySQL directly

    osTicket's HTTP API is write-only for ticket creation. There is no endpoint to list, export, or read tickets. We bypass the API entirely by connecting directly to the osTicket MySQL database using a read-only database user scoped to the osTicket schema. This gives us access to all records including Agents, Users, Organisations, SLA Plans, and the thread history. If direct MySQL access is unavailable (e.g., the database is on an isolated private network), we fall back to CSV export tooling, but attachments and thread history require manual handling in that scenario. IP-restricted API keys on the osTicket side do not affect our MySQL-based extraction.

  • Ticket thread blobs require version-sensitive splitting logic

    osTicket stores the entire conversation history as one merged Thread record per ticket. The thread is stored as rendered HTML with agent responses, user replies, and internal notes interleaved without discrete message records in the storage layer. We parse the thread HTML to split it into individual message records with author, timestamp, direction, and internal vs. public flags. This parsing logic is tied to the osTicket release version, so we verify the source osTicket version during scoping and adjust the splitting regex and DOM structure handling accordingly. Failure to handle versioning results in garbled conversation threads in HubSpot.

  • HubSpot Starter tier does not include shared team inboxes

    HubSpot Starter ($15/seat/mo) includes individual agent inboxes but not shared team inboxes or the full Conversations inbox feature. Teams migrating from osTicket where multiple agents share department-based inboxes must upgrade to HubSpot Professional ($90/seat/mo) or above to get shared team inboxes, ticket routing rules, and the visual workflow builder. We flag the tier requirement during scoping so the customer evaluates the pricing impact before migration begins. Downgrading to Starter post-migration after data has been migrated with team inbox assignments causes record reassignment complexity.

  • HubSpot does not have a native SLA object below Enterprise add-on

    HubSpot's native SLA management (with clock enforcement and auto-escalation) is available only as a premium add-on to the Enterprise tier. osTicket's SLA Plans are core functionality. We migrate SLA plan names and time windows as custom ticket properties so the customer's admin can activate HubSpot's SLA add-on post-migration or build workflow-based reminders. If the customer intends to use HubSpot's native SLA enforcement, they need to budget for the Enterprise add-on before migration scope is finalised.

  • osTicket custom fields marked required on user forms block API ticket creation

    When osTicket API integration is used (for ticket creation), custom fields that are marked as required for end users silently block ticket creation and return an opaque error without indicating which field is the blocker. This is a known osTicket forum issue. During migration scoping we check whether any required custom fields exist on user-facing ticket submission forms. If found, we note them as requiring a temporary optional flag during migration. We restore the required flag after migration if requested. This affects only the osTicket API path, not the MySQL direct-read path we use for bulk extraction.

Migration approach

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

  1. Source environment audit and edition selection

    We inspect the osTicket installation to identify the MySQL database version, schema variant (osTicket version determines the ERD shape), attachment storage method (database BLOB vs. filesystem), custom field definitions, SLA plan configuration, department structure, and user-to-organisation linkage覆盖率. We also identify the HubSpot Service Hub tier in use or required: Starter for individual inboxes, Professional for shared team inboxes and workflow automation, or Enterprise for native SLA management and advanced reporting. The audit output is a written data inventory and a tier recommendation.

  2. Database extraction and thread splitting preparation

    We connect to the osTicket MySQL database using a read-only database user scoped to the osTicket schema. We extract all Tickets, Users, Agents, Organisations, Custom Fields, Departments, SLA Plans, and Help Topics in structured form. We identify the osTicket release version to configure the thread-splitting parser — the HTML structure of osTicket thread rendering changes across releases. Attachments stored on the filesystem require the customer to either expose the attachment directory over HTTPS or provide a file share during extraction. We produce a record-count reconciliation report against the source database counts before proceeding.

  3. HubSpot schema preparation and property creation

    We create the HubSpot Ticket and Contact custom property schema in the destination portal before any data is written. This includes custom properties for SLA plan names and time windows, the original osTicket ticket ID (osticket_id__c) for reconciliation, Help Topic mapping fields, and any custom field equivalents from osTicket. We also configure the Ticket pipeline stages to match the osTicket ticket status map approved during scoping. If the customer is on Professional or above, we set up Teams to match the osTicket Department structure. Schema is validated in HubSpot's test environment before the migration run begins.

  4. Sandbox migration and reconciliation

    We run a full migration into the HubSpot sandbox or a parallel test portal using the same extraction and transformation logic planned for production. The customer's support operations lead reviews a sample of migrated tickets — checking conversation thread accuracy after splitting, contact-company linkage, SLA plan data presence, and agent assignment. We reconcile record counts (tickets in, contacts in, companies in, attachments in, SLA records in) against the source database counts. Any mapping corrections are applied to the production migration configuration before the next phase. Sign-off from the customer's admin is required before cutover.

  5. Production migration in dependency order

    We execute the production migration in record-dependency order. First, Companies (from osTicket Organisations) are created to establish the HubSpot Company records. Second, Contacts (from osTicket Users) are imported with Company association resolved by the osTicket org_id link. Third, Users (from osTicket Agents) are validated against the HubSpot User list. Fourth, Tickets are imported with thread history split into discrete conversation messages and linked to the correct Contact and Company. Fifth, Attachments are uploaded and linked to their parent tickets. Sixth, SLA plan data and Help Topic values are written to the custom properties on each ticket. Each phase emits a reconciliation report and the customer reviews before the next phase begins.

  6. Cutover, validation, and automation rebuild handoff

    We freeze osTicket write access during the cutover window and run a final delta migration of any tickets created or modified during the migration run. We enable HubSpot Service Hub as the system of record and deprecate osTicket access. We deliver the written automation and SLA rebuild inventory — documenting each osTicket SLA Plan with its response and resolution window, each department routing rule, and each help topic assignment — so the customer's admin can configure HubSpot workflows, team inboxes, and SLA enforcement in the new system. We offer a one-week hypercare window for reconciliation issues raised during the first support-team review.

Platform deep dives

Context on both ends of the pair

osTicket logo

osTicket

Source

Strengths

  • Zero licensing cost for the core open-source edition with optional paid support.
  • Full data residency control on self-hosted infrastructure with no vendor data handling.
  • PHP/MySQL stack runs on commodity hosting with minimal hardware requirements.
  • Configurable ticket forms, SLA plans, and department routing without plugin dependencies.
  • Active open-source community provides plugins, themes, and third-party integrations.

Weaknesses

  • No live chat, real-time messaging, or unified communications channel built in.
  • API surface is narrow — only ticket creation is writable; there is no bulk export or import endpoint.
  • Reporting is minimal; no native trend analysis, SLA dashboards, or agent performance metrics.
  • Limited scalability for large ticket volumes or high agent counts without performance tuning.
  • Upgrade and migration tooling relies on file-based patching with a manual sequence — not designed for automated CI/CD pipelines.
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 osTicket 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

    osTicket: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your osTicket 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 three and five weeks for accounts under 15,000 tickets and 5,000 contacts with no large attachment files or complex custom field structures. Migrations above 50,000 tickets, with years of thread history requiring splitting logic across multiple osTicket versions, large binary attachments stored on the filesystem, or complex multi-department SLA configurations, move to seven to ten weeks because of the MySQL schema analysis, thread-splitting validation, and batch reconciliation across all record types. A scoping call with our team determines the specific timeline based on your data inventory.

Adjacent paths

Related migrations to explore

Ready when you are

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