Replace Intercom with Chatwoot - A Complete Migration Guide
How to migrate from Intercom's $13K/seat pricing to self-hosted Chatwoot in a weekend. Complete deployment guide with Docker, data migration, and feature comparison.
Replace Intercom with Chatwoot - A Complete Migration Guide
Intercom charges $74-$999 per seat per month for live chat and customer support. That’s $888-$11,988 per agent per year. A 10-person support team on Intercom’s Grow plan pays $132,000 annually—just to talk to customers.
Chatwoot offers the same multi-channel inbox, live chat widget, and automation features for $0/year in licensing. Host it on a $10/month VPS, and your total cost for 10 agents is $120/year.
This guide shows you how to migrate from Intercom to Chatwoot in a weekend.
Why Chatwoot Over Intercom
| Feature | Intercom | Chatwoot |
|---|---|---|
| Cost per seat | $74-$999/month | $0/month |
| Data ownership | Stored on Intercom’s servers | Stored on your server |
| Multi-channel | Email, chat, social | Email, chat, WhatsApp, Facebook, Twitter, Telegram, Line |
| Automation | Bot workflows | Bot workflows + assignment rules |
| Self-hosting | ❌ Not available | ✅ Full control |
| Open source | ❌ Proprietary | ✅ MIT licensed |
The critical difference: Intercom uses your customer conversation data to train their AI. Chatwoot runs on your infrastructure—you own every message.
Prerequisites
Before you start, you’ll need:
- A Linux server (VPS) with 2GB RAM minimum
- Docker and Docker Compose installed
- A domain name pointing to your server
- SSL certificate (Let’s Encrypt is free)
- 4-8 hours for initial setup
Total cost: $10-20/month for a basic VPS from DigitalOcean, Linode, or Hetzner.
Step 1: Deploy Chatwoot with Docker
Chatwoot provides an official Docker Compose setup that handles PostgreSQL, Redis, Rails, and the web server.
# Clone the Chatwoot repository
git clone https://github.com/chatwoot/chatwoot.git
cd chatwoot
# Copy the example environment file
cp .env.example .env
# Edit the environment file
nano .env
Required environment variables:
# Your domain
FRONTEND_URL=https://chat.yourcompany.com
# Secret keys (generate with: rake secret)
SECRET_KEY_BASE=your-secret-key-here
RAILS_ENCRYPTION_KEY=your-encryption-key-here
# Database (handled by Docker Compose)
POSTGRES_HOST=postgres
POSTGRES_USERNAME=chatwoot
POSTGRES_PASSWORD=secure-password-here
REDIS_HOST=redis
REDIS_PASSWORD=another-secure-password
# Email (for notifications)
MAILER_SENDER_EMAIL=support@yourcompany.com
SMTP_ADDRESS=smtp.sendgrid.net
SMTP_PORT=587
SMTP_USERNAME=apikey
SMTP_PASSWORD=your-sendgrid-api-key
Deploy with Docker Compose:
# Build and start all services
docker-compose up -d
# Run database migrations
docker-compose run --rm rails bundle exec rake db:create
docker-compose run --rm rails bundle exec rake db:migrate
# Create an admin user
docker-compose run --rm rails bundle exec rake admin:create
Your Chatwoot instance is now running at http://your-server-ip:3000.
Step 2: Set Up SSL with Let’s Encrypt
Never run a production service without HTTPS. Use Certbot to get a free SSL certificate:
# Install Certbot
sudo apt install certbot python3-certbot-nginx
# Get certificate (make sure your domain points to this server)
sudo certbot --nginx -d chat.yourcompany.com
# Auto-renewal
sudo systemctl enable certbot.timer
Update your .env file:
FRONTEND_URL=https://chat.yourcompany.com
ACTION_CABLE_URL=wss://chat.yourcompany.com/cable
Restart Chatwoot:
docker-compose restart
Step 3: Configure the Website Widget
Chatwoot’s website widget replaces Intercom’s messenger. Add this snippet to your site:
<script>
window.chatwootSettings = {"position":"right","type":"expanded_bar","launcherTitle":"Chat with us"};
(function(d,t) {
var BASE_URL="https://chat.yourcompany.com";
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=BASE_URL+"/packs/js/sdk.js";
g.defer = true;
g.async = true;
s.parentNode.insertBefore(g,s);
g.onload=function(){
window.chatwootSDK.run({
websiteToken: 'YOUR_WEBSITE_TOKEN',
baseUrl: BASE_URL
})
}
})(document,"script");
</script>
Get your website token from Settings → Inboxes → Website → Configuration in Chatwoot.
Step 4: Migrate Data from Intercom
Intercom doesn’t provide an export API for conversation history, but you can migrate:
What you can export:
- User/contact lists
- Company/account data
- Conversation metadata (not full transcripts)
What you can’t export:
- Full conversation history
- Attachments
- Notes and internal comments
Migration steps:
-
Export contacts from Intercom:
- Go to Settings → Data → Export
- Export all contacts as CSV
-
Import into Chatwoot:
- Go to Settings → Contacts → Import
- Upload the CSV
- Map fields (email, name, company)
-
Keep Intercom read-only during transition:
- Set Intercom to “away” mode
- Route new conversations to Chatwoot
- Reference old Intercom conversations via URL in Chatwoot notes
Pro tip: Don’t try to migrate 3 years of chat history. Start fresh with Chatwoot and use Intercom as an archive for the first 90 days.
Step 5: Configure Channels
Chatwoot supports multiple channels out of the box:
Email:
- Connect any IMAP/SMTP inbox
- Support@, help@, billing@ all route to the same team inbox
WhatsApp:
- Requires WhatsApp Business API account
- Connect via Twilio or direct API
Facebook Messenger:
- Connect your Facebook Page
- Auto-reply with Facebook’s guidelines
Twitter/X:
- Connect your Twitter account
- DMs become conversations
Telegram:
- Create a bot via @BotFather
- Paste the bot token into Chatwoot
Step 6: Set Up Automation
Chatwoot’s automation replaces Intercom’s bots and workflows:
Assignment rules:
- Route conversations by keyword, language, or availability
- “Billing” → Billing team
- “Spanish” → Spanish-speaking agents
Canned responses:
- Create macros for common replies
- Type
/to insert canned responses
Chatbots:
- Visual bot builder for qualification
- Trigger on specific pages or keywords
- No-code workflow editor
Step 7: Train Your Team
Migration isn’t just technical—it’s cultural. Your support team needs to adapt:
What’s the same:
- Multi-channel inbox
- Team collaboration
- Canned responses
- Analytics
What’s different:
- Self-hosted means you handle updates
- No Intercom AI suggestions (yet)
- Interface is similar but not identical
Training plan:
- Deploy Chatwoot on a staging domain
- Run parallel for 2 weeks (Intercom + Chatwoot)
- Switch production traffic to Chatwoot
- Keep Intercom read-only for 90 days
- Cancel Intercom subscription
The ROI Math
Intercom costs for 10 agents:
- Grow plan: $13,200/seat/year × 10 = $132,000/year
- Plus: 7% annual price increase = $141,240/year 2
Chatwoot costs:
- Licensing: $0
- VPS hosting: $20/month × 12 = $240/year
- Setup time: 8 hours × $100/hour = $800 (one-time)
- Total Year 1: $1,040
- Total Year 2+: $240/year
Break-even: 2.9 days
5-year savings: $700,000+ (accounting for Intercom price increases)
Common Issues and Fixes
Problem: WebSocket errors in production
Fix: Ensure ACTION_CABLE_URL uses wss:// not ws://
Problem: Email not sending
Fix: Verify SMTP credentials and check MAILER_SENDER_EMAIL matches your domain
Problem: Slow performance with 50+ concurrent conversations
Fix: Increase Redis memory allocation and enable Sidekiq workers
Problem: Widget not loading
Fix: Check CORS settings and verify FRONTEND_URL matches your domain exactly
When Chatwoot Isn’t the Right Choice
Chatwoot is powerful, but it’s not for everyone:
Stick with Intercom if:
- You’re a 2-person team on the free tier
- You rely on AI-powered response suggestions
- You need product tours and onboarding flows
- You can’t dedicate 8 hours to deployment
Consider Zendesk or Freshdesk if:
- You need enterprise SLAs and 24/7 support
- You want a managed cloud solution with zero ops
- You’re willing to pay 40% of Intercom’s pricing
The Bottom Line
Intercom built a $1.3B business on a simple premise: “pay us forever to talk to your customers.” Chatwoot breaks that model by offering the same inbox, chat, and automation features as open-source software.
You don’t need Intercom’s permission to talk to your customers. You don’t need to let them mine your conversation data for AI training. You don’t need to pay $132,000/year for 10 agents.
Deploy Chatwoot this weekend. Reclaim your customer conversations. Keep the $131,760.
Next steps:
Found this useful?
Share it with your team to start the conversation about SaaS savings.