Helpdesk migration

Migrate from Chatwoot to Salesforce Service Cloud

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

Chatwoot logo

Chatwoot

Source

Salesforce Service Cloud

Destination

Salesforce Service Cloud logo

Compatibility

73%

8 of 11

objects map 1:1 between Chatwoot and Salesforce Service Cloud.

Complexity

BStandard

Timeline

3-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Chatwoot to Salesforce Service Cloud is a structural migration from a developer-friendly support tool into an enterprise CRM with service built in. Chatwoot organizes support around Inboxes and Conversations; Salesforce Service Cloud uses Cases with OmniChannel routing and a 360-degree customer view that pulls service data alongside sales, marketing, and ERP records. We resolve that schema difference by mapping Chatwoot Conversations to Salesforce Cases, Inboxes to OmniChannel Work Item Types, and preserving the full message thread as Case Thread Entries linked to the correct Contact. Chatwoot custom attributes attach to Conversations or Contacts and require pre-creation of matching custom fields in Salesforce before any data lands. Automation Rules, SLA Policies, and Help Center articles do not migrate as code; we deliver a written inventory of each for the customer's admin to rebuild in Salesforce Flow, Entitlement Processes, and Knowledge Base.

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

Salesforce Service Cloud logo

Salesforce Service Cloud

What's pulling them in

  • Deep Salesforce ecosystem integration with Sales Cloud, Marketing Cloud, and custom Apex apps creates a single pane of glass for enterprise customer data and cross-functional workflows.
  • Omnichannel case routing — email, chat, phone, social, and messaging — unified under one case object means agents do not lose context when customers switch channels mid-interaction.
  • AI for customer service (Einstein AI / Agentforce) offers automated case classification, suggested replies, and chatbot routing that reduces Tier-1 ticket volume without manual rule authoring.
  • Entitlement and milestone tracking enforces SLA compliance natively, automatically calculating breach windows and surfacing violations to supervisors in dashboards.
  • Salesforce's massive AppExchange ecosystem provides pre-built connectors, industry-specific managed packages, and third-party tools that extend Service Cloud beyond its out-of-box capabilities.

Object mapping

How Chatwoot objects map to Salesforce Service Cloud

Each row shows how a Chatwoot object lands in Salesforce Service Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Chatwoot

Contact

maps to

Salesforce Service Cloud

Contact

1:1
Fully supported

Chatwoot Contact records map directly to Salesforce Contact. We use email as the dedupe key. Custom attributes stored on Chatwoot Contacts require pre-creation of matching custom fields on the Salesforce Contact object before import. The Chatwoot contact name, email, phone, and any identifier fields map to the equivalent Salesforce Contact fields. The customer's Account must exist before Contact import so that the AccountId Lookup relationship is satisfied at insert time.

Chatwoot

Conversation

maps to

Salesforce Service Cloud

Case

1:1
Fully supported

Chatwoot Conversations are the primary migration unit and map to Salesforce Cases. The Chatwoot conversation status (open, resolved, pending) maps to Salesforce Case Status values that we configure in the destination org during schema setup. Priority, assignee, and team assignments transfer to Case Priority, OwnerId, and Queue membership respectively. Closed-at timestamp from Chatwoot maps to Salesforce Case ClosedDate.

Chatwoot

Message

maps to

Salesforce Service Cloud

EmailMessage + Case Thread

1:1
Fully supported

Chatwoot Messages belong to a Conversation and carry content, sender_type (agent or customer), created_at timestamp, and attachments. We preserve message order by created_at timestamp and insert them as Case Thread Entries in Salesforce, which renders them as a chronological message log inside the Case. Attachments migrate as ContentDocument records linked via ContentDocumentLink to the Case. Private notes from Chatwoot (agent-only visibility) map to Case internal comments using Salesforce CaseComment with IsPublished=false.

Chatwoot

Label

maps to

Salesforce Service Cloud

Case Tag or Custom Picklist

lossy
Fully supported

Chatwoot Labels are string tags applied to Conversations. We export the full label taxonomy and re-apply them to migrated Cases. In Salesforce, labels can map to a Case Tag (if the destination org has Tags enabled) or to a custom multi-select picklist field on Case that we create during schema setup. The customer's admin chooses the strategy during scoping based on whether they use Tags or prefer a structured picklist.

Chatwoot

Agent

maps to

Salesforce Service Cloud

User

1:1
Fully supported

Chatwoot Agents map to Salesforce Users by email match. Role and availability status from Chatwoot transfer to Salesforce UserRole and IsActive. We resolve every Chatwoot agent email against the destination org's User table before migration. Any agent without a matching Salesforce User goes to a reconciliation queue for the customer's admin to provision. Chatwoot role names (agent, administrator) map to the closest Salesforce profile or permission set equivalent.

Chatwoot

Inbox

maps to

Salesforce Service Cloud

OmniChannel Work Item Type + Channel

lossy
Fully supported

Chatwoot Inboxes represent channels (Website Live Chat, Email, WhatsApp, Facebook, Twitter, API). Channel configuration credentials (webhook URLs, page tokens, WhatsApp template IDs) are platform-bound and do not transfer. We create corresponding OmniChannel Work Item Types in Salesforce and document which Chatwoot channel maps to which Salesforce Channel for the customer's admin to reconnect during post-migration setup. This is a mapping documentation exercise, not a data migration.

Chatwoot

Team

maps to

Salesforce Service Cloud

Queue or Group

lossy
Fully supported

Chatwoot Teams are available on Business and Enterprise tiers and group agents for routing. If the source is on Hacker or Startups tier, no Teams exist and this step is skipped. Teams that exist migrate as Salesforce Queues (for case routing) or Groups (for reporting). We create matching Queue structures in Salesforce and assign the migrated Agent-User records to the correct Queue based on the Chatwoot team membership.

Chatwoot

Custom Attributes (Conversation-scoped)

maps to

Salesforce Service Cloud

Custom Fields on Case

1:1
Fully supported

Chatwoot custom attributes attached to Conversations map to custom fields on the Salesforce Case object. We pre-create each Chatwoot custom attribute in Salesforce during schema setup, matching the Chatwoot type (text, number, dropdown, checkbox) to the nearest Salesforce field type. Values migrate as raw data during the Case import phase. Any attribute with a dropdown source of values must have its picklist values created in Salesforce before migration begins.

Chatwoot

Custom Attributes (Contact-scoped)

maps to

Salesforce Service Cloud

Custom Fields on Contact

1:1
Fully supported

Chatwoot custom attributes attached to Contacts map to custom fields on the Salesforce Contact object. We pre-create the schema in Salesforce before Contact import and migrate values directly. Downstream automations in Salesforce that reference these custom fields must be configured by the customer's admin post-migration; we document the field names and data types in the field inventory deliverable.

Chatwoot

Canned Responses

maps to

Salesforce Service Cloud

Quick Text or Email Template

1:1
Fully supported

Chatwoot Canned Responses with shortcut codes map to Salesforce Quick Text (for agent-side suggestions during case resolution) or Email Templates (for outbound case communication). The migration approach is chosen during scoping based on how the customer uses Canned Responses. Content and shortcut triggers migrate directly; the customer's admin assigns keyboard shortcuts in Salesforce post-migration.

Chatwoot

Help Center Articles

maps to

Salesforce Service Cloud

Knowledge Article

1:1
Mapping required

Chatwoot Help Center Articles (available on Startups tier or above) migrate to Salesforce Knowledge Base articles. We export the full article tree including title, body (markdown converted to Salesforce rich-text format), category, and locale. Knowledge Article types must be created in Salesforce before import. Articles with draft or archived status in Chatwoot migrate with the equivalent publish status in Salesforce. Locale mapping requires admin confirmation of the destination Salesforce org's supported languages.

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

Salesforce Service Cloud logo

Salesforce Service Cloud gotchas

High

Data Export 512MB file size cap breaks large org exports

High

