Gw self-host Chatwoot buat support system di salah satu project client — toko online dengan 200-300 tiket per bulan. Selama 6 bulan terakhir, WhatsApp channel jadi yang paling aktif karena mayoritas pelanggan di Indonesia lebih nyaman chat dibanding email atau form. Dan honestly? Setup-nya gak sesulit yang lo bayangin.
Artikel ini breakdown step-by-step dari instalasi, konfigurasi WhatsApp integration, setup automation campaign via API, sampe cost comparison dengan alternatif kayak Zendesk atau Freshdesk.
Kenapa Chatwoot?
Chatwoot adalah open-source customer engagement platform — alternatif self-hosted buat Zendesk, Freshdesk, atau Intercom. Beberapa alasan kenapa gw pilih Chatwoot:
- 100% self-hosted — data pelanggan lo di server lo sendiri. Gak ada data yang lewat third-party support platform
- WhatsApp integration — support WhatsApp Cloud API (Meta) dan WhatsApp Business API via 3rd party provider
- Multi-channel �� Email, Website live chat, Facebook Messenger, Twitter DM, Telegram, semuanya dalam satu dashboard
- Campaign & automation — Drip campaign, auto-reply, assignment rules tanpa perlu coding (tapi bisa di-extend via API)
- Biaya �� dibanding Zendesk yang $55/agent/bulan, Chatwoot Cuma bayar VPS + WhatsApp API usage
Prerequisites
Yang lo butuhin sebelum mulai:
- VPS dengan minimal 2GB RAM (recommended 4GB) — gw pake VPS 4GB sebulan ~$12
- Docker dan Docker Compose terinstall
- Domain untuk Chatwoot (misal: support.toolkuy.com)
- WhatsApp Business Account — daftar di Facebook Business Suite
- Meta Developer Account untuk WhatsApp Cloud API
Step 1: Deploy Chatwoot dengan Docker
Chatwoot punya official Docker Compose setup. Ikutin cara resmi dari repo mereka atau pake versi yang udah gw modif buat production:
# Clone repo
git clone https://github.com/chatwoot/chatwoot
cd chatwoot
# Copy env example
cp .env.example .env
# Generate secret keys
echo "SECRET_KEY_BASE=$(openssl rand -hex 64)" >> .env
echo "FRONTEND_URL=https://support.toolkuy.com" >> .env
echo "POSTGRES_PASSWORD=$(openssl rand -hex 32)" >> .env
echo "REDIS_PASSWORD=$(openssl rand -hex 32)" >> .env
# Setup docker-compose.production.yaml
docker compose -f docker-compose.production.yaml up -d
# Setup database
docker compose -f docker-compose.production.yaml run --rm rails bundle exec rails db:setup
# Create admin user
docker compose -f docker-compose.production.yaml run --rm rails bundle exec rails runner "Account.first.administrators.create!(name: 'Admin', email: '[email protected]', password: 'your-secure-password')"
Pro tip: pasang di belakang reverse proxy (Nginx/Caddy) dengan HTTPS. Gw pake Caddy — auto SSL, config simpel:
# Caddyfile
support.toolkuy.com {
reverse_proxy localhost:3000
}
Step 2: Setup WhatsApp Integration
Ini bagian yang paling tricky. Chatwoot support WhatsApp integration via dua metode:
Opsi A: WhatsApp Cloud API (Meta) — Gratis, Tapi Approval
Ini opsi resmi dari Meta. Lo daftar WhatsApp Business Account, verifikasi business, lalu setup webhook ke Chatwoot:
# Di Chatwoot Settings > Inboxes > WhatsApp Cloud API
# Lo perlu:
# - Phone Number ID (dari Meta Business Suite)
# - WhatsApp Business Account ID
# - Permanent Access Token (bikin di Meta Developer Console)
# Webhook URL:
# https://support.toolkuy.com/webhooks/whatsapp/{inbox_id}
# Verify token: set di Chatwoot sama di Meta Developer Console
Kelebihan: gratis, resmi dari Meta, gak perlu third-party. Kekurangan: butuh WhatsApp Business Account yang terverifikasi — di Indonesia prosesnya bisa 1-2 minggu tergantung dokumen bisnis.
Opsi B: 3rd Party Provider (WATI / WANotifier)
Kalau approval Meta terlalu lama atau lo butuh multiple numbers di satu akun, pake third-party provider. Chatwoot support beberapa provider termasuk WANotifier yang paling gampang setup-nya:
# WANotifier setup:
# 1. Daftar di wanotifier.com, hubungkan nomor WhatsApp lo via QR
# 2. Dapetin API key dari dashboard WANotifier
# 3. Di Chatwoot: Settings > Inboxes > WANotifier
# 4. Masukin API key + Webhook URL
Biaya WANotifier: ~$5-15/bulan tergantung volume. Lebih cepet setup-nya — cukup scan QR Code dari WhatsApp Web, gak perlu verifikasi business.
Step 3: Configurasi Automation & Assignment
Tim support lo perlu workflow yang bener. Gw setup beberapa automation rules buat handle tiket secara otomatis:
Canned Responses (Template Balasan Cepat)
Buat template buat pertanyaan yang sering muncul:
# Via Chatwoot Settings > Canned Responses
!status: "Halo! Terima kasih sudah menghubungi kami.
Pesanan dengan nomor {{order_id}} sedang dalam proses.
Estimasi pengiriman: 2-3 hari kerja."
!resi: "Berikut nomor resi pesanan Anda: {{tracking_number}}.
Cek status di: https://cekresi.com/{{courier}}/{{tracking_number}}"
Auto-assignment Rules
Rules yang solusi yang umum dipake di production:
- Tiket dengan keyword "bayar", "transfer", "pembayaran" → auto-assign ke agent finance team
- Tiket dari pelanggan dengan >5 order → assign ke senior agent
- Jam 22:00-06:00 → auto-reply "Kami akan balas besok pagi" + mark as pending
Campaign & Drip Messages
Chatwoot punya campaign feature. Gw setup campaign follow-up otomatis setelah tiket selesai:
# Campaign content (one-off, 24 jam setelah tiket selesai):
"Halo {{contact_name}}! 👋
Kami lihat tiket Anda tentang {{ticket_topic}} sudah selesai.
Mohon kasih rating ya — feedback Anda bantu kami improve layanan.
Balas 'OK' untuk rating 5 ⭐ atau 'NGOMONG' untuk kirim pesan langsung ke support."
Cost Comparison: Chatwoot vs Zendesk
| Komponen | Chatwoot (Self-Hosted) | Zendesk Suite |
|---|---|---|
| Biaya bulanan | VPS ~$12 + WhatsApp ~$5 = $17 | $55/agent × 3 agent = $165 |
| Setup awal | 1-2 jam (IT skill needed) | Instant (SaaS) |
| Data ownership | 100% di VPS lo | Di server Zendesk |
| Customization | Full (open source) | Terbatas plan |
| WhatsApp channel | Ada (via Cloud API / 3rd party) | Bayar tambahan |
| Maintenance | Lo urus sendiri (update, backup, monitoring) | Zendesk handle |
Buat tim support 3 orang, Chatwoot hemat ~$148/bulan — hampir 90% lebih murah. Tapi ada tradeoff: lo musti siap handle maintenance sendiri. Update Chatwoot tiap bulan, backup database, monitor disk usage.
Backup Strategy
Jangan lupa backup — data support pelanggan adalah aset kritis:
#!/bin/bash
# backup-chatwoot.sh — Jalanin daily via cron + sync ke S3
BACKUP_DIR="/var/backups/chatwoot"
mkdir -p $BACKUP_DIR
# Backup PostgreSQL
docker compose -f docker-compose.production.yaml exec -T postgres pg_dump -U postgres chatwoot_production | gzip > $BACKUP_DIR/chatwoot-db-$(date +%Y%m%d).sql.gz
# Backup Redis
docker compose -f docker-compose.production.yaml exec -T redis redis-cli SAVE
docker cp chatwoot-redis-1:/data/dump.rdb $BACKUP_DIR/chatwoot-redis-$(date +%Y%m%d).rdb
# Upload ke S3-compatible storage
s3cmd sync $BACKUP_DIR/ s3://chatwoot-backups/
# Hapus backup lebih dari 30 hari
find $BACKUP_DIR -mtime +30 -delete
Monitoring & Performance
Chatwoot di VPS 4GB dengan 3 concurrent agents dan ~10K conversations/bulan: idle ~400MB RAM, CPU <5%. Load naik pas jam kerja (08:00-17:00) ke 20-30% CPU. Gw pasang monitoring dengan Plausible + Uptime Kuma buat track kalo Chatwoot down atau slow.
Notifikasi penting: disk usage. Chatwoot nyimpen attachment (gambar, file) di Redis/S3 — pastiin lo purge attachment lama tiap minggu atau pake S3-compatible storage biar disk VPS gak penuh.
Kesimpulan
Self-host Chatwoot cocok buat: bisnis dengan >100 tiket/bulan, concern privacy, dan punya in-house DevOps skill (atau lo sendiri mau belajar). Kalau cuma 10-20 tiket per bulan — mending pake WhatsApp Business langsung + Google Spreadsheet. Lebih simple, zero maintenance.
Buat yang mau explore self-hosted tools lain, cek juga SearXNG buat privacy search engine atau Vaultwarden buat password manager — semua bisa di-VPS dengan modal yang sama.
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