Helpdesk migration

Migrate from Request Tracker to HubSpot Service Hub

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

Request Tracker logo

Request Tracker

Source

HubSpot Service Hub

Destination

HubSpot Service Hub logo

Compatibility

83%

10 of 12

objects map 1:1 between Request Tracker and HubSpot Service Hub.

Complexity

CModerate

Timeline

6-9 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Request Tracker to HubSpot Service Hub is a structural migration across two fundamentally different helpdesk models. RT organizes work around Queues with per-queue custom lifecycles and server-side Scrips triggered by ticket events; HubSpot uses Pipelines with stages and a visual automation builder. RT has no bulk REST API, so extraction relies on tab-delimited spreadsheet exports that require pre-processing before they can enter a standard migration pipeline, and RT stores attachments as base64-encoded blobs in the database rather than linked files. We decode those blobs, reconstruct filenames and MIME types, and attach them to the correct HubSpot ticket conversation thread. We do not migrate RT Scrips, Templates, or queue-level automation rules as code; we deliver a written inventory of every active Scrip and Template for the customer's admin to rebuild in HubSpot's automation builder. RT's unlimited-queue model maps to HubSpot Pipelines, and each RT queue's custom lifecycle stages are recreated as Pipeline stages in HubSpot Service Hub Professional or above.

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

Request Tracker logo

Request Tracker

What's pushing teams away

  • RT's web interface is widely described as dated, text-heavy, and visually sparse compared to modern ITSM tools, leading teams with less technical users to migrate toward platforms like Jira Service Management or Freshservice.
  • Self-hosting requires ongoing server maintenance, security patching, and Perl module dependency management that smaller IT teams find operationally burdensome, pushing them toward fully-managed SaaS alternatives.
  • RT lacks native integrations with popular enterprise tools—SolarWinds, Confluence, Slack, and Microsoft Teams require custom scripting or workarounds that teams without dedicated DevOps staff cannot sustain.
  • Teams that need visual Kanban boards, modern mobile apps, and a polished agent experience find RT's feature set insufficient and migrate to platforms purpose-built for those workflows.

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

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

Request Tracker

Ticket

maps to

HubSpot Service Hub

Ticket

1:1
Fully supported

RT Tickets map directly to HubSpot Tickets. We map Subject to hs_ticket_subject, Status to hs_ticket_status, Priority to hs_ticket_priority, and Created to hs_ticket_createdate. RT's custom lifecycle statuses map to HubSpot Pipeline stage values, and each RT Queue becomes a HubSpot Pipeline. The RT ticket ID is preserved in a custom property rt_original_id__c for audit reconciliation.

Request Tracker

Queue

maps to

HubSpot Service Hub

Pipeline

1:1
Fully supported

Each RT Queue maps to a HubSpot Service Hub Pipeline. RT's per-queue custom lifecycle stages (e.g., new, open, stalled, resolved, rejected, or any custom statuses the RT admin defined) map to HubSpot Pipeline stage values. Queue-level SLA configurations and access controls require manual recreation in HubSpot because RT permissions are not exposed in a structured export format.

Request Tracker

User

maps to

HubSpot Service Hub

Contact

1:1
Fully supported

RT distinguishes Privileged (staff) and Unprivileged (requestor) users. Privileged RT users with login access map to HubSpot Contacts that also serve as agents; Unprivileged RT users map to HubSpot Contacts as requesters. RT name, email, organization, and phone fields map to HubSpot contact properties. Role assignment (AdminCc, Cc, OwnerDelegated) requires reconstruction in HubSpot's sharing and team model post-migration.

Request Tracker

Custom Field

maps to

HubSpot Service Hub

Custom Ticket Property

lossy
Fully supported

RT unlimited Custom Fields of type Select-Box, Freeform text, Date, IP Address, and others map to HubSpot custom ticket properties. We pre-create the equivalent HubSpot properties before ticket migration begins, matching field type where possible (RT Select-Box maps to HubSpot single-select or multi-select; RT Date maps to HubSpot date picker). Queue-scoped RT Custom Fields are mapped to the relevant HubSpot Pipeline so that only tickets in the matching Pipeline expose those properties.

Request Tracker

Transaction

maps to

