Helpdesk migration

Migrate from Odoo Help Desk to Intercom

Field-level mapping, validation, and rollback between Odoo Help Desk and Intercom. We move data and schema; workflows are rebuilt natively in Intercom.

Odoo Help Desk logo

Odoo Help Desk

Source

Intercom

Destination

Intercom logo

Compatibility

75%

9 of 12

objects map 1:1 between Odoo Help Desk and Intercom.

Complexity

CModerate

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Odoo Help Desk to Intercom is a shift from an ERP-embedded ticketing module to a purpose-built customer messaging platform. Odoo Help Desk stores tickets, team assignments, SLA policies, and ratings inside the res.partner model, which means any migration must extract Customers as a separate cross-module pass before tickets can be imported. We use Odoo's XML-RPC External API (confirmed available on the customer's Custom plan tier) and chunk large ticket reads into batches of 500 to avoid the database timeout errors documented in Odoo's own export limitations. Intercom's conversation model replaces Odoo's stage-based pipeline with a state machine (open, closed, snoozed), so we map Odoo stage names to Intercom conversation states during transformation. SLA policies and customer satisfaction ratings have no native Intercom equivalent; we preserve them as custom conversation attributes and contact notes respectively. We do not migrate Odoo workflows, automated actions, or helpdesk alias configurations—these require rebuild in Intercom's Operator rules or inbox settings after cutover.

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

Odoo Help Desk logo

Odoo Help Desk

What's pushing teams away

  • Support responsiveness is widely criticized—customers report slow or unhelpful responses from Odoo's official support channels, especially on Standard plans.
  • Performance degrades under high ticket volumes; users report laggy database behavior and slow page loads in the helpdesk module on larger datasets.
  • Limited integrations with non-Odoo tools push teams toward dedicated helpdesk platforms that connect more easily to Slack, Jira, or standalone CRMs.
  • The helpdesk module is gated to Enterprise, so growing teams that started on Community face a significant price jump to unlock ticketing functionality.
  • Customization options are constrained compared to standalone helpdesk tools, with larger or more complex support teams finding the workflow tooling insufficient.

Choosing

Intercom logo

Intercom

What's pulling them in

  • Instant chat and message threading on websites and apps gives support teams a single inbox without context-switching, according to reviewers on Capterra and G2 who highlight fast response times as a primary benefit.
  • Fin AI handles repetitive inbound queries automatically, reducing agent workload measurably — G2 reviewers report fewer escalations and faster first-response times once Fin is configured.
  • Automation workflows (Outbound, Operator, and custom bots) allow teams to qualify leads and route tickets without manual intervention, appealing to growth-stage SaaS companies managing high ticket volumes.
  • Help center articles and self-service deflection are natively integrated, so knowledge base content and chat conversations live in the same workspace, simplifying reporting.
  • Multi-channel support (live chat, email, SMS, WhatsApp, Phone) consolidates customer touchpoints into one inbox, reducing the operational overhead of managing separate tools.

Object mapping

How Odoo Help Desk objects map to Intercom

Each row shows how a Odoo Help Desk 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.

Odoo Help Desk

Ticket (helpdesk.ticket)

maps to

Intercom

Conversation

1:1
Fully supported

Odoo helpdesk.ticket records map to Intercom conversations. The ticket subject becomes the conversation title, description becomes the initial conversation body, and ticket priority (low/normal/high/urgent) maps to a custom priority attribute on the Intercom conversation. Odoo stage_id resolves to Intercom conversation state (open, closed) using a stage-is_close flag: stages with is_close=True map to Intercom closed; is_close=False maps to open. Ticket team_id resolves to Intercom team_id via the Team mapping pass. Historical SLA status (met/violated) migrates as a custom conversation attribute sla_status__c.

Odoo Help Desk

Conversation / Mail Message (mail.message)

maps to

Intercom

Conversation Part

1:1
Fully supported

Odoo ticket conversations live in mail.message linked to helpdesk.ticket by res_id. Each mail.message maps to an Intercom conversation part. The message body (html field) becomes the part body; message author (res.partner) resolves to the Intercom contact by email match; message date becomes the part created_at timestamp. Large message threads on high-volume tickets are the primary cause of Odoo database timeouts during export, so we batch-fetch mail.message by ticket_id in groups of 50 threads at a time and resume on timeout from the last processed ticket_id offset.

Odoo Help Desk

Customer (res.partner)

maps to

Intercom

Contact

1:1
Fully supported

Odoo res.partner records referenced by helpdesk.ticket (partner_id) map to Intercom Contacts. Email is the dedupe key. We extract partner name, email, phone, and street/city/country address fields and map them to Intercom Contact standard attributes. Since res.partner is shared across Odoo's CRM, Sales, and Accounting modules, we scope the migration export to only partners that have at least one helpdesk.ticket reference, avoiding a full company-wide partner export that would exceed migration scope.

Odoo Help Desk

Helpdesk Team (helpdesk.team)

maps to

Intercom

Team

1:1
Fully supported

Odoo helpdesk.team records map to Intercom Teams. The team name and alias email address migrate. Odoo team-level pipeline settings (stage definitions and SLA policies scoped per team) are preserved as configuration metadata in a migration-notes document for the customer's Intercom admin to re-implement as Operator rules and inbox settings. Intercom Teams are available from the Starter plan onward.

Odoo Help Desk

Team Member (res.users via helpdesk.team member_ids)

maps to

Intercom

Admin

1:1
Fully supported

Odoo users linked to helpdesk.team via the member_ids many2many field are resolved by email and mapped to Intercom Admins. The destination Admin must already exist in Intercom (provisioned before migration). We match by email and flag any Odoo user without a corresponding Intercom Admin as a reconciliation item. Active and inactive Odoo user status is preserved in a custom attribute original_odoo_active__c for audit purposes.

Odoo Help Desk

SLA Policy (helpdesk.sla)

maps to

Intercom

Custom Conversation Attribute (sla_status__c)

lossy
Fully supported

Odoo SLA policies (helpdesk.sla) define response and resolution deadlines by ticket priority or team. Intercom has no native SLA policy object, so we export SLA policy names, deadline intervals, and applicable priority/team rules as a configuration inventory document. At migration time, we flag tickets that were in breach of their SLA as a custom conversation attribute sla_violated__c with a boolean value, and set sla_policy_name__c as a string attribute for reporting in Intercom's analytics.

Odoo Help Desk

Tag (ir.model.data for helpdesk.ticket)

maps to

Intercom

Conversation Tag

1:1
Fully supported

Odoo ticket tags are string labels stored in a shared tag pool (helpdesk.tag) linked to helpdesk.ticket via many2many. Tag names migrate directly as Intercom conversation tags. We export all distinct tag names across the ticket set and map them as-is, preserving the label without transformation. Tags used to categorize ticket type or channel are not remapped to Intercom's topic or section taxonomy; the customer chooses whether to align taxonomy during scoping.

Odoo Help Desk

Rating (helpdesk.rating)

maps to

Intercom

Contact Note / Custom Attribute

1:1
Fully supported

Odoo Help Desk ratings are tied to res.partner (customer) and res.users (rater) and linked to helpdesk.ticket. Intercom has no native CSAT rating model. We migrate rating values (numerical 0-5 or text rating) as a custom contact attribute rating_value__c on the Intercom Contact record, and the rating text (if present) as a contact note. The original Odoo ticket reference is preserved in a custom attribute original_ticket_id__c for cross-referencing.

Odoo Help Desk

Pipeline Stage (helpdesk.stage)

maps to

Intercom

Conversation State

lossy
Fully supported

Odoo helpdesk.stage records are scoped per team_id and include name, sequence, is_close, and fold status. Stages with is_close=True map to Intercom closed conversations; is_close=False maps to open or snoozed. Stage sequence order is preserved as a custom attribute stage_sequence__c for reporting purposes. The customer chooses which Intercom inbox or team receives tickets from each Odoo stage during scoping.

Odoo Help Desk

Attachment (ir.attachment)

maps to

Intercom

Conversation Attachment

1:1
Fully supported

