Helpdesk migration

Migrate from Chatwoot to Intercom

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

Chatwoot logo

Chatwoot

Source

Intercom

Destination

Intercom logo

Compatibility

83%

10 of 12

objects map 1:1 between Chatwoot and Intercom.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Chatwoot to Intercom is a platform switch that consolidates a self-managed support stack onto a SaaS-native one. Chatwoot organizes support around Inboxes (live chat, email, WhatsApp, API, Facebook) with Agents, Teams, and Labels; Intercom uses Conversations tied to Users and Leads with a structured Inbox, Workflows, and Help Center. We export the full conversation history including message arrays, attachments, and timestamps, re-associate them with imported Contacts, and map Labels to Intercom Tags. Teams from Chatwoot Business and Enterprise tiers map to Intercom's Inbox team structure. We do not migrate Automation Rules, Canned Responses, or Help Center Articles as code; we deliver written inventories for the customer's admin to rebuild. The Captain AI credit model and 30-day retention cliff on Chatwoot Hacker plans are source-side constraints that determine whether historical conversations exist at export time.

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

Chatwoot logo

Chatwoot

What's pushing teams away

  • The Hacker free plan caps at 2 agents, 1 inbox, and 30-day data retention — teams that grow quickly hit these walls and feel forced to upgrade before they are ready.
  • G2 reviewers report limited connectivity issues and technical glitches including portal disconnections that interrupt active support sessions.
  • Captain AI credits model charges $20 per 1,000 extra credits beyond the free monthly allocation, creating unexpected billing surprises for teams that adopt AI features heavily.
  • Feature gating is aggressive: Teams, Automation Rules, Help Center, SSO, Audit Logs, and SLA Policies all require paid tiers, making the real cost much higher than the headline per-agent price.
  • Database schema inconsistencies on stable tags v4.2–v4.4 have caused production installation failures, making version upgrades risky without careful pre-testing.

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 Chatwoot objects map to Intercom

Each row shows how a Chatwoot 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.

Chatwoot

Conversation

maps to

Intercom

Conversation (Ticket)

1:1
Fully supported

Chatwoot Conversations map to Intercom Conversations (Tickets). Each conversation carries status (open/resolved/pending), priority, assignee, team, inbox, labels, and a full message thread. We preserve the conversation status as Intercom's open/closed/snoozed state, resolve assignee by email against imported Users, and carry priority as a custom conversation attribute. Message arrays are re-imported as conversation parts in chronological order by created_at timestamp. Attachments stored as URLs are re-uploaded to Intercom's file storage and linked to the conversation part.

Chatwoot

Contact

maps to

Intercom

User or Lead

1:1
Fully supported

Chatwoot Contacts with email addresses map to Intercom Users. Contacts without email map to Leads. Standard attributes (name, email, phone, custom_attributes) migrate directly. We create the Intercom contact record first so that conversation imports can reference the User/Lead by external_id. Custom attributes require pre-creation of corresponding custom data attributes in the Intercom workspace before import.

Chatwoot

Message

maps to

Intercom

Conversation Part

1:1
Fully supported

Chatwoot Messages belong to Conversations and carry content, sender_type (agent/customer), attachments, and private notes. We preserve message order by created_at timestamp. Agent messages become conversation parts from the assigned User; customer messages become parts from the contact. Private notes in Chatwoot map to internal Intercom notes. Attachments are re-uploaded and linked to the conversation part.

Chatwoot

Inbox

maps to

Intercom

Inbox

lossy
Fully supported

Chatwoot Inboxes (Website Live Chat, Email, WhatsApp, Facebook, Twitter, API) map to Intercom Inboxes. Channel configuration (webhook URLs, page tokens, WhatsApp template IDs, API keys) does not transfer between platforms and must be re-configured manually in Intercom for each channel. We document the source inbox types and the channel configuration requirements so the customer's admin sets up the equivalent inboxes before migration.

Chatwoot

Agent

maps to

Intercom

User

1:1
Fully supported

Chatwoot Agents (user accounts with email, name, role, and availability status) map to Intercom Users. Role assignment migrates as Intercom team membership. Availability status is set at migration time; agents start as offline and can be set to online after migration. Passwords cannot transfer; users receive email invitations to set their own passwords. Agents without email addresses are flagged during scoping for manual resolution.

Chatwoot

Team

maps to

Intercom

Team or Inbox Assignment Rule

1:1
Fully supported

Chatwoot Teams (Business and Enterprise tiers only) group agents and route conversations. Teams migrate to Intercom Teams with the same agent membership. If the source is on Hacker or Startups tier, no Teams exist to migrate. We create matching Team structures and configure Inbox assignment rules in Intercom during migration. Teams without a Chatwoot equivalent are created as Intercom Teams for organizational clarity.

Chatwoot

Label

maps to

Intercom

Tag

1:1
Fully supported

Chatwoot Labels are string tags applied to Conversations. They migrate as Intercom Tags on the mapped conversation. Label color and display metadata are Chatwoot-specific and do not transfer; Intercom Tags are text-based. We export the full label taxonomy and re-apply each label to migrated conversations by conversation ID. Tag counts are reconciled against the source label counts post-import.

