Helpdesk migration
Field-level mapping, validation, and rollback between Octadesk and Intercom. We move data and schema; workflows are rebuilt natively in Intercom.
Octadesk
Source
Intercom
Destination
Compatibility
9 of 12
objects map 1:1 between Octadesk and Intercom.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Octadesk to Intercom is a cross-regional shift from a Brazilian-market helpdesk built for Portuguese-language omnichannel support to a globally-deployed conversational platform with per-seat pricing and an AI-first agent layer. The core migration challenge is structural: Octadesk separates Tickets and Chats as distinct objects with a 100-item pagination ceiling on the /chat endpoint, while Intercom collapses these into a single Conversation object with Parts as message events. We paginate through Octadesk's Chats in sequential batches, download conversation attachments, and replay them as Intercom Part records linked to the migrated conversation. Octadesk's automation rules, chatbot flows, and AI agent configurations are not exportable via API, so we deliver a written automation audit report listing every rule, trigger, and flow for the customer's admin to rebuild inside Intercom's workflow builder. Custom fields on Tickets use an array-based customField schema that we parse, type-match, and flatten into Intercom's custom attributes before import. The octa-agent-email header used for Octadesk API authentication requires per-agent token management during export; we assign agent context per request to avoid 401 errors on high-volume export windows.
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 Octadesk 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.
Octadesk
Ticket
Intercom
Conversation
1:1Octadesk Tickets map to Intercom Conversations. We preserve Ticket status (open, pending, resolved, closed), priority, channel metadata, assigned agent email, created_at, and updated_at. Octadesk Ticket IDs are stored in a custom attribute octadesk_ticket_id__c for audit traceability. Custom fields stored as Octadesk customField arrays are flattened and mapped to Intercom custom attributes, which must be pre-defined in the Intercom workspace before import. Ongoing conversations (status open at migration time) cannot be migrated per Intercom policy and must be manually recreated.
Octadesk
Chat
Intercom
Conversation
1:1Octadesk Chats map to Intercom Conversations sourced from the WhatsApp, Instagram, Facebook, or webchat channel. The GET /chat endpoint returns MAX=100 items per page with no cursor workaround documented, so we paginate through all pages sequentially, storing the last seen cursor for resume on transient failures. Accounts with high chat volumes (above 50,000 records) require extended export windows and may move the migration into the eight-to-twelve-week tier. Chat events stored under /chat/{id}/events migrate as Intercom Part records within the corresponding Conversation.
Octadesk
Chat Event
Intercom
Part
1:manyOctadesk Chat events (messages sent and received, internal notes, status changes) map to Intercom Part records inside the parent Conversation. Each Part gets a type (comment, note, close, open) matched from the Octadesk event kind. Part author resolves by matching the Octadesk agent email to an Intercom User. Message timestamps preserve the original Octadesk event created_at for conversation timeline fidelity.
Octadesk
Contact
Intercom
Contact
1:1Octadesk Contacts map directly to Intercom Contacts. We preserve name, email, phone, lifecycle stage, custom properties, and tags. If phone number validation is enabled in the Intercom workspace (Settings > Your Workspace > People Data > Phone), we disable it before import to prevent rejection of Brazilian-format phone numbers that Octadesk stores without a country code prefix. Contacts without an email address are created as partial contacts in Intercom with a note flagging the missing email for manual follow-up.
Octadesk
Company
Intercom
Company
1:1Octadesk Company records map to Intercom Companies. Company name, domain, industry, size, and custom properties migrate as Company attributes. If the Octadesk Company has associated Contacts, we preserve the relationship by creating the Company in Intercom first, then linking Contacts during Contact import. Company-created_at timestamps migrate for audit purposes.
Octadesk
Agent
Intercom
User
1:1Octadesk Agents map to Intercom Users (admins and agents). We resolve each Octadesk agent by email and create a matching Intercom User with the same display name, email, and role (agent or admin). Octadesk's octa-agent-email header is used for API authentication per-agent rather than per-org, so we assign agent context to each export API call individually to avoid 401 responses when agent tokens differ. Agent team membership migrates to Intercom Inboxes.
Octadesk
Team
Intercom
Inbox
lossyOctadesk Teams map to Intercom Inboxes. Team name, agent membership, and SLA configuration migrate as Inbox settings. Each Inbox can have multiple assigned agents and routing rules. We configure the Inbox before Agent import so that agent assignment on Tickets and Conversations can reference the correct Inbox ID at migration time.
Octadesk
Custom Fields (Ticket)
Intercom
Custom Attributes
lossyOctadesk Ticket custom fields are stored as customField array objects with name, value, and type sub-fields. We parse each array entry, match the field name to its data type (text, numeric, dropdown, date), and create a corresponding Intercom custom attribute of the matching type before import. Date fields stored as strings in Octadesk are flagged for type conversion before import. Dropdown fields become Intercom select or multiselect attributes with the options preserved from Octadesk.
Octadesk
Attachment
Intercom
Attachment
1:1Attachments on Octadesk Tickets and Chats are referenced by URL and downloaded during migration, then uploaded to Intercom and linked to the corresponding Conversation Part. We preserve attachment filenames, MIME types, and original upload timestamps. Attachments that exceed Intercom's size limits are flagged for manual handoff.
Octadesk
Tag
Intercom
Tag
1:1Tags from Octadesk Tickets and Contacts migrate to Intercom Tags. We normalise tag names to Intercom's character and length constraints. Tags that exceed the 80-character limit are truncated with a note. Tag assignment per record is preserved during import.
Octadesk
Automations/Rules
Intercom
Workflow (manual rebuild)
1:1Octadesk automation rules (triggers, macros, routing logic, SLA policies) are internal configuration with no public export API. We do not migrate them programmatically. We produce an automation audit report during scoping listing every active rule, its trigger conditions, actions, and Octadesk-specific ID references so that the customer's admin can reproduce each rule in Intercom's Workflow builder. This is a manual rebuild step outside the data migration scope.
Octadesk
AI Agent / Chatbot Flow
Intercom
Fin AI Agent (manual rebuild)
1:1Octadesk's proprietary AI agent configurations and chatbot flows are built on internal schemas not exposed via public API. We do not migrate them. We export the flow structure as structured JSON documentation (nodes, edges, conditions, responses) where possible, but Intercom's Fin AI agent requires separate configuration using Intercom's Knowledge Hub and Fin setup workflow. The customer's admin or an Intercom implementation partner rebuilds the chatbot and AI agent post-migration.
| Octadesk | Intercom | Compatibility | |
|---|---|---|---|
| Ticket | Conversation1:1 | Fully supported | |
| Chat | Conversation1:1 | Fully supported | |
| Chat Event | Part1:many | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Agent | User1:1 | Fully supported | |
| Team | Inboxlossy | Fully supported | |
| Custom Fields (Ticket) | Custom Attributeslossy | Mapping required | |
| Attachment | Attachment1:1 | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| Automations/Rules | Workflow (manual rebuild)1:1 | Not supported | |
| AI Agent / Chatbot Flow | Fin AI Agent (manual rebuild)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.
Octadesk gotchas
/chat endpoint pagination capped at 100 items
Automations and AI agents have no export API
Per-seat and per-channel pricing complicates migration sizing
Custom fields on Tickets use an array-based schema
API authentication uses non-standard header
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 Octadesk API audit
We authenticate to the Octadesk API using the proprietary octa-agent-email header per-agent, enumerate all Tickets, Chats, Contacts, Companies, Agents, Teams, and Custom Fields via the REST API, and identify the active channel mix (WhatsApp, Instagram, Facebook, email, webchat) and agent count. We paginate through GET /chat to assess conversation volume and calculate the sequential export window. We document every active automation rule and chatbot flow for the automation audit report and flag any open or pending Tickets and Chats that cannot migrate per Intercom policy.
Intercom workspace schema design
We configure the Intercom workspace before import: creating all required custom attributes (matching Octadesk's customField names and types), setting up Inboxes mapped from Octadesk Teams, configuring tag normalisation rules, disabling phone number validation for import, and enabling default assignment settings for unassigned Tickets. If the customer uses Intercom's EU or AU regional hosting, we verify that the MCP server constraint (US-only for Fin AI data connectors) is acceptable or plan the Fin agent configuration accordingly.
Data export in dependency order from Octadesk
We export Octadesk data in record-dependency order: Companies first (to create Intercom Companies), then Contacts (linked to Companies), then Agents (mapped to Intercom Users), then Teams (mapped to Inboxes), then Tickets and Chats with customField arrays flattened per field. Chat export paginates through all pages sequentially, storing conversation events per Chat ID. Attachments are downloaded to local storage with reference to the parent Ticket or Chat. We run a reconciliation pass comparing exported record counts against Octadesk API totals before proceeding to import.
Intercom import with rate-limit management
We import into Intercom using the REST API v2.10 with batch chunking and rate-limit handling. Intercom's default limit is 1,000 requests per minute distributed over 10-second windows (166 operations per 10 seconds). We monitor X-RateLimit headers, throttle request frequency, and retry on HTTP 429 responses with exponential backoff. Contacts import first, then Companies, then Users (Agents), then Inboxes (Teams), then Conversations (Tickets and Chats), then Parts (Chat events), then Tags. Each phase emits a row-count reconciliation report.
Attachment migration
We upload downloaded Ticket and Chat attachments to Intercom via the conversation attachment endpoint, linking each file to the corresponding Conversation and Part record. Files exceeding Intercom's size limits are flagged in the reconciliation report for manual delivery. Attachment filenames and original timestamps are preserved as metadata on each Intercom attachment record.
Cutover, validation, and automation handoff
We freeze Octadesk writes during cutover, run a final delta migration of any records created or modified during the migration window, then enable Intercom as the system of record. We deliver the automation audit report documenting every Octadesk automation rule, chatbot flow, and AI agent configuration with a recommended Intercom equivalent. We support a one-week hypercare window for reconciliation issues. We do not rebuild Octadesk automations as Intercom Workflows or Fin AI agents inside the migration scope; that work is a separate engagement or an internal admin task.
Platform deep dives
Octadesk
Source
Strengths
Weaknesses
Intercom
Destination
Strengths
Weaknesses
Complexity grading
Moderate Helpdesk migration. 3 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 Octadesk and Intercom.
Object compatibility
3 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
Octadesk: Not publicly documented.
Data volume sensitivity
Octadesk 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 Octadesk to Intercom migration scoping. Not seeing yours? Book a call.
Walk through your Octadesk 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 Octadesk
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.