Chatwoot is open source, which means you have a genuine choice: pay for the hosted version, or run it yourself on a server you control. Both are legitimate. The decision is usually made for the wrong reason – price – and regretted for a different one.
Here is the actual trade-off.
The thing that is not a trade-off
Self-hosting is not free. It converts a subscription into infrastructure cost plus your own time, and the time is the larger number.
A Chatwoot instance needs a Rails application, a PostgreSQL database, Redis, a background worker, and a reverse proxy terminating TLS. None of that is exotic, and the official Docker setup assembles it for you. But it is a stateful service carrying your customer conversations, which means it also needs backups you have tested, an upgrade path you have rehearsed, and monitoring that tells you before your customers do.
If nobody on the team owns that, the hosted version is cheaper no matter what the invoice says.
Where the two genuinely differ
| Chatwoot Cloud | Self-hosted | |
|---|---|---|
| Cost shape | Per agent, per month | Server + your time, flat in agent count |
| Where data lives | Their infrastructure | Any jurisdiction you choose |
| Upgrades | Done for you | Yours to schedule and test |
| Database access | None | Full |
| Platform API / multi-account | Limited | Available |
| Custom domain & branding | Depends on plan | Entirely yours |
| Who is on call | Them | You |
Four reasons to self-host that actually hold up
1. Data residency is a requirement, not a preference
If a contract, a regulator or a client’s security review dictates which country the conversation data sits in, self-hosting answers it in one sentence. Hosted plans cannot.
2. You are reselling it
If you are an agency putting multiple clients on one installation, self-hosting is the only version that makes sense. You need your own domain, your own branding, and programmatic control over creating accounts, users and inboxes. That is what the Platform API is for, and it belongs to the person running the instance.
Per-agent pricing also stops working as a business model once you are the one charging.
3. Your agent count is large
Hosted pricing scales with seats. Infrastructure cost does not, at least not at the same slope. There is a crossover point where a modest server supports a team whose hosted bill would be several times the hardware.
Work out where your own crossover is rather than assuming it. Include the hours someone will spend maintaining it, priced honestly.
4. You need the database
Direct SQL access changes what reporting you can build, what you can migrate in from an old system, and what you can join against your own product data. If your plans involve analytics the dashboard does not offer, this is decisive.
Three reasons to stay on Cloud
- Your team is small. At a handful of agents the subscription is less than the cost of one afternoon of someone’s attention per month.
- Support is a live channel. If customers are waiting on replies right now, an outage you have to fix yourself is a worse outage.
- Nobody owns infrastructure. A self-hosted instance with no named owner will sit three versions behind within a year. That is a security position, not just a tidiness problem.
What self-hosting actually commits you to
If you go this way, these are the jobs that come with it. None are hard individually; the point is that they are ongoing.
- Backups you have restored at least once. An untested backup is a belief, not a backup. The Postgres database is the part that matters; uploaded attachments are the part people forget.
- A staging instance. Chatwoot releases regularly and migrations run on upgrade. Testing the upgrade somewhere that is not production is the difference between a maintenance window and an incident.
- Outbound email that arrives. Agent invitations, password resets and email-channel replies all depend on SMTP being configured properly, with SPF and DKIM aligned. This is the most common thing to be quietly broken.
- Monitoring. At minimum: is the app responding, is the worker processing, is the disk filling. Attachments and Postgres grow steadily and a full disk takes the whole instance down.
- TLS that renews itself. Expired certificates break webhooks silently, which means inbound messages stop arriving and nothing visibly alerts you.
The honest summary
Choose Cloud if your team is small, support is a live channel, and nobody wants to be on call for it. Choose self-hosted if data residency is a requirement, you are reselling to clients, your agent count makes the subscription expensive, or you need the database.
Do not choose self-hosted because it looks free. It is cheaper, often substantially, but only once someone has agreed to own it.
We deploy and maintain self-hosted Chatwoot instances, including multi-account setups for agencies, WhatsApp Cloud API integration, backups and upgrades. If you want the control without owning the on-call rota, get in touch.
