Deploy Self-Host Chatwoot — Intercom Alternative for $10/Month, Not $39/Seat
Self-host Chatwoot: omnichannel support inbox. No $39/seat Intercom fees.
Valkey
Just deployed
/data
Chatwoot
Just deployed
/app/storage
Just deployed
/var/lib/postgresql/data
Deploy and Host Chatwoot on Railway

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
- Click Deploy on Railway — all four services build automatically (~3–5 minutes)
- Set
FRONTEND_URLto your Railway Chatwoot web service public domain - Add SMTP credentials (
SMTP_ADDRESS,SMTP_PORT,SMTP_USERNAME,SMTP_PASSWORD,MAILER_SENDER_EMAIL) to both the Web and Sidekiq services for email delivery - Open your Railway URL — the Chatwoot onboarding wizard loads immediately
- 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 |
> Set SMTP on both services: Add all SMTP variables to both the Web and Sidekiq > Railway services. Sidekiq handles background email delivery — missing SMTP on Sidekiq > 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 |
| ✅ 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 — source and releases
- Chatwoot Self-Hosting Docs — full config reference
- Chatwoot Environment Variables
- Resend — free SMTP (3,000 emails/month)
- Brevo — 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.
Template Content
