Open Source Intercom Alternatives 2026
TL;DR
Intercom's Essential plan is $74/month — and the features you actually need (live chat widget, shared inbox, basic automation) are all in open source alternatives. The best: Chatwoot (most complete, used by thousands of companies), Papercups (developer-focused, cleanest code), and Tawk.to (free cloud option, not OSS). Intercom's AI features (Fin, Resolution Bot) don't have a perfect OSS equivalent yet — but basic bot workflows via Botpress or n8n cover most use cases.
Key Takeaways
- Intercom pricing: $74/month Essential, $169/month Advanced, $374+/month Expert
- Chatwoot: most mature OSS alternative — live chat, email, Telegram, Twitter unified inbox
- Papercups: developer-focused, simple, cleanest architecture
- Chaskiq: feature-rich with marketing automation
- Tawk.to: free cloud option (not OSS) — excellent for budget-conscious
- Self-hosting cost: ~$10-20/month vs $74+/month minimum for Intercom
What Intercom Does
Intercom's product covers three main areas:
- Messenger — live chat widget on your website/app
- Inbox — shared team inbox for all conversations
- Outbound — proactive messages, email campaigns, in-app tours
- Help Center — self-service knowledge base
- Reporting — CSAT, response times, team performance
The most-used feature: live chat widget + shared inbox. This is what most teams actually pay $74+/month for.
The Alternatives
1. Chatwoot — Most Complete Alternative
Best for: Teams wanting the closest Intercom replacement with channel unification.
Chatwoot is the most mature open source customer support platform. It started as a live chat tool and expanded to unify all communication channels.
# Self-host with Docker:
git clone https://github.com/chatwoot/chatwoot
cd chatwoot
# Configure:
cp .env.example .env
# Edit .env: set SECRET_KEY_BASE, POSTGRES_*, REDIS_URL, SMTP settings
# Launch:
docker compose up -d
# Access at http://localhost:3000
# Setup wizard → create admin account → configure inboxes
Chatwoot channel support (unified inbox):
- Website live chat (embed widget)
- Email (connect IMAP/SMTP inbox)
- WhatsApp Business API
- Telegram
- Facebook Messenger
- Twitter/X DMs
- Slack (two-way)
- Line, Viber
- SMS via Twilio/Bandwidth
Adding the Chatwoot widget to your site:
<!-- Same as Intercom messenger widget: -->
<script>
window.chatwootSettings = {
hideMessageBubble: false,
position: 'right',
locale: 'en',
type: 'standard', // 'standard' | 'expanded_bubble'
};
(function(d,t) {
var BASE_URL = "https://your-chatwoot.company.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>
// Identify users (like Intercom's identify):
window.$chatwoot.setUser('user-123', {
name: 'John Doe',
email: 'john@example.com',
avatar_url: 'https://example.com/avatar.png',
// Custom attributes:
plan: 'pro',
company: 'Acme Corp',
mrr: 99,
});
Automation (Chatwoot Automation Rules):
Trigger: New conversation created
Condition: Conversation source = Live Chat
Actions:
→ Assign to: Sales team
→ Add label: sales-qualified
→ Send message: "Hi! How can I help you today?"
Trigger: Conversation status = Open, Created > 2 hours ago
Condition: No assignee
Actions:
→ Assign to: Support team
→ Add label: needs-attention
Chatwoot vs Intercom:
- Live chat: ✅ (equivalent)
- Shared inbox: ✅ (equivalent)
- Email campaigns: ❌ (no Intercom Outbound equivalent)
- Help center: ✅ (Articles feature)
- AI chatbot: ❌ (no Fin equivalent — use Botpress separately)
- Self-hosted: ✅ free vs $74/month minimum
GitHub: chatwoot/chatwoot — 22K+ stars
2. Papercups — Developer-Focused
Best for: Developer tools, SaaS products, teams who want simple live chat without complexity.
Papercups is simpler than Chatwoot — focused purely on live chat + inbox. It's the "developer-made, developer-loved" option.
# Docker:
docker run -d \
-p 4000:4000 \
-e DATABASE_URL=ecto://postgres:pass@db/papercups \
-e SECRET_KEY_BASE=your-secret-key \
papercups/papercups:latest
<!-- Widget (React): -->
import {ChatWidget} from '@papercups-io/chat-widget';
export default function App() {
return (
<>
<YourApp />
<ChatWidget
accountId="your-account-id"
baseUrl="https://your-papercups.company.com"
title="Welcome to Acme"
subtitle="Ask us anything 👋"
primaryColor="#1890ff"
greeting="Hi there! How can we help?"
newMessagePlaceholder="Start typing..."
customer={{
name: user.name,
email: user.email,
external_id: user.id,
metadata: { plan: user.plan },
}}
/>
</>
);
}
Papercups strengths:
- Clean, simple codebase (Elixir/Phoenix)
- Good Slack integration (reply from Slack)
- API-first design
- No bloat — just the core features
Papercups limitations:
- Single inbox (no multi-channel like Chatwoot)
- Less actively maintained in 2025-2026
- No built-in automation rules
GitHub: papercups-io/papercups — 5K+ stars
3. Chaskiq — Full-Featured Marketing + Support
Best for: Teams wanting Intercom's outbound/marketing features too.
Chaskiq is the most ambitious Intercom clone — it tries to replicate Intercom's full platform including outbound campaigns, bots, and in-app messages.
# Docker Compose:
git clone https://github.com/chaskiq/chaskiq
cd chaskiq
cp .env.example .env
docker compose up -d
Chaskiq features:
- Live chat with bots
- Email campaigns
- In-app messages and tours
- Help center / knowledge base
- Campaign automation
- Bot builder
More features than Chatwoot, but also more complex to maintain.
GitHub: chaskiq/chaskiq — 3K+ stars
4. Adding AI Bot (Missing Intercom Fin Equivalent)
The biggest gap in OSS alternatives is Intercom Fin — the AI chatbot that automatically resolves conversations. Build the equivalent:
// Next.js API route: AI bot for Chatwoot
// When Chatwoot receives a new message, auto-respond with AI
app.post('/webhook/chatwoot', async (req, res) => {
const { event, data } = req.body;
// Only respond to new messages from customers:
if (event !== 'message_created' || data.message_type !== 'incoming') {
return res.sendStatus(200);
}
const conversationId = data.conversation.id;
const message = data.content;
// Search knowledge base for relevant answer:
const relevantDocs = await searchHelpCenter(message);
// Generate response with local LLM (Ollama):
const response = await ollama.chat({
model: 'llama3.2',
messages: [
{
role: 'system',
content: `You are a helpful support assistant for Acme Corp.
Answer questions using this knowledge base context:
${relevantDocs.map(d => d.content).join('\n\n')}
If you cannot answer from the context, say you'll connect them with a human.`,
},
{ role: 'user', content: message },
],
});
// Send response via Chatwoot API:
await chatwoot.createMessage(conversationId, {
content: response.message.content,
message_type: 'outgoing',
private: false,
});
// If bot not confident, escalate to human:
if (response.confidence < 0.7) {
await chatwoot.assignConversation(conversationId, 'human-team');
}
res.sendStatus(200);
});
This pattern — Chatwoot webhook → LLM → Chatwoot API response — gives you the core Fin behavior for the cost of a VPS + Ollama.
Intercom Feature Coverage
| Intercom Feature | OSS Solution |
|---|---|
| Live chat widget | Chatwoot ✅ |
| Shared inbox | Chatwoot ✅ |
| Email inbox | Chatwoot ✅ |
| Chatwoot ✅ | |
| Help center | Chatwoot Articles ✅ |
| CSAT surveys | Chatwoot ✅ |
| Automation rules | Chatwoot ✅ |
| In-app messages | Chaskiq ✅ |
| Email campaigns | Chaskiq ✅ / Listmonk |
| AI chatbot (Fin) | Chatwoot + Ollama ⚡ |
| Product tours | ❌ (no OSS equivalent) |
| Usage tracking | PostHog ✅ |
Migration: Intercom → Chatwoot
# 1. Export Intercom data:
# Intercom → Settings → Export
# Downloads: users.csv, companies.csv, conversations.csv
# 2. Import to Chatwoot:
# Currently no built-in Intercom importer
# Use Chatwoot API to batch import contacts:
for contact in intercom_contacts:
curl -X POST https://your-chatwoot.com/api/v1/accounts/1/contacts \
-H "api_access_token: your-token" \
-d '{"name": "...", "email": "...", "phone_number": "..."}'
# 3. Replace Intercom widget with Chatwoot widget:
# 5-minute swap — same embed pattern
# 4. Configure email inbox:
# Chatwoot → Settings → Inboxes → Add Email
# IMAP/SMTP credentials
# 5. Verify integrations:
# Slack, Telegram, etc. via Chatwoot integrations page
Cost Comparison
| Solution | 5-Seat Team/Month | Channels | AI Bot |
|---|---|---|---|
| Intercom Essential | $370 | 10+ | ✅ Fin |
| Chatwoot self-hosted | ~$15 VPS | 15+ | DIY |
| Chatwoot Cloud | $0 (300 conv) | Limited | ❌ |
| Papercups self-hosted | ~$10 VPS | Web only | DIY |
| Tawk.to (not OSS) | $0 | Web + email | ❌ |
Annual savings at 5 users: ~$4,260/year vs Intercom Essential.
Explore more open source alternatives at OSSAlt.