---
title: "Deploy Chatwoot — Self-Hosted Intercom Alternative"
description: "Self-host Chatwoot: omnichannel support inbox. No $39/seat Intercom fees."
category: "Automation"
url: https://railway.com/deploy/chatwoot-intercom-alternative
---

# Deploy Chatwoot — Self-Hosted Intercom Alternative

Self-host Chatwoot: omnichannel support inbox. No $39/seat Intercom fees.

**[Deploy Chatwoot — Self-Hosted Intercom Alternative on Railway](https://railway.com/template/chatwoot-intercom-alternative)**

- **Creator:** SilverBanana
- **Category:** Automation
- **Total deploys:** 4

## Template content

### Valkey https://valkey.io/img/valkey-logo-og.png

- **Image:** valkey/valkey:latest

### Chatwoot https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/chatwoot.svg

- **Source:** railwayapp-templates/chatwoot
- **Public domain:** Yes

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

## Documentation

# Deploy and Host Chatwoot on Railway

![Chatwoot unified inbox dashboard](https://res.cloudinary.com/asset-cloudinary/image/upload/v1773254106/chatwoot_dashboard_tyzipp.png)

Chatwoot is the open-source customer support platform with **22k+ GitHub stars** and 50,000+
self-hosted production installations — a unified inbox for live chat, email, WhatsApp,
Instagram, Facebook, Telegram, Line, and SMS, all from a single dashboard. MIT licensed,
Sentry SDK compatible, and fully self-hostable.

**Intercom starts at $39/seat/month. Zendesk at $19/seat/month. Freshdesk at $15/seat/month.**
Chatwoot on Railway costs ~$10–20/month flat for your entire team with no per-seat pricing
and full ownership of every conversation and customer record.

---

## What This Template Deploys

| Service | Purpose |
|---|---|
| **Chatwoot Web** | Rails/Puma web server — handles all HTTP traffic, WebSocket connections, and the agent dashboard UI on port `3000` |
| **Sidekiq** | Background worker — email delivery, avatar fetching, scheduled tasks, and event dispatch via shared Redis queue |
| **pgvector PostgreSQL** | Primary database with `vector` extension — conversations, contacts, inboxes, teams, and AI search features |
| **Redis 8.2.1** | Sidekiq job queue and ActionCable pub/sub backend for real-time conversation updates |

Web and Sidekiq share the same Docker image but run as separate Railway services.`SECRET_KEY_BASE` is shared automatically via Railway reference variables.

---

## About Hosting Chatwoot

Running Chatwoot in production requires coordinating four services — Rails web server, Sidekiq
worker, PostgreSQL with the pgvector extension, and Redis — with shared encryption keys,
pre-deploy database migrations, and a public HTTPS endpoint for the agent dashboard and chat
widget. Without a managed host, you're configuring Docker Compose, SSL, shared secrets, and
migration scripts manually.

Railway handles all of it — pre-deploy migrations, auto-generated shared encryption keys,
and private networking across all four services.

Typical cost: **~$10–20/month** on Railway's Hobby plan. Intercom costs $39/seat/month —
$195/month for a 5-agent team. Zendesk is $95/month. Chatwoot stays flat whether you have
2 agents or 20.

---

## Deploy in Under 5 Minutes

1. Click **Deploy on Railway** — all four services build automatically (~3–5 minutes)
2. Set `FRONTEND_URL` to your Railway Chatwoot web service public domain
3. Add SMTP credentials (`SMTP_ADDRESS`, `SMTP_PORT`, `SMTP_USERNAME`, `SMTP_PASSWORD`,
   `MAILER_SENDER_EMAIL`) to both the **Web** and **Sidekiq** services for email delivery
4. Open your Railway URL — the Chatwoot onboarding wizard loads immediately
5. Create your admin account, name your workspace, and add your first inbox

No SSH. No Docker Compose. No manual migration scripts.

---

## Common Use Cases

- **Self-hosted Intercom alternative without $39/seat pricing** — unified inbox, live chat
  widget, automated assignment, canned responses, and team collaboration at flat
  infrastructure cost with no per-seat or per-conversation fees
- **Self-hosted Zendesk alternative for GDPR-sensitive businesses** — all conversation
  data stays in your Railway pgvector PostgreSQL instance within your chosen region;
  no data sent to Zendesk's US servers
- **WhatsApp and omnichannel support from one dashboard** — connect WhatsApp Business,
  Instagram, Facebook, Telegram, email, and live chat to a single shared inbox without
  switching between platforms or paying per-channel fees
- **Embedded live chat widget for your product** — copy the Chatwoot JS snippet into your
  site's ``, configure your widget colour and welcome message, and your support team
  sees incoming chats in the shared inbox within seconds
- **SaaS customer support via API and webhooks** — create conversations via REST API,
  trigger Slack notifications on new tickets, and connect Shopify orders to the dashboard
- **Startup replacing Intercom from day one** — omnichannel inbox, help center, CSAT,
  automation rules, and reporting at infrastructure cost only; no per-agent fees

---

## Configuration

| Variable | Required | Description |
|---|---|---|
| `SECRET_KEY_BASE` | ✅ Auto-generated | Rails encryption secret — auto-generated and shared across Web and Sidekiq via reference variable. Never regenerate separately |
| `FRONTEND_URL` | ✅ Required | Your Railway Web service public domain — required for chat widget URLs and email links |
| `DATABASE_URL` | ✅ Auto-injected | pgvector PostgreSQL connection string via Railway reference variable |
| `REDIS_URL` | ✅ Auto-injected | Redis connection URI via Railway reference variable |
| `SMTP_ADDRESS` | Recommended | SMTP host — required for agent invitations, password resets, and email channel |
| `SMTP_PORT` | Recommended | SMTP port — typically `587` (TLS) or `465` (SSL) |
| `SMTP_USERNAME` | Recommended | SMTP username from your email provider |
| `SMTP_PASSWORD` | Recommended | SMTP password from your email provider |
| `MAILER_SENDER_EMAIL` | Recommended | From address for all Chatwoot emails |
| `ACTIVE_STORAGE_SERVICE` | Optional | `local` (default) or `amazon` for S3-compatible file storage |
| `DEFAULT_LOCALE` | Optional | Default language — `en` (default), supports 30+ languages |

&gt; **Set SMTP on both services:** Add all SMTP variables to both the **Web** and **Sidekiq**
&gt; Railway services. Sidekiq handles background email delivery — missing SMTP on Sidekiq
&gt; causes silent email failures. On Railway Hobby, use Resend or Brevo (HTTPS-based SMTP).

---

## Chatwoot vs. Managed Support Platforms

| | Chatwoot (Railway) | Intercom | Zendesk | Freshdesk |
|---|---|---|---|---|
| **Monthly cost** | ~$10–20 flat | $39/seat/month | $19/seat/month | $15/seat/month |
| **5-agent team** | ~$10–20/mo | $195/month | $95/month | $75/month |
| **Per-seat pricing** | ✅ None | ❌ Yes | ❌ Yes | ❌ Yes |
| **Data ownership** | ✅ Your instance | ❌ Intercom servers | ❌ Zendesk servers | ❌ Freshdesk |
| **Open source** | ✅ MIT | ❌ No | ❌ No | ❌ No |
| **WhatsApp** | ✅ Built-in | ✅ Yes | ✅ Yes | ✅ Yes |
| **Live chat widget** | ✅ JS embed | ✅ Yes | ✅ Yes | ✅ Yes |
| **Help center** | ✅ Built-in | ✅ Yes | ✅ Yes | ✅ Yes |
| **CSAT surveys** | ✅ Built-in | ✅ Yes | ✅ Yes | ✅ Yes |
| **Automation rules** | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |

---

## Dependencies for Chatwoot Hosting

- Railway account — Hobby plan (~$10–20/month) for the four-service stack
- SMTP provider for emails — Resend or Brevo recommended (free tiers; raw SMTP is blocked
  on Railway Hobby plan)

### Deployment Dependencies

- [Chatwoot GitHub Repository](https://github.com/chatwoot/chatwoot) — source and releases
- [Chatwoot Self-Hosting Docs](https://www.chatwoot.com/docs/self-hosted) — full config reference
- [Chatwoot Environment Variables](https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables)
- [Resend](https://resend.com) — free SMTP (3,000 emails/month)
- [Brevo](https://www.brevo.com) — free SMTP alternative (300 emails/day)

### Implementation Details

Deploys Chatwoot CE (`chatwoot/chatwoot:latest`) with pgvector PostgreSQL and Redis over
Railway's private network. The Web service pre-deploy command
(`bundle exec rails db:chatwoot_prepare`) runs migrations before each deploy automatically.

Web and Sidekiq share `SECRET_KEY_BASE` and `RAILS_MASTER_KEY` via Railway reference
variables — these keys must be identical. If Sidekiq has different keys it throws
decryption errors. The template handles this automatically; never regenerate them separately.

---

## Frequently Asked Questions

**How much does Chatwoot cost on Railway vs Intercom?**
~$10–20/month flat on Railway's Hobby plan, no per-agent fees. Intercom costs $195/month
for a 5-agent team. Zendesk is $95/month. Freshdesk is $75/month. Chatwoot stays flat
regardless of team size.

**Why does this template use pgvector instead of standard PostgreSQL?**
Chatwoot requires the `vector` PostgreSQL extension for AI search and embedding features.
Railway's standard PostgreSQL template doesn't include it. Using standard Postgres causes
the database setup to fail with a `PG::FeatureNotSupported` error. This template uses
`pgvector/pgvector:pg18` which ships with the extension pre-installed.

**Do I need email configured to use Chatwoot?**
Email is not required to start, but without it agent invitations, password resets, and
email-channel conversations don't work. On Railway Hobby, raw SMTP is blocked — use Resend
(3,000 free emails/month) or Brevo (300 free emails/day) as HTTPS-based SMTP relays.
Add SMTP variables to both the Web and Sidekiq services.

**Does Chatwoot support WhatsApp?**
Yes. Connect WhatsApp Business via the Meta Cloud API (requires a Meta developer account)
or Twilio under Settings → Inboxes → Add Inbox → WhatsApp. Standard WhatsApp message fees
from Meta or Twilio apply separately — Chatwoot itself charges nothing per message.

**Do I lose conversations if Railway redeploys?**
No. All conversations, contacts, and settings are stored in the Railway-managed PostgreSQL
database. For attachment persistence across redeploys, configure S3-compatible storage via
`ACTIVE_STORAGE_SERVICE=amazon`.

**Can I use Chatwoot in production?**
Yes — 50,000+ self-hosted production installations globally. This template uses the official
Docker image with pre-deploy migration hooks and pgvector PostgreSQL.

---

## Why Deploy and Host Chatwoot on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your
infrastructure so you don't have to deal with configuration, while allowing you to vertically
and horizontally scale it.

By deploying Chatwoot on Railway, you get a production-ready omnichannel customer support
platform — live chat, email, WhatsApp, Instagram, Facebook, and Telegram in one inbox — at
~$10–20/month flat with no per-seat fees and full ownership of your customer data.

## Similar templates

- [N8N Main + Worker](https://railway.com/deploy/n8n-main-worker) — Deploy and Host N8N with Inactive worker.
- [Evolution API with n8n](https://railway.com/deploy/evolution-api-with-n8n) — [Jul'26] WhatsApp automation platform using Evolution API, n8n & PostgreSQL
- [Postgres Backup](https://railway.com/deploy/postgres-s3-backups) — Cron-based PostgreSQL backup to bucket storage

Open this page in a browser: https://railway.com/deploy/chatwoot-intercom-alternative
