---
title: "Deploy Evolution API 2.3 + Chatwoot 4.19 + n8n 2.47"
description: "WhatsApp AI support desk: n8n bot answers, agents take over in Chatwoot"
category: "Bots"
url: https://railway.com/deploy/evolution-api-23-chatwoot-419-n8n-247
---

# Deploy Evolution API 2.3 + Chatwoot 4.19 + n8n 2.47

WhatsApp AI support desk: n8n bot answers, agents take over in Chatwoot

**[Deploy Evolution API 2.3 + Chatwoot 4.19 + n8n 2.47 on Railway](https://railway.com/template/evolution-api-23-chatwoot-419-n8n-247)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/evolution-api-23-chatwoot-419-n8n-247/manifest.json

- **Creator:** My Projects
- **Category:** Bots

## Template content

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

- **Image:** pgvector/pgvector:0.8.7-pg16

### Chatwoot Redis https://devicons.railway.app/i/redis.svg

- **Image:** redis:8.2.11-alpine
- **Start command:** `/bin/sh -c "exec redis-server --requirepass $REDIS_PASSWORD --appendonly yes --dir /data"`

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

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

### n8n-worker https://cdn.jsdelivr.net/gh/selfhst/icons/svg/n8n.svg

- **Image:** n8nio/n8n:2.47.3
- **Start command:** `tini -- n8n worker`
- **Health check:** /healthz

### n8n https://cdn.jsdelivr.net/gh/selfhst/icons/svg/n8n.svg

- **Image:** n8nio/n8n:2.47.3
- **Start command:** `/bin/sh -c "printenv N8N_RUN_SH > /tmp/run.sh && exec sh /tmp/run.sh"`
- **Health check:** /healthz
- **Public domain:** Yes

### n8n-runner https://cdn.jsdelivr.net/gh/selfhst/icons/svg/n8n.svg

- **Image:** n8nio/runners:2.47.3

### Evolution API https://avatars.githubusercontent.com/u/136080052?v=4

- **Image:** evoapicloud/evolution-api:v2.3.7
- **Health check:** /
- **Public domain:** Yes

### Evolution Redis https://devicons.railway.app/i/redis.svg

- **Image:** redis:8.10
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --appendonly yes --maxmemory-policy noeviction --dir $RAILWAY_VOLUME_MOUNT_PATH"`

### n8n Redis https://devicons.railway.app/i/redis.svg

- **Image:** redis:8.10
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --appendonly yes --maxmemory-policy noeviction --dir $RAILWAY_VOLUME_MOUNT_PATH"`

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

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

### Chatwoot https://cdn.jsdelivr.net/gh/selfhst/icons/svg/chatwoot.svg

- **Image:** chatwoot/chatwoot:v4.19.1-ce
- **Start command:** `/bin/sh -c "printenv CHATWOOT_RUN_SH > /tmp/run.sh && exec sh /tmp/run.sh"`
- **Health check:** /api
- **Public domain:** Yes

## Documentation

# Deploy and Host Evolution API + Chatwoot + n8n on Railway

Evolution API + Chatwoot + n8n is a WhatsApp AI support desk. Evolution API connects a WhatsApp number by scanning a QR code, like WhatsApp Web, with no Meta Business approval. An n8n workflow, such as an AI agent with your docs, answers each message. Every conversation, including the bot's answers, is mirrored into Chatwoot, where your agents read along and take over.

## About Hosting Evolution API + Chatwoot + n8n

Evolution API keeps WhatsApp sessions open and exposes them as a REST API with a web manager. One instance can use two of its integrations at once: n8n gets each incoming message on a webhook and its `output` goes back to the chat, and Chatwoot gets a copy of every message in an inbox, so agent replies go back to WhatsApp. Chatwoot needs PostgreSQL with pgvector, Redis and Sidekiq. n8n runs in queue mode, with a worker and a task runner.

This template deploys all three on Railway's private network, each app with its own PostgreSQL and Redis. Logins, the Chatwoot API token and every private address are created at deploy time and filled in as variables.

## Common Use Cases

- AI agent answers WhatsApp customers; agents see every chat in Chatwoot
- Human takeover: an agent reply in Chatwoot is designed to pause the bot for that contact
- n8n hands a chat to a person: label, assign or note through the Chatwoot API
- Lead capture and order updates from n8n workflows
- Several WhatsApp numbers, each with its own inbox and workflow

## Dependencies for Evolution API + Chatwoot + n8n Hosting

- PostgreSQL 18 (Evolution API, n8n) and PostgreSQL 16 with pgvector (Chatwoot)
- Redis (one per app: Evolution cache, Chatwoot jobs, n8n queue)
- n8n worker and task runner (official images, same version as n8n)

### Deployment Dependencies

- Evolution API: https://github.com/evolution-foundation/evolution-api
- Chatwoot: https://github.com/chatwoot/chatwoot
- n8n: https://github.com/n8n-io/n8n
- Docs: https://doc.evolution-api.com, https://developers.chatwoot.com, https://docs.n8n.io

### Implementation Details

**What you set:** `ADMIN_EMAIL` (Chatwoot) and `N8N_INSTANCE_OWNER_EMAIL` (n8n), the emails you log in with.

**After deploy:**

1. Log in to Chatwoot with `ADMIN_EMAIL` / `ADMIN_PASSWORD`, and to n8n with `N8N_INSTANCE_OWNER_EMAIL` / `N8N_OWNER_PASSWORD`.
2. In n8n, build a workflow: Webhook (POST, Basic Auth, respond with the Respond to Webhook node), your logic, then Respond to Webhook with `{"output": "reply"}`. Publish it.
3. Open `https:///manager` with `AUTHENTICATION_API_KEY` and create a **Baileys** instance with a hard-to-guess name.
4. **Integrations → Chatwoot:** paste `CHATWOOT_URL`, account `1` and `CHATWOOT_TOKEN` from the Evolution API variables, and turn on Auto create. Evolution API creates the inbox.
5. **Integrations → n8n:** webhook URL = `PRIVATE_WEBHOOK_URL` of n8n plus your path, your basic auth, trigger all, **Stop bot from me** on.
6. Scan the QR code, or request a pairing code with `GET /instance/connect/?number=`.

Give a chat back to the bot with `POST /n8n/changeStatus/` and `{"remoteJid": "...", "status": "opened"}`.

**This template:**

- Pins Evolution API 2.3.7 (newer images need a license activation), Chatwoot 4.19.1 CE and n8n 2.47.3
- Creates the Chatwoot admin, its API token and the n8n owner at deploy time, and closes Chatwoot's onboarding page
- Turns on only the n8n and Chatwoot integrations in Evolution API
- Puts private URLs and keys for Evolution API, Chatwoot and n8n in variables, ready to paste
- Runs n8n in queue mode with a worker and an external task runner
- Protects every public service: Evolution API key, Chatwoot and n8n logins; workers and databases stay private

**Notes:** In Evolution API 2.3.7, Chatwoot's callback `/chatwoot/webhook/` has no API-key check, so keep instance names secret. The built-in EVOLUTION test channel's `/webhook/evolution` has no API-key check either, so production bots belong on WHATSAPP-BAILEYS instances. Send the n8n basic-auth password as `basicAuthPass`. Never change `SECRET_KEY_BASE`, `ACTIVE_RECORD_ENCRYPTION_*` or `N8N_ENCRYPTION_KEY` after the first deploy. Tested on 2026-11-10 with simulated messages: the bot answered, and its replies showed up in the Chatwoot conversation. An agent reply paused the bot in a simulated test where the contact and reply numbers matched; this is not yet confirmed with a paired phone. WhatsApp may ban numbers that send bulk or unsolicited messages. Evolution API, Chatwoot and n8n are not affiliated with WhatsApp or Meta.

## Why Deploy Evolution API + Chatwoot + n8n 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 Evolution API + Chatwoot + n8n on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


## Similar templates

- [Telegram JavaScript Bot](https://railway.com/deploy/5lRkWa) — A template for Telegram bot in JavaScript using grammY
- [Cobalt Tools [Updated Oct ’26]](https://railway.com/deploy/cobalt) — Cobalt Tools [Oct ’26] (Media Downloader, Converter & Automation) Self Host
- [Telegram Gateway](https://railway.com/deploy/railway-telegram-gateway) — Multi-bot Telegram webhook gateway with WebSocket event streaming

Open this page in a browser: https://railway.com/deploy/evolution-api-23-chatwoot-419-n8n-247