Chatwoot

Custom Attribute

maps to

Intercom

Custom Data Attribute

lossy
Fully supported

Chatwoot Custom Attributes (text, number, dropdown, checkbox) attach to Conversations or Contacts. Intercom requires custom data attributes to be pre-created in the workspace before import. We create matching attributes in Intercom during the schema preparation phase, preserving the attribute type (string, number, dropdown options, boolean). Values are migrated as raw data. Downstream automation references to these attributes require rebuilding in Intercom Workflows post-migration.

Chatwoot

Canned Response

maps to

Intercom

Saved Reply

1:1
Fully supported

Chatwoot Canned Responses are pre-written reply templates with shortcut codes. They map directly to Intercom Saved Replies. Shortcut triggers migrate as the Saved Reply shortcut. Content migrates as-is. We export the full canned response set including shortcut triggers and apply them to the Intercom workspace. Saved Reply grouping by category does not exist in Chatwoot, so all migrate as ungrouped.

Chatwoot

Automation Rule

maps to

Intercom

Workflow (documentation only)

1:1
Fully supported

Chatwoot Automation Rules (Business tier and above) trigger on Events (conversation created/updated) and execute Actions (assign, label, send email). Rule logic is platform-specific and cannot transfer as code. We export every Automation Rule with its trigger, conditions, and actions into a written inventory document. The customer's admin rebuilds equivalent Workflows in Intercom. If the source is on Hacker or Startups tier, no Automation Rules exist to document.

Chatwoot

Help Center Article

maps to

Intercom

Article or Collection

1:1
Fully supported

Chatwoot Help Center Articles (Startups tier and above) have title, body (markdown), category, and locale. They migrate to Intercom Articles and Collections. We export the full article tree and re-import the content into Intercom's Help Center. Article URLs, slug structure, and category hierarchy require manual reconstruction in Intercom's content management UI. If the source is on Hacker tier, no Help Center exists to migrate.

Chatwoot

SLA Policy

maps to

Intercom

SLA (documentation only)

1:1
Fully supported

Chatwoot SLA Policies (Enterprise Edition only) define first-response and resolution time targets per priority level. Intercom does not have a native SLA Policy object; SLA compliance tracking requires third-party apps or custom reporting. We export SLA Policy definitions and compliance metrics into a written document. The customer configures equivalent SLA monitoring in Intercom using Workflows and reporting or a compatible AppExchange SLA tool.

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.

Chatwoot logo

Chatwoot gotchas

High

Hacker plan 30-day data retention permanently deletes conversations

High

Free plan limits silently block new inboxes and agents

Medium

Captain AI credits bill at $20 per 1,000 beyond the monthly allocation

Medium

Database schema inconsistencies on stable tags v4.2–v4.4

Low

Automation Rules and SLA Policies are tier-gated and cannot export from lower plans

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

  • Intercom Custom Objects lack public API write access

    Intercom's Custom Objects feature is primarily designed for bot flows and requires a relationship to both People and Conversation. Community posts confirm that Custom Objects are not accessible via the public REST API for write operations, and they cannot be viewed in the standard interface outside of bot contexts. If Chatwoot's Custom Attributes need to migrate as Custom Objects in Intercom, we document the attribute definitions and recommend rebuilding them as custom data attributes or storing them as contact custom attributes instead. We flag this during scoping so the customer chooses the storage strategy before migration begins.

  • Intercom API rate limits throttle large conversation imports

    Intercom enforces API rate limits on the number of requests processed over time. Automated outbound campaigns, ongoing ticket activity, and bulk import operations compete for the same rate limit budget. Community migration guides recommend disabling active outbound campaigns before migration to free up API capacity. We implement exponential backoff and batch chunking on all Intercom API calls and pause imports if we receive 429 responses. For migrations exceeding 50,000 conversation parts, we stage imports in hourly windows to avoid hitting limits mid-run.

  • Chatwoot 30-day data retention erases history before migration

    Chatwoot's Hacker free plan permanently deletes conversation data older than 30 days. If the source account is on Hacker and older than 30 days, historical conversations are unrecoverable before migration begins. We flag this during scoping. If the account has grown past the free tier limits, we recommend upgrading to a paid plan first to access longer retention windows before initiating the export. We cannot restore data that Chatwoot has already purged.

  • Phone number validation can reject imported contacts

    Intercom validates phone number formats on contact import. Contacts with malformed phone numbers (missing country codes, non-numeric characters, invalid lengths) are rejected or cause import failures. Chatwoot does not enforce phone number format validation, so legacy contacts may carry bad phone data. We run phone number validation before Intercom import and either strip invalid characters or flag records for the customer's admin to correct manually. The Intercom workspace setting to disable phone number validation should be enabled before migration.

  • Conversations must attach to existing Users or Leads in Intercom

    Intercom requires every conversation to be associated with an existing User or Lead record. Orphaned conversations (with no contact reference) are rejected during import. Chatwoot allows conversations without a contact. We run contact import before conversation import so the User/Lead exists at the moment of conversation insert. If Chatwoot conversations exist without any linked contact, we create minimal Lead stub records to satisfy the foreign key constraint, then flag these for the customer to merge or clean up post-migration.