HubSpot Service Hub

Conversation (hs_conversation_thread)

1:1
Fully supported

Every RT ticket action — reply, comment, status change, field update — creates a Transaction record ordered by Created date. We export the full transaction log and thread it back into HubSpot as conversation messages: RT reply content becomes a HubSpot customer reply; RT comment content becomes a HubSpot internal note (hs_internal_is_private = true). The chronological order is preserved by setting hs_timestamp to the original RT Created value.

Request Tracker

Attachment

maps to

HubSpot Service Hub

Ticket Attachment

1:1
Fully supported

RT stores file attachments as base64-encoded blobs in the Attachments table linked to Transactions by ID. We run a targeted SQL export per ticket's attachment IDs, decode the base64 blob, reconstruct the original filename and MIME type from RT's metadata, and attach the resulting file to the HubSpot ticket conversation thread. This extraction step is the highest-risk part of RT migration because blob size and the number of attachment records directly drive extraction timeline.

Request Tracker

Article (Knowledge Base)

maps to

HubSpot Service Hub

HubSpot Knowledge Base Article

1:1
Fully supported

RT Articles in classes (e.g., General) export via RT::Extension::Import::CSV using the --article-class flag and are mapped to HubSpot knowledge base articles. Article Name maps to hs_article_title, Synopsis to a hubspot internal summary field, and Content to the article body. RT article Custom Fields require pre-creation as HubSpot article custom properties before import. We flag that RT article classes do not map to HubSpot article categories — categories must be manually organized post-import.

Request Tracker

Group

maps to

HubSpot Service Hub

Team

lossy
Fully supported

RT Groups organize users for queue-level and ticket-level permission grants (AdminCc, Cc, OwnerDelegated). Group membership does not export in a flat file — we reconstruct it by querying the GroupMembers table and building a membership list per group. Groups map to HubSpot Teams, and group members map to HubSpot user team membership. RT's RTx::QueueMover-style queue transfer logic does not have a HubSpot equivalent and must be documented for the admin to implement manually.

Request Tracker

Template

maps to

HubSpot Service Hub

Workflow Email Template (documented, not migrated)

1:1
Fully supported

