Skip to content

HubSpot Service Hub Migration Checklist

A technical guide on migrating conversation history from Front to HubSpot Service Hub, covering API extraction, data mapping, attachment handling, and thread reconstruction.

Tejas Mondeeri Tejas Mondeeri · · 4 min read
HubSpot Service Hub Migration Checklist
TALK TO AN ENGINEER

Planning a migration?

Get a free 30-min call with our engineers. We'll review your setup and map out a custom migration plan — no obligation.

Schedule a free call
  • 1,500+ migrations completed
  • Zero downtime guaranteed
  • Transparent, fixed pricing
  • Project success responsibility
  • Post-migration support included

Migrating from Front to HubSpot Service Hub is a strategic move toward unifying your CRM and support operations. If you are tasked with a front to hubspot service hub migrate conversation history project, you already know that moving data between two fundamentally different platforms is complex. As someone who has engineered these data pipelines, I can tell you that success relies on a strict, API-driven approach.

This technical guide explains exactly how to extract full conversation threads from Front via its API, transform them into HubSpot tickets and associated engagements, and preserve your metadata, attachments, and timestamps.

TL;DR: When to choose API migration vs CSV

If you only need to move basic contact data or flat ticket headers, a CSV import works. However, to execute a true front to hubspot service hub migrate conversation history import conversations process, you must use the APIs.

CSV imports cannot reconstruct threaded conversations, preserve internal comments, backdate historical timestamps on individual messages, or migrate attachments. For a complete front app export conversation history hubspot service hub migration conversations workflow, the API is mandatory.

Front data model overview: conversations, messages, attachments, metadata

Before writing any code, you need to understand how Front structures its data:

  • Conversations: The parent object. It holds metadata like tags, assignees, and the current status (Open, Archived, Spam).
  • Messages: The actual inbound and outbound communications (emails, SMS, chat) nested inside a conversation.
  • Comments: Internal notes left by agents, also nested within the conversation.
  • Attachments: Files tied to specific messages or comments.

HubSpot data model recap: tickets, engagements, associations

HubSpot handles support data differently. There is no single "Conversation" object that holds everything in the CRM view. Instead, you have:

  • Tickets: The parent object representing the issue. It holds custom properties, statuses (Pipelines/Stages), and owner IDs.
  • Engagements: The timeline activities. These are broken down into specific types: Emails, Notes (for internal comments), Calls, and Meetings.
  • Associations: The critical link. A Ticket must be associated with a Contact, a Company, and multiple Engagements to reconstruct the thread.

Field-by-field mapping: Front → HubSpot (examples)

Mapping your legacy data requires translating Front's schema into HubSpot's CRM objects.

  • Front Conversation ID → Store this in a custom HubSpot Ticket property (e.g., legacy_front_id). This is vital for delta syncs and deduplication.
  • Front Subject → HubSpot Ticket subject.
  • Front Status (Archived) → HubSpot Ticket Stage (e.g., Closed).
  • Front Assignee → HubSpot hubspot_owner_id (requires mapping Front user emails to HubSpot Owner IDs).
  • Front Tags → HubSpot Custom Ticket Property (Multi-select dropdown).
  • Front Message (Inbound/Outbound) → HubSpot Email Engagement (mapped to the Ticket and Contact).
  • Front Comment → HubSpot Note Engagement.

Attachment handling and re-upload strategy

Attachments do not migrate automatically. Front provides a download URL for attachments in its API payload. Your migration script must:

  1. Download the file from the Front API into memory or temporary storage.
  2. Upload the file to HubSpot using the HubSpot Files API.
  3. Capture the new HubSpot fileId returned in the response.
  4. Inject that fileId into the HubSpot Engagement payload when creating the associated Email or Note.

Ordering and timestamp preservation (thread reconstruction)

If you simply push messages into HubSpot, they will all appear with today's date, ruining the timeline.

To preserve the historical order of the thread, you must extract the created_at timestamp from each Front message and comment, convert it to a Unix timestamp (in milliseconds), and map it to the hs_timestamp field in the HubSpot Engagement API payload. This forces HubSpot to backdate the activity and render the conversation chronologically.

Rate limits and batching strategies

Both APIs will throttle you if you aren't careful.

  • Front API: Typically limits you to 50–120 requests per minute depending on your plan. You must implement exponential backoff and respect the 429 Too Many Requests headers.
  • HubSpot API: Allows 100–150 requests per 10 seconds.

To optimize throughput, use HubSpot's batch endpoints (e.g., /crm/v3/objects/tickets/batch/create). Group your tickets and associations into batches of 100 to drastically reduce the number of API calls.

Zero-downtime cutover plan and delta sync

Never attempt to migrate years of history over a single weekend. Use a phased approach:

  1. Historical Sync: Migrate all closed conversations and historical data while your team is still working in Front.
  2. Delta Sync: Write your script to query Front for conversations where updated_at is greater than your last sync timestamp.
  3. Cutover: On Friday night, change your DNS/MX records to route new mail to HubSpot. Run the Delta Sync one final time to catch any replies that came in during the week. On Monday, your team logs into HubSpot with zero data loss.

Verification steps and post-migration QA

After the data lands in HubSpot, validate the integrity of the migration:

  • Thread Integrity: Spot-check complex, multi-reply threads to ensure inbound and outbound messages are ordered correctly.
  • Orphaned Records: Query HubSpot for tickets with no associated contacts or engagements.
  • Attachment Links: Click through migrated attachments to ensure the files open correctly and aren't corrupted.
  • Owner Mapping: Verify that legacy tickets are assigned to the correct historical agents, not just a default admin account.

Sample timeline and sizing estimates

A standard Front to HubSpot migration takes roughly 3 to 5 weeks:

  • Week 1: Scope definition, user mapping, and API script configuration.
  • Week 2: Sandbox testing and data validation on a small subset of records.
  • Week 3: Historical data extraction and insertion (duration depends on volume; 100k tickets usually takes a few days due to rate limits).
  • Week 4: UAT (User Acceptance Testing) and final adjustments.
  • Week 5: Final delta sync and production cutover.

More from our Blog

Data Migration Mapping Cheat Sheet + Sample Scripts
Migration Guide/From The Migration Trenches/Checklist

Data Migration Mapping Cheat Sheet + Sample Scripts

Get a production-grade data migration mapping cheat sheet with field mapping tables, YAML configs, Python sample scripts, and the edge cases that silently break migrations.

Raaj Raaj · · 15 min read