Helpdesk migration
Field-level mapping, validation, and rollback between Thulium and Intercom. We move data and schema; workflows are rebuilt natively in Intercom.
Thulium
Source
Intercom
Destination
Compatibility
8 of 10
objects map 1:1 between Thulium and Intercom.
Complexity
CModerate
Timeline
2-4 weeks
Overview
Thulium and Intercom take different approaches to customer support data. Thulium uses a CRM-first model where Cases store conversation threads alongside contact and company data in a single unified structure. Intercom uses a conversation-first model where People and Organizations exist independently and Conversations reference them. We extract Case records, Contacts, and Companies from Thulium, apply field-level type mapping for custom fields, and restructure Thulium's embedded conversation sub-objects into Intercom Conversation Parts. The key dependency we enforce: every Intercom Conversation must reference an existing People record, so we load contacts and organizations before conversations in every migration phase. We do not migrate Thulium's internal notes-based routing logic, workflow rules, or call-center configurations as these have no direct Intercom equivalent and must be redesigned by your team post-migration.
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.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Thulium object lands in Intercom, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Thulium
Cases
Intercom
Conversations
1:1Thulium Cases are the primary ticket object, storing conversation threads, status, priority, assignee, and created-at timestamps. We map Case records 1:1 to Intercom Conversations, with Thulium's Case ID preserved in a custom conversation attribute for audit traceability. Thulium Case status values (Open, Pending, Resolved, Closed) map to Intercom Conversation state (open, closed). Priority from Thulium maps to an Intercom SLA priority attribute. We flag any Case without an assigned Contact during scoping because Intercom requires a contact reference on every conversation.
Thulium
Contacts
Intercom
People
1:1Thulium CRM Contacts hold name, email, phone, and custom field data. We export all Contact records and map them to Intercom People. Thulium's custom field values map to Intercom custom attributes on the People record. We apply field-level type mapping during the transform phase: Thulium list-type fields map to Intercom dropdown or string attributes, date fields to Intercom date attributes, and yes/no booleans to Intercom boolean attributes. Email address serves as the dedupe key. Intercom requires contacts to exist before conversations referencing them are created, so contacts load before cases in every migration phase.
Thulium
Companies
Intercom
Organizations
1:1Thulium Companies store organizational data including name, address, domain, and linked Contact records. We export Company records and map them to Intercom Organizations. The Company's domain field becomes the Organization's domain field and is used as a deduplication key during import. Intercom resolves Organizations to a contact's company attribute at import time; we map the Contact-to-Company linkage to the contact's organization relationship. Address data maps to Intercom Organization address fields. If Thulium Companies contain custom fields, these map to Intercom custom attributes on the Organization object.
Thulium
Conversations (embedded sub-objects)
Intercom
Conversation Parts
1:1Thulium stores individual email, chat, and voice interactions as sub-objects within a Case, ordered chronologically. We flatten each interaction into a linear conversation timeline within the Case, with each message or note mapped to an Intercom Conversation Part. The original message timestamp becomes the conversation_part.created_at value. Part type (message, note, assignment, status change) maps to Intercom's part_type enum. Internal notes from Thulium (visibility set to internal) map to Intercom Conversation Parts with part_type of 'note'. This flattening step is required because Intercom represents each interaction as a discrete Part rather than a nested sub-object.
Thulium
Custom Fields
Intercom
Custom Attributes
lossyThulium supports CRM custom fields with nine distinct types including text, large text, email, numeric, link, list, yes/no, and date. We apply field-level type mapping when the destination uses different type names or constraints. For list-type fields, we also map each individual list value to an Intercom text custom attribute with a dropdown option. Date fields map to Intercom date custom attributes. Yes/no boolean fields map to Intercom boolean custom attributes. We create Intercom custom attributes via the API before contact and conversation import begins so that attribute values can be mapped during the load phase. This pre-creation step is a scoping requirement that adds time to the migration timeline.
Thulium
Agents
Intercom
Teammates
1:1Thulium Agents are the user accounts assigned to Cases and Companies. We map Agent records to Intercom Teammate records, resolving by email address as the unique identifier. Agent role assignments in Thulium map to Intercom's admin and agent role model where supported. If Thulium agents have been deactivated, we import them as inactive Intercom teammates to preserve historical assignment references. Any Agent without a matching email in the destination is held in a reconciliation queue for the customer's admin to provision before record import resumes.
Thulium
Attachments
Intercom
Conversation Attachments
1:1Files attached to Cases or Contacts in Thulium are exported and re-uploaded to Intercom as conversation attachments. We preserve original filenames, file types, and the attachment-to-record linkage. Attachments are uploaded to Intercom's file API and linked to the relevant Conversation Part via the conversation_attachment resource. Attachment URL references in Thulium are resolved to file binary data during export and re-hosted or re-linked as appropriate for the destination.
Thulium
Tags
Intercom
Tags
1:1Thulium Tags applied to Cases for categorization map to Intercom Conversation Tags. We create a value-mapping table during scoping for any naming differences between Thulium tag names and Intercom tag names. Tags migrate as part of the conversation import, applied via the conversation.tags field after the conversation record is created in Intercom. If Thulium tags are used for contact-level segmentation rather than case-level categorization, we map them to Intercom contact tags instead.
Thulium
Case Status and Priority
Intercom
Conversation State and Priority
lossyThulium Case status values (Open, Pending, Resolved, Closed) and priority values (Low, Normal, High, Urgent) are mapped to Intercom Conversation state and SLA priority attribute. We design a status-mapping table during scoping. Thulium's Open and Pending map to Intercom open state; Resolved and Closed map to Intercom closed state. Priority mapping preserves the original Thulium priority value in an Intercom custom attribute for reporting continuity.
Thulium
Case Assignee
Intercom
Conversation Assignee (Teammate)
1:1Thulium assigns Agents to Cases via a reference ID rather than a flattened assignee field. During migration we resolve each Agent reference by email against the Teammate mapping table and assign the Intercom conversation to the corresponding Teammate. If Thulium Cases are assigned to a team rather than an individual Agent, we map to an Intercom Team Inbox assignment. We flag Cases with no assignee during scoping and document the resolution rule (unassigned goes to a default team or remains unassigned) before migration begins.
| Thulium | Intercom | Compatibility | |
|---|---|---|---|
| Cases | Conversations1:1 | Mapping required | |
| Contacts | People1:1 | Fully supported | |
| Companies | Organizations1:1 | Fully supported | |
| Conversations (embedded sub-objects) | Conversation Parts1:1 | Fully supported | |
| Custom Fields | Custom Attributeslossy | Mapping required | |
| Agents | Teammates1:1 | Fully supported | |
| Attachments | Conversation Attachments1:1 | Fully supported | |
| Tags | Tags1:1 | Mapping required | |
| Case Status and Priority | Conversation State and Prioritylossy | Fully supported | |
| Case Assignee | Conversation Assignee (Teammate)1:1 | 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.
Thulium gotchas
Custom field type mismatches require field-level mapping
Conversation history embedded in Cases requires flattening
Agent-to-Case linkage must be preserved explicitly
Intercom gotchas
S3 JSON export omits conversation transcripts
Workspace isolation prevents workflow migration
Fin AI resolution fees compound with automation success
Two-year conversation history limit on historical export
Private app rate limits share workspace quota
Pair-specific challenges
Migration approach
Discovery and scoping
We audit the Thulium source environment across Cases, Contacts, Companies, Custom Fields, Agents, Tags, and attachment volume. We document the custom field schema including all nine Thulium field types and their values. We identify any Cases without assigned Contacts (Intercom requires a contact reference) and Cases with no assignee (resolution rule documented during scoping). We also assess the conversation channel mix within Cases: if email, chat, and voice threads are all embedded in the same Case, we confirm the flattening strategy before export. The discovery output is a written migration scope, custom field mapping table, and conversation flattening specification.
Intercom destination configuration
We create the Intercom custom attributes on People and Organizations before any data loads, using the Thulium field mapping table to match types. We configure the status and priority mapping table in Intercom's SLA settings. We create or verify the Teammate roster against Thulium's agent list, resolving by email. If Intercom campaigns are active, we provide the customer with step-by-step instructions to disable them before the migration run begins. This configuration phase runs in parallel with the final source data extraction.
Sandbox migration and reconciliation
We run a full migration into an Intercom sandbox or a non-live workspace using a representative data sample. The customer's team reconciles record counts (Contacts in, Organizations in, Cases in, Conversation Parts in), spot-checks conversation thread fidelity against the Thulium source, and validates assignee mapping. Tag mapping and custom attribute values are verified on at least 20 sample records. Any mapping corrections happen in this phase before production migration begins.
Production migration: contacts and organizations first
We load Thulium Contacts and Companies into Intercom as People and Organizations in the first production phase. Custom attribute values are set during this phase. Email serves as the dedupe key; duplicate contacts are flagged for the customer's admin to resolve. Organizations are linked to contacts at import time using Thulium's Contact-to-Company relationship.
Production migration: conversations and attachments
We load Thulium Cases into Intercom as Conversations in the second production phase, with the flattened conversation parts as Conversation Parts. Each Conversation Part references the People record created in the previous phase. Attachments are uploaded to Intercom's file API and linked to the relevant Conversation Part. Tags are applied via the conversation.tags field after each conversation is created. Agent assignment resolves via email lookup against the Teammate table.
Cutover, delta migration, and automation handoff
We freeze new submissions to Thulium during cutover, run a final delta migration of any Cases modified or created during the migration window, then switch email forwarding and messenger snippet to Intercom. We deliver the Thulium automation and routing rule inventory document to the customer's admin team. We support a one-week hypercare window where we resolve reconciliation issues surfaced by the support team. We do not rebuild Thulium routing rules as Intercom Workflows inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Thulium
Source
Strengths
Weaknesses
Intercom
Destination
Strengths
Weaknesses
Complexity grading
Moderate Helpdesk migration. 4 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 Thulium and Intercom.
Object compatibility
4 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
Thulium: Not publicly documented.
Data volume sensitivity
Thulium 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 Thulium to Intercom migration scoping. Not seeing yours? Book a call.
Walk through your Thulium to Intercom migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Thulium
Other ways to arrive at Intercom
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.