RT Templates define email and notification text used by Scrips, with token placeholders and conditional logic. We export Template names and content as structured text data and preserve the placeholder syntax so notification wording survives as reference documentation. RT Templates cannot be imported into HubSpot because HubSpot email templates use a different token syntax (e.g., {{contact.firstname}} vs RT's [% Ticket.FirstQueue %]). We deliver the full template content as a written reference document for the admin to rebuild in HubSpot's email template editor.

Request Tracker

Time Tracking

maps to

HubSpot Service Hub

Time Entry (via custom property or manual)

1:1
Mapping required

RT stores Estimated-minutes and Worked-minutes natively on each ticket. RT-Extension-TimeTracking adds structured time-entry records with User, Ticket, Time Worked, and Note. We export native ticket time fields to HubSpot custom number properties (rt_estimated_minutes__c, rt_worked_minutes__c). Structured time-entry records from the TimeTracking extension are exported as a separate object and either mapped to HubSpot custom object records or provided as a CSV for manual import depending on the customer's HubSpot tier.

Request Tracker

Scrip

maps to

HubSpot Service Hub

Workflow (documented, not migrated)

1:1
Fully supported

RT Scrips are server-side Perl automation rules triggered by ticket lifecycle events. They are tied to a specific RT instance's codebase and cannot be migrated to a non-RT destination. We deliver a written inventory of every active Scrip including its description, queue scope, template dependency, and condition logic. The inventory document includes recommended HubSpot Workflow equivalents (trigger type, conditions, actions) so the customer's admin has a rebuild guide rather than a blank slate.

Request Tracker

Asset

maps to

HubSpot Service Hub

Custom Object (CMDB)

1:1
Fully supported

RT Assets (from RTx::AssetTracker or the standalone RT Assets extension) catalog configuration items. Asset records export via REST API or database query and map to a HubSpot custom object with equivalent fields. We pre-create the custom object schema in HubSpot including lookup relationships to Contact or Company if applicable before importing asset records.

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.

Request Tracker logo

Request Tracker gotchas

Medium

Tab-delimited export instead of CSV

Medium

Attachments stored as database blobs

High

RT-to-RT upgrades require original RT directory

High

No native bulk REST API

Low

Comma-heavy article content breaks CSV imports

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

  • RT has no bulk REST API for automated extraction

    RT does not publish a bulk or batch REST API endpoint for ticket exports. All data extraction relies on the tab-delimited spreadsheet export at the bottom of any RT search results list, direct database access to RT's MySQL or PostgreSQL schema, or community-maintained scripts. For cloud-hosted RT instances where direct database access is unavailable, we use the spreadsheet export workaround combined with targeted REST API calls for user and custom field lookups. Migration timelines scale linearly with record volume when no bulk API is available, which we communicate upfront during scoping so the customer understands the extraction phase duration before any HubSpot API calls begin.

  • Tab-delimited export requires pre-processing before CSV import

    RT's built-in spreadsheet export produces tab-delimited text rather than RFC 4180 CSV. Fields containing commas or newlines are not always quoted consistently, which breaks naive CSV parsers and standard ETL tools. We pre-process the raw export through a sanitizer that detects delimiter collisions, adds quoting where needed, and converts the output to proper CSV before mapping it into the migration pipeline. This step is required for every RT data extraction and adds a pre-flight data quality phase to the timeline.

  • Attachment blobs require direct database extraction and decoding

    RT stores file attachments as base64-encoded binary objects inside the Attachments database table, linked to Transactions by ID. There is no file system path for attachments in a standard RT installation. Extraction requires a direct SQL query targeting the attachment IDs associated with each ticket, base64 decoding the blob, reconstructing the original filename and MIME type from RT metadata columns, and then attaching the reconstructed file to the HubSpot ticket. The blob volume directly drives extraction time, and there is no parallelization path when direct DB access is the only extraction method available.

  • RT queues map to HubSpot pipelines but custom lifecycles do not

    RT's unlimited-queue model with per-queue custom lifecycles (custom status values beyond the standard new-open-stalled-resolved) does not have a direct HubSpot Service Hub equivalent. Each RT Queue becomes a HubSpot Pipeline, and the RT custom lifecycle stages are recreated as Pipeline stages in HubSpot, but RT's lifecycle transition rules (e.g., which statuses can transition to which) have no HubSpot equivalent and must be rebuilt as HubSpot Workflow conditions. We document the full lifecycle map during scoping and deliver it as part of the Scrip and Template inventory.

  • RT Scrips and Templates do not migrate as automation code

    RT Scrips (Perl server-side automation) and Templates (notification text with RT token placeholders) are tied to a specific RT instance's codebase and cannot be meaningfully imported into HubSpot Service Hub. We do not migrate them as code. We export Template content as reference text, inventory every active Scrip with its trigger conditions and action logic, and deliver a written rebuild guide mapping each Scrip to a HubSpot Workflow equivalent. The customer's admin recreates the notification wording in HubSpot's template editor using HubSpot's own token syntax (e.g., {{ticket.subject}}).

Migration approach

Six steps for a successful Request Tracker to HubSpot Service Hub data migration

  1. Discovery and RT extraction method selection

    We audit the source RT instance across version (4.2 or 5.0), hosting model (self-hosted on customer infrastructure or managed cloud), database engine (MySQL or PostgreSQL), ticket volume, queue count, active custom lifecycles, user roster size, attachment blob volume estimate, and any RT extensions in use (TimeTracking, AssetTracker). We determine the extraction method: direct database read for self-hosted instances, tab-delimited export workaround for managed cloud, or a hybrid approach if some objects are accessible via DB and others require the spreadsheet export. The discovery output is a written scope document, an RT-to-HubSpot object mapping table, and a recommended HubSpot Service Hub tier (Starter, Professional, or Enterprise) based on pipeline count, custom property limits, and automation requirements.

  2. RT data extraction and pre-processing

    We extract data from RT in dependency order: Users and Groups first, then Queues and Custom Field definitions, then Tickets with full transaction history, then Attachments. The tab-delimited export is sanitized and converted to RFC 4180 CSV. Attachment blobs are decoded from base64, filenames and MIME types are reconstructed from RT metadata columns, and files are staged in a structured file store. Article data is exported via the Import::CSV extension's --article-class flag with explicit quote_char and sep_char configuration. We emit row counts and spot-check samples against the RT UI for every object before the extracted data enters the transformation pipeline.

  3. HubSpot schema provisioning and pipeline design

    We provision the HubSpot Service Hub destination schema before any record import. This includes creating HubSpot Pipelines (one per RT Queue), configuring Pipeline stage values to match RT custom lifecycle statuses, creating custom ticket properties for every RT Custom Field with type-appropriate HubSpot field types, creating the knowledge base structure for RT Article mapping, and configuring team membership for RT Group reconstruction. Schema provisioning happens in a HubSpot Sandbox or on the production account with a test record validation step before full import begins.

  4. Record migration in dependency order

    We run the production migration in record-dependency order: Contacts (from RT Users, with the Privileged/Unprivileged distinction resolved), Companies (from RT user organization fields or a separate organization export), Pipelines (deployed before tickets), Tickets with conversations (RT Transactions threaded as HubSpot replies and internal notes), Attachments (files re-attached to the correct HubSpot ticket conversation thread by RT transaction ID lookup), Time Tracking data (as custom ticket properties or a custom object), Articles (mapped to HubSpot knowledge base articles with category assignment deferred to the admin), and Assets (mapped to a HubSpot custom object). Each phase emits a row-count reconciliation report before the next phase begins.

  5. HubSpot API rate-limit management and chunking

    HubSpot's CRM API enforces a burst limit of 100 requests per 10 seconds for Starter accounts, 190 requests per 10 seconds for Professional and Enterprise accounts, and 5 requests per second for the Search API regardless of tier. We implement exponential backoff on 429 responses, batch record creation where the HubSpot bulk API is available (Professional+), and chunk attachment uploads separately from record imports. The HubSpot Search API (5 req/s) is used only for lookup resolution (e.g., matching HubSpot contact IDs by email); bulk imports use the ticket and conversation batch endpoints to stay within burst limits without saturating the Search API capacity that the customer's ongoing operations also need.

  6. Cutover, validation, and automation rebuild handoff

    We freeze RT writes during the cutover window, run a final delta migration of any records created or modified during the migration window, then enable HubSpot Service Hub as the system of record. We deliver the Scrip and Template inventory document to the customer's admin team with a rebuild guide for each Scrip mapped to a HubSpot Workflow equivalent. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild RT Scrips as HubSpot Workflows inside the migration scope; that work is handled by the customer's admin using the inventory document, or as a separate engagement.

Platform deep dives

Context on both ends of the pair

Request Tracker logo

Request Tracker

Source

Strengths

  • Fully open source (GPL) with no feature-gating across plans—every capability is available on every tier.
  • Unlimited queues and custom lifecycles let a single instance handle multiple business processes simultaneously.
  • Deep Perl-based customization engine allows complete behavioral modification of ticket lifecycle logic.
  • Integrated email-driven workflow creates tickets from incoming emails and sends notifications from outgoing replies.
  • Long track record with an active community forum and 20+ years of documented migration and upgrade patterns.

Weaknesses

  • No native bulk REST API for automated data extraction—all exports require the tab-delimited spreadsheet workaround, direct database access, or community scripts.
  • Web UI is visually dated with a steep learning curve for non-technical staff compared to modern SaaS helpdesk products.
  • Self-hosted deployments require Linux server administration, Perl module management, and MTA configuration knowledge.
  • Limited native integrations with popular enterprise tools like Slack, Teams, and Confluence without custom development work.
  • Upgrade paths between major RT versions (e.g., 4.2 to 5.0) require careful database migration steps that are non-trivial for understaffed teams.
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 Request Tracker 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

    Request Tracker: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Request Tracker 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 six and nine weeks for up to 10,000 tickets across fewer than 10 queues with standard attachment volume. Migrations with high attachment blob volume (tens of gigabytes of base64 data to decode), complex multi-lifecycle queue structures (20+ custom statuses across queues), or large user rosters requiring group reconstruction move to ten to sixteen weeks. The RT extraction phase — which has no bulk API — typically takes one to three weeks depending on record count and whether direct database access is available.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Request Tracker.
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