Chatwoot is an open source customer relationship platform built with Ruby and Vue.js. It was written from scratch to allow customer-relations teams to build end-to-end platforms for ticket management and support.
This article looks at Chatwoot's architecture, installation, and key features.
Chatwoot requires the following components to function properly:
- Chatwoot web servers
- Chatwoot workers
- PostgreSQL database
- Email service (e.g., SMTP, SendGrid, Mailgun)
- Object storage (e.g., AWS S3, Azure, Google Cloud Storage, MinIO)
The Chatwoot server and workers are the core components that integrate with everything else. PostgreSQL and Redis are specific, required components.
The other components, like the email server and object storage, are loosely coupled, so you can use any compatible system. Therefore, you could choose any SMTP server, self-hosted or SaaS, as your email service. Similarly, for object storage, you can use public cloud platforms like AWS S3, Azure Blob Store, GCS, or private cloud platforms like MinIO.
Chatwoot is available on common platforms, including Linux virtual machines, Docker, and as a single-click install application on Heroku and CapRover. This how-to looks at the Docker installation process; for other platforms, refer to Chatwoot's documentation.
To begin, ensure Docker Compose is installed on your machine. Then, download the
docker-compose files from Chatwoot's GitHub repo:
# Download the env file template
wget -O .env https://raw.githubusercontent.com/chatwoot/chatwoot/develop/.env.example
# Download the Docker compose template
wget -O docker-compose.yml https://raw.githubusercontent.com/chatwoot/chatwoot/develop/docker-compose.production.yaml
env file and fill in the env variables
POSTGRES_PASSWORD; these will be the passwords for Redis and PostgreSQL, respectively. Then update the same PostgreSQL password in the
Now, prepare PostgreSQL:
docker-compose run --rm rails bundle exec rails db:chatwoot_prepare
docker-compose up -d
You should now be able to access Chatwoot at
Fill in the details on the welcome page to create the admin user. After that, you should land on the Conversations page.
The following are Chatwoot's key features:
Chatwoot supports a wide range of platforms as messaging Channels (including website widgets, Facebook, Twitter, WhatsApp, email, and others). To create an integration, click on the Inboxes button on the left-hand sidebar. Then select the platform you want to integrate with.
Each platform has its own set of human agents, teams, labels, and canned responses. This way, Chatwoot allows a unified interface for talking to customers, but each channel is as customizable as it can be in the background.
Organizations take customer response service-level agreements (SLAs) very seriously—and rightly so. Chatwoot has an integrated dashboard that gives a birds-eye view of the most important metrics, like total messages, response times, resolution times, etc. Administrators can also download reports for specific agents.
Chatwoot also captures contact details from each incoming message and neatly arranges this information on a separate page called Contacts. This ensures all contact details are available for further follow-up or even syncing with an external, full-fledged customer relationship management (CRM) platform.
Channels enable integrations with external messaging systems so that Chatwoot can communicate using these systems. However, what if you want a team to be notified on Slack if there is a new chat message on Chatwoot?
This is where Integration Webhooks come into the picture. This feature allows you to integrate Chatwoot into external systems so that it can send out relevant information.