API Daily Request Limits vary by license edition

High

No automatic data backup in base Salesforce

Medium

Picklist dependencies silently break records when unmapped

Medium

Workflow rules fire unexpectedly during data load

Pair-specific challenges

  • Hacker plan 30-day data retention permanently deletes conversation history

    Chatwoot's free Hacker plan retains only 30 days of conversation data. If the source account is on Hacker and older than 30 days, historical conversations are permanently deleted before we can export them. We flag this during scoping by checking the account creation date and plan tier. If historical data is critical and the account is on Hacker, we recommend upgrading to a paid tier immediately to access longer retention windows before the export window opens.

  • Chatwoot Inbox channel credentials do not transfer to Salesforce

    Chatwoot Inbox configurations carry platform-bound credentials: WhatsApp Business API tokens, Facebook page tokens, email SMTP settings, and webhook URLs. These are tied to the Chatwoot installation and cannot function in Salesforce. We document every Chatwoot Inbox-to-Channel mapping and deliver a configuration guide specifying what credentials the customer's admin must provision in Salesforce OmniChannel for each channel type. Channels must be reconnected before cases can be created from inbound messages in Salesforce.

  • Chatwoot Conversations lack a required AccountId on Salesforce Contact

    Chatwoot Contacts store customer data without a mandatory Account or Company association. Salesforce Service Cloud's full feature set (Entitlements, Contracts, Asset tracking, and multi-contact Account views) requires a Contact to be linked to an Account. We require the customer to confirm whether Chatwoot Companies should be migrated as Salesforce Accounts (and Contacts linked to them) or whether a default Account (e.g., a generic 'Support' Account) should be used. Skipping this decision produces orphaned Contacts in Salesforce.

  • Automation Rules and SLA Policies are tier-gated and absent on lower plans

    Chatwoot Automation Rules require Business tier or higher; SLA Policies require Enterprise Edition. If the source account is on Hacker or Startups, these objects do not exist in the data export regardless of business need. We document which objects are absent based on the source plan tier and deliver an inventory of the Automation Rules and SLA Policies that do exist with their trigger conditions, actions, and Chatwoot tier requirement. The customer's admin rebuilds these in Salesforce Flow and Entitlement Processes post-migration.

  • Private notes map to CaseComment.IsPublished=false but require admin review

    Chatwoot private notes (agent-only messages within a Conversation) map to Salesforce CaseComment records with IsPublished=false. However, Salesforce admins commonly restrict CaseComment access via field-level security or page layouts. We flag during schema design whether the destination org's page layouts expose internal comments to all agent profiles or require a specific permission set. If access is restricted, we document the required layout update so the admin enables internal comment visibility before agents rely on migrated private note history.

Migration approach

