Skip to main content

How to Migrate from Intercom to Chatwoot

·OSSAlt Team
intercomchatwootmigrationcustomer supportguide

How to Migrate from Intercom to Chatwoot

Intercom's pricing starts at $39/seat/month for the cheapest plan and scales to $139/seat for Pro. For a 10-seat team, that's $4,680-16,680/year. Chatwoot provides live chat, helpdesk, and omnichannel support — self-hosted, no per-seat fees.

What Maps

Intercom FeatureChatwoot Equivalent
✅ Messenger (live chat)Website inbox (widget)
✅ Inbox (helpdesk)Conversations
✅ Email supportEmail inbox
✅ Social channelsFacebook, Twitter, WhatsApp, Telegram
✅ Canned responsesCanned responses
✅ Team assignmentTeam assignment
✅ Labels/TagsLabels
⚠️ Custom botsBasic bot (limited)
⚠️ Product toursNot available
❌ Outbound campaignsNot available (use email tool)
❌ Help center/articlesNot available (use separate wiki)
❌ Series (automation flows)Basic automation rules

Step 1: Deploy Chatwoot

git clone https://github.com/chatwoot/chatwoot.git
cd chatwoot
cp .env.example .env
# Configure FRONTEND_URL, SECRET_KEY_BASE, database, Redis
docker compose up -d

Step 2: Replace the Chat Widget

Remove Intercom:

<!-- DELETE THIS -->
<script>
  window.intercomSettings = { api_base: "...", app_id: "YOUR_ID" };
</script>

Add Chatwoot:

<script>
  window.chatwootSettings = { position: "right", type: "standard" };
  (function(d,t) {
    var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
    g.src="https://support.yourdomain.com/packs/js/sdk.js";
    g.defer=true; g.async=true;
    s.parentNode.insertBefore(g,s);
    g.onload=function(){
      window.chatwootSDK.run({
        websiteToken: 'YOUR_TOKEN',
        baseUrl: 'https://support.yourdomain.com'
      })
    }
  })(document,"script");
</script>

Identify users (like Intercom):

window.$chatwoot.setUser('user-id', {
  email: 'user@example.com',
  name: 'Jane Doe',
  avatar_url: 'https://...',
  company_name: 'Acme Inc',
});

Step 3: Export Intercom Contacts

  1. Intercom → ContactsExport
  2. Download CSV
  3. Import into Chatwoot via API:
# Batch import contacts
for contact in contacts; do
  curl -X POST https://support.yourdomain.com/api/v1/accounts/1/contacts \
    -H "api_access_token: TOKEN" \
    -d "{\"name\": \"$name\", \"email\": \"$email\"}"
done

Step 4: Set Up Canned Responses

Recreate Intercom saved replies:

  1. SettingsCanned Responses
  2. Create responses with shortcodes
  3. Agents type /shortcode in conversations to insert

Step 5: Configure Automations

Replace Intercom's basic automation:

  1. SettingsAutomation
  2. Create rules for routing, labeling, and assignment
  3. Examples:
    • "If message contains 'billing'" → assign to Billing team
    • "If new conversation" → auto-assign to available agent
    • "If no response in 30 min" → send canned response

What You'll Lose (and Alternatives)

Intercom FeatureAlternative
Help center/articlesBookStack, Outline, or Docusaurus
Product toursShepherd.js (open source)
Outbound campaignsListmonk or Mautic
Custom bots (Fin)Chatwoot bot (basic) or custom integration
User event trackingPostHog or custom analytics

Cost Comparison

SeatsIntercom StarterChatwoot Self-HostedSavings
5$195/month$15/month$2,160/year
10$390/month$30/month$4,320/year
25$975/month$50/month$11,100/year

Migration Timeline

WeekTask
Week 1Deploy Chatwoot, set up channels, swap widget
Week 2Import contacts, create canned responses
Week 3Run both for live conversations
Week 4Full cutover, cancel Intercom

Compare customer engagement tools on OSSAlt — live chat, helpdesk features, and pricing side by side.