A self-hosted WhatsApp Business microservice (PHP 8 / Symfony) that wraps the Meta WhatsApp Cloud API behind a clean REST interface: send and receive messages, manage conversations, contacts and templates, and forward inbound events to a downstream system via signed webhooks.
- REST API for messages, conversations, contacts, templates (multi-account / multi-team capable)
- Inbound webhook endpoint for the Meta Cloud API (signature verification)
- Outbound webhook forwarding to your own application (token-authenticated)
- Async processing via Symfony Messenger
- Dockerized setup (MariaDB, Traefik-ready)
| Document | Contents |
|---|---|
| API_DOCUMENTATION.md | REST endpoints with curl examples |
| WEBHOOK_DOCUMENTATION.md | Meta inbound webhook handling |
| PARTNER_WEBHOOK_GUIDE.md | Integrating a downstream receiver |
| CLIENT_INTEGRATION_GUIDE.md | Client-side integration |
| DOCKER_README.md | Container setup |
| TRAEFIK-USAGE.md | Reverse-proxy configuration |
cp .env .env.local # set your Meta credentials in .env.local (not committed)
./setup-docker.sh # or: docker compose up -d
docker compose exec app php bin/console doctrine:migrations:migrateConfigure your Meta app's webhook URL to point at
https://<your-domain>/webhook/whatsapp and use the verify token from your
.env.local.
MIT — see LICENSE.