Migration approach

Six steps for a successful Chatwoot to Intercom data migration

  1. Discovery and retention audit

    We audit the source Chatwoot account across plan tier, agent count, inbox types, conversation volume, custom attribute definitions, and active labels. The most critical discovery item is data retention: if the source is on Hacker tier and older than 30 days, we identify which conversations are recoverable and which are already purged. We also extract the full object inventory (conversations, contacts, messages, agents, teams, labels, custom attributes, canned responses, automation rules, help center articles) with row counts. The discovery output is a written migration scope and a retention status report that determines what historical data is available to migrate.

  2. Schema preparation and Intercom workspace setup

    We pre-create custom data attributes in the Intercom workspace that mirror Chatwoot's custom attribute definitions. We create matching Inbox structures for each Chatwoot inbox channel (live chat, email, WhatsApp, API) and document the channel configuration that requires re-setup (webhook URLs, page tokens, WhatsApp templates). We create Teams that mirror Chatwoot Teams if the source is on Business or Enterprise. If Intercom Custom Objects are needed for Chatwoot custom attributes, we flag the API write limitation and recommend the custom data attribute strategy instead.

  3. Export, transform, and sandbox validation

    We export Chatwoot data via the REST API and pg_dump for self-hosted instances. Exports run in parallel for contacts, conversations, and messages to minimize total export time. We transform the data into Intercom's import schema: Contacts to Users/Leads with external_id, Conversations to Tickets with conversation parts, Labels to Tags. We run a sandbox migration into a non-production Intercom workspace using a representative sample (200-500 records per object) to validate mapping fidelity and flag any data quality issues before full production migration.

  4. Contact import with deduplication

    We import Contacts first because all subsequent objects depend on the contact record. Chatwoot Contacts with email addresses become Intercom Users; contacts without email become Leads. We apply email deduplication logic (existing Intercom users with matching email are matched rather than duplicated). Phone numbers are validated and cleaned before import; invalid numbers are flagged for manual correction. Custom attribute values are set on each contact record using the pre-created custom data attributes. We reconcile contact counts between Chatwoot source and Intercom destination before proceeding.

  5. Conversation import with message threading

    We import Conversations in batches of 200-500 using the Intercom API with exponential backoff and rate limit handling. Each conversation references its contact by external_id, which was set during the contact import phase. Message parts are imported in created_at timestamp order to preserve chronological threading. Private notes from Chatwoot become internal notes in Intercom. Labels are applied per conversation. Attachments are re-uploaded to Intercom's file storage and linked to conversation parts. We reconcile conversation counts and message counts post-import against source totals.

  6. Cutover, delta migration, and Workflow rebuild handoff

    We freeze Chatwoot writes during cutover, run a final delta migration of any conversations or contacts created or modified after the initial export timestamp, then hand off to Intercom as the system of record. We deliver the Automation Rule inventory document (for Business and Enterprise source plans) and the Help Center article export so the customer's admin can rebuild Workflows and Help Center content in Intercom. We do not rebuild Chatwoot Canned Responses as Saved Replies inside the migration scope unless specifically contracted. We provide a one-week hypercare window for reconciliation issues raised during the first week of production use.

Platform deep dives

Context on both ends of the pair

Chatwoot logo

Chatwoot

Source

Strengths

  • Fully self-hostable on Docker with PostgreSQL and Redis, giving engineering teams complete data residency control.
  • Free tier covers 2 agents with live chat and 500 conversations, providing a genuine no-cost evaluation path.
  • Omni-channel inbox consolidates website chat, email, WhatsApp, Facebook, Twitter, and API into a single agent queue.
  • Clean, intuitive UI means new agents are productive on day one with minimal training overhead.
  • Open-source MIT codebase is publicly auditable; enterprise edition extends Ruby backend without affecting the open core.

Weaknesses

  • Feature gating is pervasive: Teams, automations, Help Center, SSO, audit logs, and SLA all require paid tiers, making the free plan a severe false floor.
  • 30-day data retention on the Hacker plan means conversation history is permanently lost if not migrated before the cutoff.
  • Database schema bugs on stable releases v4.2–v4.4 have caused Docker Compose installation failures in production-like environments.
  • Captain AI credit model adds unpredictable cost: $20 per 1,000 extra credits on top of per-agent subscription fees.
  • Limited connectivity and portal disconnections reported by G2 reviewers affect communication reliability in active support sessions.
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?

Standard Helpdesk migration. 2 of 7 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Chatwoot and Intercom.

  • Object compatibility

    B

    2 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

    Chatwoot: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Chatwoot 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 Chatwoot to Intercom data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Small migrations under 2,000 conversations and 500 contacts with no custom attributes land between three and five weeks. Mid-market migrations with 5,000-20,000 conversations, Teams, Labels, and custom attributes move to six to ten weeks because of schema pre-creation, API rate limit handling, and the sandbox validation phase. Large enterprise migrations with high message density (over 100,000 conversation parts) extend further due to batch chunking requirements and multi-inbox routing configuration.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Chatwoot.
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