Helpdesk migration
Field-level mapping, validation, and rollback between Service and Intercom. We move data and schema; workflows are rebuilt natively in Intercom.
Service
Source
Intercom
Destination
Compatibility
12 of 12
objects map 1:1 between Service and Intercom.
Complexity
BStandard
Timeline
24–72 hours
Overview
Legacy helpdesk platforms organize support around structured tickets — discrete records with statuses, priorities, requesters, and internal comments stored in separate comment tables. Intercom organizes everything around contacts and conversations, where each conversation is a thread of conversation_parts spanning messages, notes, and actions. The migration is a structural translation: tickets become conversations, comments become conversation_parts, and internal notes require deliberate mapping to Intercom's private parts. We extract data from the source platform via its native export API or CSV, transform the schema to match Intercom's REST API payload, and write records using Intercom's /contacts, /conversations, and /companies endpoints. Custom fields on the source side map to Intercom custom attributes, which must be pre-created in the workspace before bulk write runs. SLA policies, assignment rules, and escalation workflows do not migrate — we export those definitions as JSON so your Intercom admin can rebuild them in Intercom's workflow engine. A 24–48-hour delta window captures any records modified during cutover so Intercom reflects the final source state at go-live.
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 Service 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.
Service
Ticket / Case
Intercom
Conversation
1:1Each source ticket becomes one Intercom conversation. The conversation subject is mapped from the ticket title or first comment body. The conversation state (open, closed, snoozed) is translated from ticket status using value mapping rules. All subsequent comments become conversation_parts in strict chronological order using the original created_at timestamp from each comment record.
Service
Contact / User
Intercom
Contact (User type)
1:1Source contacts with email addresses map directly to Intercom contacts of type 'user'. Email is the required identifier. Contacts without email (e.g., anonymous users in the source) land as Intercom leads. We preserve the source contact ID in Source_System_ID__c on the Intercom contact for delta-run deduplication.
Service
Company / Organization
Intercom
Company
1:1Source companies map 1:1 to Intercom companies using domain as the matching key. If a contact's email domain matches an existing Intercom company, we link them via the company_id field. Multi-company associations on a single contact collapse to the primary company with additional domains preserved as custom attributes.
Service
Internal Note (on ticket)
Intercom
Conversation Part (private note)
1:1Internal notes from the source ticket do not appear as public messages in Intercom. We map them to conversation_parts with part_type set to 'note' and body containing the note content. The original author (agent) is mapped to the Intercom admin_id; the timestamp is preserved as created_at on the part. Internal notes that mention other agents via @mentions are stored as plain text within the note body.
Service
Public Comment (customer reply)
Intercom
Conversation Part (message)
1:1Public comments from both the customer and the agent become Intercom conversation_parts of type 'comment'. The author_type field is set to 'user' for customer messages and 'admin' for agent messages. HTML-formatted comments are stripped to plain text unless Intercom's allowed HTML subset is used.
Service
Custom Field (ticket-level)
Intercom
Custom Attribute (on Conversation or Contact)
1:1Source ticket custom fields require pre-created custom attributes in the Intercom workspace before migration runs. We generate the attribute manifest (name, type, options) during the discovery phase. For pick-list fields, the options array is mapped value-by-value. Date, number, and boolean fields map directly to their Intercom equivalents. Text fields with >255 characters are truncated with a note flag if the source value exceeded Intercom's limit.
Service
SLA Policy / SLA Breach
Intercom
Custom Attribute + Workflow Timeout
1:1Intercom has no native SLA policy object. Source SLA policies and breach timestamps are migrated as custom attributes on conversations (SLA_Policy_Name__c, SLA_Breach_Time__c, SLA_Responded_At__c). SLA-aware escalation can be rebuilt in Intercom using workflow timeouts that trigger reassignment or priority escalation. We export the full SLA definition as a JSON reference file.
Service
Attachment / File
Intercom
Intercom File Upload (re-hosted)
1:1Source attachments are downloaded from the source storage URL and re-uploaded to Intercom's file CDN using the Conversations API attachments endpoint. Original file metadata (name, size, content_type, original URL) is preserved in custom attributes on the conversation so auditors can trace the original source. Inline images in notes are extracted, re-hosted, and the note body is updated with the new Intercom CDN URL.
Service
Agent / Admin
Intercom
Admin (resolved by email match)
1:1Source agents are resolved against Intercom admins by email address. Matched agents have their source ID stored in Original_Agent_ID__c for audit trail. Agents in the source with no corresponding Intercom admin account are flagged before migration; their records are assigned to a fallback admin so no conversation lands unassigned.
Service
Tag / Label
Intercom
Tag
1:1Source ticket tags map directly to Intercom conversation tags. Tags are applied via the /conversations/{id}/tags endpoint after the conversation is created. Tag names are preserved as-is; if a tag exceeds Intercom's 50-character limit, it is truncated and flagged in the migration report.
Service
Workflow / Automation Rule
Intercom
Not migrated — Intercom Workflow
1:1Workflows, automation rules, escalation paths, and SLA triggers do not have equivalents in Intercom's data model and cannot be migrated as structured data. We export the workflow definitions as a JSON object describing triggers, conditions, and actions so your Intercom admin can rebuild them in Intercom's Workflow Builder. Macros and saved replies are exported separately and provided as a rebuild reference.
Service
Satisfaction Rating (CSAT)
Intercom
Conversation Part (rating type)
1:1If the source platform records CSAT ratings on closed tickets, we map them to Intercom conversation_parts with type 'rating'. The score (1–5 or positive/negative) and optional free-text comment are preserved. Intercom's native CSAT widget generates ratings on new conversations post-migration; historical ratings from the source are stored as part history so the full timeline is visible in the conversation view.
| Service | Intercom | Compatibility | |
|---|---|---|---|
| Ticket / Case | Conversation1:1 | Fully supported | |
| Contact / User | Contact (User type)1:1 | Fully supported | |
| Company / Organization | Company1:1 | Fully supported | |
| Internal Note (on ticket) | Conversation Part (private note)1:1 | Fully supported | |
| Public Comment (customer reply) | Conversation Part (message)1:1 | Fully supported | |
| Custom Field (ticket-level) | Custom Attribute (on Conversation or Contact)1:1 | Fully supported | |
| SLA Policy / SLA Breach | Custom Attribute + Workflow Timeout1:1 | Fully supported | |
| Attachment / File | Intercom File Upload (re-hosted)1:1 | Fully supported | |
| Agent / Admin | Admin (resolved by email match)1:1 | Fully supported | |
| Tag / Label | Tag1:1 | Fully supported | |
| Workflow / Automation Rule | Not migrated — Intercom Workflow1:1 | Fully supported | |
| Satisfaction Rating (CSAT) | Conversation Part (rating type)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.
Service gotchas
Performance slowness in UI and load times is a documented issue
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
Authenticate both platforms and run schema discovery
We connect to the source helpdesk via its native API using OAuth or API key credentials. Schema discovery enumerates all ticket fields, custom fields, ticket types, groups, and SLA policies. We simultaneously confirm the Intercom workspace structure — existing contacts, companies, ticket types, and custom attributes — and flag any pre-creation required before data writes begin. The discovery output is a field manifest showing every source field, its Intercom target, and any transformation logic required.
Create Intercom custom attributes and ticket types
Intercom custom attributes and ticket types must exist before bulk writes. We create every custom attribute identified in the discovery phase (text, number, date, boolean, or pick-list) using the Attributes API and create Intercom ticket types matching the source ticket types. Agents and group emails from the source are mapped to Intercom admins and Inbox routing rules. We run this step in a staging pass before any source data is touched so the Intercom workspace is schema-ready for the migration run.
Migrate contacts and companies first
Contacts and companies must land in Intercom before conversations can reference them via contact_id and company_id. We extract source contacts in batches, deduplicate by email, and write to Intercom's /contacts endpoint with name, email, phone, job_title, and any mapped custom attributes. Companies follow using domain as the matching key. If the source has contacts with no email (anonymous users), those land as Intercom leads. This step also resolves source agents to Intercom admin IDs by email match — unmatched agents are flagged for fallback assignment before conversations are processed.
Migrate conversations with chronological conversation-part sequencing
Tickets are converted to Intercom conversations in creation-date order. For each conversation, we write the base conversation record (subject, state, priority, ticket type, custom attributes, original ticket ID), then write conversation_parts in strict chronological sequence — each part carries its original timestamp. Internal notes are written with part_type='note'; public messages with part_type='comment'. Attachments are downloaded, re-uploaded to Intercom's CDN, and linked to the relevant part. SLA policy names and breach timestamps are written as custom attributes. Rate-limit headers are monitored throughout; request pacing adjusts automatically to avoid 429 responses.
Run delta pickup and verify with a field-level audit report
After the bulk migration completes, we set a delta checkpoint timestamp. A 24–48-hour delta pickup window captures any tickets, contacts, or conversations created or modified in the source during the cutover window. We generate a field-level audit report comparing a statistical sample of source and destination records (field-by-field diff) so you can verify SLA data, internal note visibility, assignee resolution, and custom attribute completeness. One-click rollback is available if the audit reveals systematic issues — the report identifies the root cause and affected record ranges before rollback is triggered.
Platform deep dives
Service
Source
Strengths
Weaknesses
Intercom
Destination
Strengths
Weaknesses
Complexity grading
Standard Helpdesk migration. 2 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Service and Intercom.
Object compatibility
2 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
Service: Configurable per-instance rate limits. ServiceNow enforces a default inbound transaction quota and inbound API rate limits that admins can tune by user, IP, or system property. HTTP 429 responses signal throttling..
Data volume sensitivity
Service exposes a bulk API — large-volume migrations stream efficiently.
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 Service to Intercom migration scoping. Not seeing yours? Book a call.
Walk through your Service 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 Service
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.