Skip to main content
GOWA (Go WhatsApp Web Multi-Device API) can be installed in multiple ways depending on your environment and requirements.

System Requirements

Platform Support

  • Linux (x86_64, ARM64)
  • macOS (Intel, Apple Silicon)
  • Windows (x86_64 via WSL)

Dependencies

  • Docker (recommended) or
  • Go 1.24.0+ (for building from source)
  • FFmpeg (for media processing)
Docker is the recommended installation method as it includes all dependencies and works consistently across platforms.

Installation Methods

Post-Installation

After installation, you’ll need to:
1

Connect your WhatsApp account

Visit http://localhost:3000/app/login and scan the QR code with WhatsApp on your phone.
2

Test the connection

curl http://localhost:3000/app/status
3

Send a test message

curl -X POST http://localhost:3000/send/message \
  -H "Content-Type: application/json" \
  -d '{"phone": "628123456789", "message": "Test message"}'

Configuration Options

All installation methods support the same configuration options. See the Configuration Guide for detailed documentation.

Command-Line Flags

--port=3000              # Server port (default: 3000)
--host=0.0.0.0           # Host address (default: 0.0.0.0)
--debug=true             # Enable debug logging
--os="Chrome"            # Device name in WhatsApp
--basic-auth=user:pass   # Basic authentication
--autoreply="Message"            # Auto-reply message
--auto-mark-read=true            # Mark incoming messages as read
--auto-reject-call=true          # Reject incoming calls
--auto-download-media=true       # Auto-download media files
--presence-on-connect=unavailable # Presence: available|unavailable|none
--webhook="https://webhook.com/handler"  # Webhook URL(s)
--webhook-secret="secret"                # HMAC secret for webhooks
--webhook-events="message,message.ack"   # Event whitelist
--webhook-insecure-skip-verify=false     # Skip TLS verification
--base-path="/gowa"              # Subpath deployment
--account-validation=false       # Disable account validation
--trusted-proxies="0.0.0.0/0"    # Trusted proxy IPs

Environment Variables

All command-line flags have corresponding environment variables. See the Environment Variables guide for the complete list. Example:
APP_PORT=3000
APP_DEBUG=true
WHATSAPP_AUTO_REPLY="Thank you for your message"
WHATSAPP_WEBHOOK=https://webhook.com/handler

Troubleshooting

If you get permission errors with Docker volumes:
# Fix volume permissions
docker run --rm -v whatsapp:/data alpine chown -R 1000:1000 /data
On macOS, if you get CGO errors:
export CGO_CFLAGS_ALLOW="-Xpreprocessor"
Add this to your ~/.zshrc or ~/.bash_profile to make it permanent.
Ensure FFmpeg is installed and in your PATH:
# Check FFmpeg
ffmpeg -version

# Linux: Install FFmpeg
sudo apt install ffmpeg

# macOS: Install FFmpeg
brew install ffmpeg
Change the port using --port flag or APP_PORT environment variable:
./whatsapp rest --port=8080
  • Check your internet connection
  • Verify firewall settings allow outbound HTTPS (port 443)
  • Try reconnecting: curl http://localhost:3000/app/reconnect
  • Check logs for errors

Next Steps

Quick Start

Send your first message in 5 minutes

Configuration

Configure GOWA for your use case

Webhooks

Receive incoming messages

API Reference

Explore all API endpoints

Additional Resources

Build docs developers (and LLMs) love