Six steps for a successful Chatwoot to Salesforce Service Cloud data migration

  1. Discovery and plan-tier audit

    We audit the source Chatwoot account across plan tier, Inbox count, conversation volume, agent count, custom attribute definitions (with their types), label taxonomy, Teams presence, Help Center article count, and whether Automation Rules and SLA Policies exist. We check account creation date to confirm whether 30-day Hacker retention has already deleted historical conversations. This output is a written migration scope with record counts per object, a list of objects that will not migrate, and a confirmation of which Chatwoot plan the customer needs to be on before export begins.

  2. Schema design and Salesforce field pre-creation

    We design the destination schema in Salesforce. This includes pre-creating all Chatwoot custom attributes as custom fields on Case and Contact with matching field types, creating Case Status values that mirror Chatwoot conversation status, building OmniChannel Work Item Types for each Chatwoot Inbox, creating Queue structures for Chatwoot Teams, configuring the Account-Contact hierarchy decision, and setting up Knowledge Article types for Help Center articles. Schema is deployed into a Salesforce Sandbox first for validation. No data loads until schema is confirmed by the customer's admin.

  3. Sandbox migration and reconciliation

    We run a full migration into a Salesforce Sandbox using production-like data volume. The customer's support operations lead reconciles record counts (Cases in, Contacts in, Messages in, Labels in), spot-checks 25-50 random Cases against the Chatwoot source for message thread completeness and chronological ordering, and validates that custom attribute values landed in the correct Salesforce fields. Sign-off on the sandbox migration is required before production migration begins.

  4. Account-Contact hierarchy resolution

    We resolve the Account-Contact hierarchy before any Contact import. If Chatwoot Companies exist, we migrate them as Salesforce Accounts using domain or name as the dedupe key. Chatwoot Contacts without a Company association are either linked to a default Account (customer-confirmed during scoping) or held in a reconciliation queue for the admin to assign an Account. This step must complete before Contact insert because Salesforce requires AccountId on Case creation when Entitlements are in use.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Accounts (from Chatwoot Companies if present), Contacts (with AccountId resolved), Cases (with ContactId, OwnerId, and Queue membership resolved), Message threads (Case Thread Entries preserving chronological order by created_at timestamp, with attachments as ContentDocument), Labels (applied to migrated Cases), Canned Responses (as Quick Text or Email Templates), Agents (as Salesforce Users with role mapping), Teams (as Queues), Help Center Articles (as Knowledge Articles), and custom attribute values (last, because they reference Case and Contact IDs resolved in prior phases). Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation rebuild handoff

    We freeze Chatwoot writes during cutover, run a final delta migration of any records modified during the migration window, then enable Salesforce as the system of record. We deliver the Automation Rules and SLA Policies inventory document to the customer's admin team with recommended Salesforce Flow and Entitlement Process equivalents. We support a one-week hypercare window where we resolve reconciliation issues raised by the support team. We do not rebuild Chatwoot Automation Rules as Salesforce Flow inside the migration scope; that is a separate engagement or an internal admin task.

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.
Salesforce Service Cloud logo

Salesforce Service Cloud

Destination

Strengths

  • Enterprise-grade security, compliance certifications, and audit logging available across all paid editions with Shield offering enhanced event monitoring.
  • Scalable multi-tenant cloud architecture supporting orgs from 5 users to 150,000+ seat enterprises without infrastructure management overhead.
  • Omnichannel contact center unifying email, live chat, phone, messaging, and social into a single Case timeline per customer interaction.
  • Rich workflow automation via Salesforce Flow, Process Builder, and Apex triggers enabling complex case escalation, routing, and field updates.
  • Native AI capabilities (Agentforce / Einstein) for case auto-routing, classification, suggested responses, and chatbot escalation without third-party add-ons.

Weaknesses

  • Per-seat pricing model with no contact limits creates unpredictable cost scaling for large organizations adding many agents over time.
  • No automatic data backup — organizations must purchase a third-party backup solution or build manual Data Loader exports to protect against data loss from human error, failed deployments, or integrations overwriting records.
  • Steep learning curve for non-technical users requiring dedicated admin resources and formal training investment before teams reach productive velocity.
  • Annual contract requirements and limited pro-ration on exit create significant switching cost friction, especially for organizations evaluating alternatives mid-cycle.
  • Add-on licensing (CPQ, Einstein Activity Capture, Shield, Data Cloud) can double effective per-seat cost without clear documentation of which features are included in base tiers.

Complexity grading

How hard is this migration?

Standard Helpdesk migration. 1 of 7 objects need a manual workaround.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Chatwoot and Salesforce Service Cloud.

  • Object compatibility

    B

    1 of 7 objects need a manual workaround.

  • 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 Salesforce Service Cloud 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 Salesforce Service Cloud data migrations

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

Can't find your answer?

Walk through your Chatwoot to Salesforce Service Cloud 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 with fewer than 5,000 conversations and under ten custom attributes with no Teams or Help Center. Migrations with large historical message threads (over 50,000 messages), multiple Inboxes requiring OmniChannel configuration, Teams-to-Queue mapping, or Help Center article inventory scope move to six to twelve weeks because of message-thread ordering validation, custom field pre-creation, and the Knowledge Base article migration work.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Chatwoot.
Land in Salesforce Service Cloud, 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