ConfigsApr 10, 2026·1 min read

Chatwoot — Open Source Customer Support & Live Chat

Chatwoot is an open-source Intercom/Zendesk alternative with live chat, email, social media support, and omnichannel inbox for customer communication.

AI
AI Open Source · Community
Quick Use

Use it first, then decide how deep to go

This block should tell both the user and the agent what to copy, install, and apply first.

docker run --name chatwoot -p 3000:3000 
  -e SECRET_KEY_BASE=$(openssl rand -hex 64) 
  -e FRONTEND_URL=http://localhost:3000 
  chatwoot/chatwoot:latest

Open http://localhost:3000 — create your admin account and set up your first inbox.

Intro

Chatwoot is an open-source customer engagement platform that serves as an alternative to Intercom, Zendesk, and Freshdesk. Built with Ruby on Rails and Vue.js, it provides a unified inbox for managing customer conversations across live chat, email, social media (WhatsApp, Facebook, Instagram, Twitter), and messaging apps — all from a single dashboard.

With 28.4K+ GitHub stars, Chatwoot empowers businesses to provide excellent customer support while maintaining full control over their data and reducing SaaS costs.

What Chatwoot Does

Chatwoot covers the entire customer communication workflow:

  • Live Chat Widget: Embeddable chat widget for your website with customizable branding
  • Omnichannel Inbox: Unified inbox for chat, email, WhatsApp, Facebook Messenger, Instagram DM, Twitter, Telegram, LINE, and SMS
  • Team Collaboration: Agent assignment, team routing, internal notes, and canned responses
  • Automation: Rule-based automation for routing, labeling, and auto-responses
  • CRM Contacts: Customer profiles with conversation history, custom attributes, and notes
  • Reporting: Agent performance, conversation metrics, CSAT scores, and SLA tracking
  • Bot Integration: Connect with Dialogflow, Rasa, or custom AI bots for automated responses

Architecture

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│  Chat Widget │────▶│  Rails API   │────▶│  PostgreSQL  │
│  + Dashboard │     │  + Sidekiq   │     │  + Redis     │
│  (Vue.js)    │     │  (Ruby)      │     │              │
└──────────────┘     └──────┬───────┘     └──────────────┘
                            │
              ┌─────────────┼─────────────┐
              │             │             │
       ┌──────┴──┐   ┌─────┴───┐   ┌─────┴───┐
       │WhatsApp │   │Facebook │   │ Email   │
       │  API    │   │  API    │   │ (IMAP)  │
       └─────────┘   └─────────┘   └─────────┘

Self-Hosting

Docker Compose

services:
  chatwoot-web:
    image: chatwoot/chatwoot:latest
    command: bundle exec rails s -b 0.0.0.0 -p 3000
    ports:
      - "3000:3000"
    environment:
      SECRET_KEY_BASE: your-secret-key
      FRONTEND_URL: http://localhost:3000
      DATABASE_URL: postgresql://chatwoot:chatwoot@postgres:5432/chatwoot
      REDIS_URL: redis://redis:6379
      RAILS_ENV: production
    depends_on:
      - postgres
      - redis

  chatwoot-worker:
    image: chatwoot/chatwoot:latest
    command: bundle exec sidekiq
    environment:
      SECRET_KEY_BASE: your-secret-key
      DATABASE_URL: postgresql://chatwoot:chatwoot@postgres:5432/chatwoot
      REDIS_URL: redis://redis:6379
    depends_on:
      - postgres
      - redis

  postgres:
    image: postgres:16
    environment:
      POSTGRES_USER: chatwoot
      POSTGRES_PASSWORD: chatwoot
      POSTGRES_DB: chatwoot
    volumes:
      - pg-data:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    volumes:
      - redis-data:/data

volumes:
  pg-data:
  redis-data:

Key Features

Chat Widget Integration

<!-- Add to your website -->
<script>
  (function(d,t) {
    var BASE_URL="http://localhost:3000";
    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>

Automation Rules

Set up automatic workflows:

  • Auto-assign: Route conversations to specific agents/teams based on channel, content, or customer attributes
  • Auto-label: Tag conversations automatically based on keywords or patterns
  • SLA Alerts: Notify agents when response time thresholds are approaching
  • Auto-resolve: Close inactive conversations after a set period

Canned Responses

Pre-built reply templates for common questions:

/greeting  → "Hi there! Thanks for reaching out. How can I help?"
/pricing   → "Our plans start at $X/month. Here's a detailed comparison: [link]"
/refund    → "I understand. I've initiated a refund for your order #..."

API Integration

# Create a contact
curl -X POST http://localhost:3000/api/v1/accounts/1/contacts 
  -H "api_access_token: YOUR_TOKEN" 
  -H "Content-Type: application/json" 
  -d '{"name": "John Doe", "email": "john@example.com"}'

# Send a message
curl -X POST http://localhost:3000/api/v1/accounts/1/conversations/1/messages 
  -H "api_access_token: YOUR_TOKEN" 
  -d '{"content": "Hello! How can I help?", "message_type": "outgoing"}'

Chatwoot vs Alternatives

Feature Chatwoot Intercom Zendesk Freshdesk
Open Source Yes No No No
Self-hosted Yes No No No
Live chat Yes Yes Yes Yes
WhatsApp Yes Add-on Add-on Add-on
Email Yes Yes Yes Yes
AI bot Integration Built-in Built-in Built-in
Pricing Free (self-host) $74/seat/mo $55/agent/mo $15/agent/mo

常见问题

Q: Chatwoot 适合多大规模的客服团队? A: 从 1 人到 100+ 人的客服团队都适用。自托管版本没有座位数限制。大团队建议使用 Kubernetes 部署以获得更好的扩展性。

Q: WhatsApp Business API 如何集成? A: Chatwoot 支持 WhatsApp Cloud API(Meta 官方)和第三方 BSP(如 360dialog)。你需要在 Meta Business 平台申请 WhatsApp Business API 访问权限,然后在 Chatwoot 中配置 Channel。

Q: 可以接入 AI 客服机器人吗? A: 可以。Chatwoot 支持 Dialogflow CX/ES 和 Rasa 的原生集成。也可以通过 Webhook 接入任何自定义 AI 服务(如 OpenAI、Claude)来实现智能回复。

来源与致谢

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets