Apps
On this page
🧩 Apps are built-in connections that integrate WAHA with other services in a few steps.
WAHA Team fully supports 🧩 Apps.
🧩 Apps vs 🔌 Integrations
- 🧩 Apps are built-in WAHA connections supported by the WAHA team
- 🔌 Integrations are external ecosystem tools that may or may not be directly supported by the WAHA team.
Available Apps
Apps available to connect:
- ChatWoot - use your WhatsApp in ChatWoot CRM
Configuration
To use 🧩 Apps , you need to configure the following environment variables in addition to the standard ⚙️ Configuration:
Apps:
WAHA_APPS_ENABLED=True
- Enables the 🧩 Apps functionalityWAHA_PUBLIC_URL=https://w.example.com
— the publicly available link to the dashboard (use this ifWAHA_BASE_URL
is set to an internal address for Docker).REDIS_URL=redis://:redis@redis:6379
- Specifies the Redis URL required for processing background jobsWHATSAPP_DEFAULT_ENGINE=GOWS
- Sets the recommended engine for reliable WhatsApp automationWAHA_API_KEY_PLAIN=0000000000000000
- plain password required for Apps in environment variables- It’s a quick solution, we’re working on removing it so you can use
sha512
version as inWAHA_API_KEY
- It’s a quick solution, we’re working on removing it so you can use
ChatWoot App:
WAHA_APPS_CHATWOOT_LANGUAGES_FOLDER=/app/.languages
- folder for additional languages (if language exists it’ll override templates in the original templates)RACK_TIMEOUT_SERVICE_TIMEOUT=60
— increases the default Rack timeout to 60s (default is 15s).
Jobs:
You can configure a background worker http://localhost:3000/jobs
WAHA_APPS_JOBS_CONCURRENCY=50
- Maximum number of jobs processed concurrentlyWAHA_APPS_JOBS_REMOVE_ON_COMPLETE_AGE=259200
- Remove completed jobs after 3 days (in seconds)WAHA_APPS_JOBS_REMOVE_ON_COMPLETE_COUNT=1000
- Maximum number of completed jobs to keepWAHA_APPS_JOBS_REMOVE_ON_FAIL_AGE=2678400
- Remove failed jobs after 31 days (in seconds)WAHA_APPS_JOBS_REMOVE_ON_FAIL_COUNT=1000
- Maximum number of failed jobs to keep
Note: *_AGE
parameters are specified in seconds by default.
Under the hood it uses bullmq.
How it works
Apps connect WhatsApp with external services using Redis as a message broker.
Apps architecture consists of:
- HTTP API, Worker, and Session on WAHA side
- Redis acts as the central message broker.
- External Services, like ChatWoot
WhatsApp to External Service Flow:
- When a new message arrives in WhatsApp, WAHA captures it and publishes a message event to Redis.
- The Worker then picks up this event, processes it, and forwards the message to ChatWoot via its API.
- After successful delivery, the job is marked as processed in Redis.
External Service to WhatsApp Flow:
- When a new message is created in ChatWoot, it calls the WAHA API webhook.
- The API saves this job to the Redis queue, from which the Worker retrieves it.
- The Worker then requests the WAHA API to send the message to WhatsApp.
- After WhatsApp confirms delivery, the API acknowledges the Worker, which then marks the job as processed in Redis.
You can use the WAHA Jobs Dashboard at http://localhost:3000/jobs for monitoring Worker and it’s jobs:
Apps SDK
This section is currently under development. Check back soon for detailed information about the integration architecture and workflow.