Odoo ticket attachments stored in ir.attachment (res_model=helpdesk.ticket) are exported via /web/binary/base64 per ticket and uploaded to Intercom as conversation attachments. We flag unsupported file types (.exe, .sys, .scr, .shb, .wsf, and others on Intercom's security blocklist) during pre-migration discovery and advise the customer to configure Intercom's Attachment Settings (Settings > Security > Attachment settings > Allow more file types) before migration begins, or to exclude those attachments from scope. Binary blobs over 20 MB per file exceed Intercom's attachment limit and require separate handling.

Odoo Help Desk

Custom Field (ir.model.fields, x_studio_ prefix)

maps to

Intercom

Custom Conversation Attribute

lossy
Fully supported

Odoo Studio custom fields on helpdesk.ticket carry the x_studio_ technical prefix. Fields created via ir.model.fields directly use the x_ prefix. We surface all x_* fields during schema discovery with their human-readable labels and present them to the customer to confirm migration scope. Custom fields migrate as Intercom custom conversation attributes with appropriate types: string fields become text attributes, numeric fields become number attributes, and boolean fields become boolean attributes. Date fields become date attributes. The customer confirms the Intercom attribute names before import.

Odoo Help Desk

User (res.users)

maps to

Intercom

Admin

1:1
Fully supported

Odoo res.users records referenced as ticket assignees (user_id on helpdesk.ticket) are resolved by email against Intercom Admins. Inactive Odoo users are included in the export so that historical assignment records remain intact in Intercom's conversation history; active status is preserved in a custom attribute. Owner resolution must complete before ticket import because Intercom conversation assignment requires a valid Admin reference.

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.

Odoo Help Desk logo

Odoo Help Desk gotchas

High

Help Desk module is Enterprise-only

High

External API requires Custom plan

Medium

Large exports hit database timeout

Medium

Studio custom fields use x_studio_ prefix

Medium

Odoo.sh database migration differs from standard API export

Intercom logo

Intercom gotchas

High

S3 JSON export omits conversation transcripts

High

Workspace isolation prevents workflow migration

Medium

Fin AI resolution fees compound with automation success

Medium

Two-year conversation history limit on historical export

Low

Private app rate limits share workspace quota

Pair-specific challenges

  • Odoo Custom plan required for XML-RPC API export

    Odoo's XML-RPC External API, which we use to read helpdesk.ticket, mail.message, res.partner, and ir.attachment records, is gated to the Custom plan tier ($49/user/month). Standard plan customers cannot programmatically access their data. We verify the customer's Odoo plan tier during scoping. If they are on Standard and need automated export, we flag this as a billing-gate blocker and advise on the upgrade path before migration proceeds. Community users with a third-party helpdesk workaround module require a separate discovery pass to identify the actual data model before any export begins.

  • Large ticket exports hit Odoo database timeout

    Odoo's documentation explicitly warns that large exports can trigger worker timeout errors that terminate the request. Ticket sets over a few thousand records are the primary risk in Odoo Help Desk migrations. We handle this by chunking ticket reads into batches of 500 records, paginating via offset, and resuming from the last successful offset. Message threads (mail.message) and attachment blobs (ir.attachment) are fetched separately per ticket to isolate the blast radius of a timeout to a single thread or file rather than the entire export run.

  • Intercom blocks certain attachment file types by default

    Intercom does not accept certain file types (.exe, .sys, .scr, .shb, .wsf, and others) as attachments because they may contain malicious content. These must be explicitly enabled in Intercom before migration begins: Settings > Security > Attachment settings > Control which file types can be received > Allow more file types. We identify any tickets with blocked file types during pre-migration discovery and either advise the customer to enable them in Intercom or exclude those attachments from migration scope. Attachments exceeding 20 MB per file also exceed Intercom's limit and require separate handling.

  • Studio custom fields use x_studio_ prefix and require explicit discovery

    Odoo Studio prepends x_studio_ to custom field technical names, while fields created via ir.model.fields directly use the x_ prefix. Both live in the same table, and both must be surfaced during schema discovery. We do not assume all x_* fields are Studio fields or that all of them belong in the migration scope. We present the full list of x_* fields with their human-readable labels to the customer for confirmation before mapping to Intercom custom conversation attributes.

  • Odoo SLA policies and CSAT ratings have no native Intercom equivalent

    Odoo Help Desk SLA policies (response and resolution deadlines by priority or team) and per-ticket CSAT ratings have no structural equivalent in Intercom's conversation model. We preserve SLA policy names and deadline intervals as custom conversation attributes and flag breached tickets with a boolean flag. CSAT ratings migrate as custom contact attributes on the customer Contact record with the original ticket reference preserved for audit. The customer must rebuild SLA monitoring in Intercom through Operator rules or a third-party SLA tool post-migration.

Migration approach

Six steps for a successful Odoo Help Desk to Intercom data migration

  1. Plan tier and API access verification

    We verify the customer's Odoo plan tier (must be Custom to access XML-RPC API) and confirm they have active API credentials. If the customer is on Standard, we pause and advise on the upgrade path before proceeding. We also confirm the Intercom plan tier to verify Team and Admin provisioning availability. The discovery output is a written scope document listing all Odoo modules in use, the estimated ticket and contact record counts, and the confirmed plan tiers on both sides.

  2. Schema discovery and Intercom attribute design

    We run a schema discovery pass over the Odoo database using XML-RPC to enumerate all helpdesk.ticket fields, helpdesk.team records, x_* custom fields, SLA policy definitions, tag names, and rating field configurations. We present the x_* field list with human-readable labels to the customer for confirmation. We design the Intercom custom conversation attributes and contact attributes to receive SLA and rating data, and configure the Intercom Teams and Admin roster to match the Odoo helpdesk.team and res.users structure. All Intercom schema changes are validated in Intercom's sandbox before production migration.

  3. Batched XML-RPC export with timeout recovery

    We export Odoo records in dependency order: res.partner (Customers), res.users (Users/Admins), helpdesk.team (Teams), helpdesk.tag (Tags), helpdesk.sla (SLA inventory), helpdesk.rating (Ratings), helpdesk.ticket (Tickets), mail.message (Conversation parts), and ir.attachment (Attachments). Each object type is read in chunks of 500 records with offset pagination. On any timeout, we log the last successful offset and resume from that point. Mail.message and ir.attachment are fetched per-ticket after ticket records are confirmed to isolate timeout blast radius. Intercom's attachment file-type restrictions are verified before each attachment batch upload.

  4. Contact and Admin reconciliation

    We resolve Odoo res.partner records to Intercom Contacts by email as the dedupe key. Any Odoo partner without an email address is flagged for manual review. We match Odoo res.users to existing Intercom Admins by email. Any Odoo user without a corresponding Intercom Admin goes to a reconciliation queue for the customer to provision before record import resumes. This step is a hard dependency: Intercom conversation assignment requires a valid Admin reference, and Intercom Contacts require an email address.

  5. Production migration in record-dependency order

    We run the production migration in this order: Contacts (res.partner mapped to Intercom Contact), Admins (res.users mapped to Intercom Admin), Teams (helpdesk.team), Tags, SLA inventory document (delivered as configuration inventory, not imported), Custom attributes (created in Intercom before tickets), Tickets mapped to Conversations (with stage-to-state mapping applied), Conversation parts (mail.message mapped to conversation parts in timestamp order), and Attachments (ir.attachment uploaded per conversation). Each phase emits a row-count reconciliation report before the next phase begins. Batched XML-RPC reads with offset pagination handle timeouts without restarting from zero.

  6. Cutover, validation, and SLA/rating handoff

    We freeze Odoo Help Desk writes during the cutover window, run a final delta pass for any tickets modified during migration, then confirm Intercom as the system of record. We deliver the SLA policy inventory document (with Intercom Operator rebuild recommendations) and the CSAT rating mapping notes to the customer's Intercom admin. We support a one-week hypercare window for reconciliation issues. We do not rebuild Odoo Automated Actions, Studio workflows, or helpdesk alias routing as Intercom Operator rules; those are documented and delivered to the customer's admin for rebuild as a separate task.

Platform deep dives

Context on both ends of the pair

Odoo Help Desk logo

Odoo Help Desk

Source

Strengths

  • All-in-one ERP integration connects helpdesk tickets directly to CRM contacts, sales orders, and project tasks without middleware.
  • Enterprise plan includes unlimited functional support, version upgrades, and Odoo-hosted maintenance.
  • Odoo Studio enables custom field creation and form layout adjustments without writing Python code.
  • Multi-company support lets enterprises manage separate helpdesk teams per subsidiary from a single database.
  • Open-source Community edition provides a free development and staging environment for Odoo implementations.

Weaknesses

  • Helpdesk module is gated behind Enterprise; Community users cannot access it without upgrading.
  • Performance on large ticket databases is a recurring complaint across G2 and Capterra reviews.
  • External API access requires the Custom plan tier, limiting automation options for Standard plan customers.
  • Limited third-party integrations compared to standalone helpdesk tools like Zendesk or Freshdesk.
  • Support quality is inconsistent, with multiple reviewers citing slow or unhelpful official support responses.
Intercom logo

Intercom

Destination

Strengths

  • Integrated AI agent (Fin) for automated resolution with per-resolution billing that rewards high automation rates.
  • Multi-channel inbox consolidating live chat, email, SMS, WhatsApp, and Phone into a single threaded view.
  • Native help center with articles, collections, and self-service deflection capabilities.
  • Workflow automation for routing, qualification, and proactive outbound messaging across channels.
  • Strong API ecosystem with 10,000 req/min rate limits for private apps enabling high-throughput migration pipelines.

Weaknesses

  • Pricing model compounds with seat count, AI resolution fees, channel costs, and multiple add-ons, making total cost hard to predict.
  • Workspace-level isolation prevents moving workflows or content between environments, requiring manual rebuilds.
  • S3 JSON export deliberately excludes conversation transcripts, necessitating REST API calls for full message history.
  • Outages are reported as frequent enough to be a concern for always-on support operations.
  • Setup complexity means teams often require internal guidance or professional services to configure bots and automation correctly.

Complexity grading

How hard is this migration?

Moderate Helpdesk migration. 4 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 Odoo Help Desk and Intercom.

  • Object compatibility

    C

    4 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

    Odoo Help Desk: Not publicly documented.

  • Data volume sensitivity

    B

    Odoo Help Desk doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Odoo Help Desk to Intercom 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 Odoo Help Desk to Intercom data migrations

Answers to the questions buyers ask most during Odoo Help Desk to Intercom migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Odoo Help Desk to Intercom migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 10,000 tickets and 2,000 contacts with no Studio custom fields. Migrations with large conversation histories (over 200,000 mail.message records), x_studio_ custom fields, multi-team structures, or SLA policy preservation requirements move to seven to twelve weeks because of the batched XML-RPC export, custom attribute design work, and Intercom's per-conversation API rate limits during attachment upload.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Odoo Help Desk.
Land in Intercom, 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