WhatsApp compte 2 milliards d'utilisateurs. Dans la majeure partie de l'Asie, de l'Amérique latine et de l'Afrique, ce n'est pas seulement une application de messagerie — c'est le canal de vente principal. Les clients d'eCommerce transfrontalier ont besoin de confirmations de commande en portugais, de mises à jour de livraison en hindi et de messages de récupération de panier en arabe. Ils ont besoin de tout cela depuis un seul backend.
La plateforme officielle WhatsApp Business de Meta facture désormais par message distribué, avec des tarifs variant selon le marché et la catégorie de message; les messages de service sont gratuits, et certaines réponses utilitaires sont également gratuites. Pour une agence avec 20 clients envoyant des volumes élevés de messages utilitaires et marketing, les frais Meta peuvent rapidement s'accumuler, avant même toute majoration par un BSP.
L'auto-hébergement réduit le coût variable à zéro. Votre seule dépense est le VPS.
Ce n'est pas théorique. Evolution API (plus de 7 500 étoiles GitHub en 2026) fonctionne en production pour des boutiques eCommerce, des intégrations CRM et des plateformes de chatbots depuis 2023. MultiWA ajoute un constructeur d'automatisations visuel et des réponses automatiques par IA. Les deux tournent dans Docker. Les deux supportent plusieurs sessions WhatsApp depuis un seul serveur.
Ce que vous construisez réellement
Vous ne construisez pas WhatsApp. Vous construisez une passerelle qui s'intercale entre votre backend eCommerce et des sessions WhatsApp Web.
Copiez-collez l'extrait de code FlowZap suivant dans un projet de votre compte FlowZap pour visualiser le diagramme.
clients { # eCommerce Clients
n1: rectangle label:"Client A Backend"
n1.handle(right) -> gateway.n2.handle(left) [label="API Key A"]
n5: rectangle label:"Client B Backend"
n5.handle(right) -> gateway.n2.handle(left) [label="API Key B"]
}
gateway { # WhatsApp Gateway Docker Host
n2: rectangle label:"Nginx Reverse Proxy"
n3: rectangle label:"Evolution API :8080"
n4: rectangle label:"PostgreSQL"
n6: rectangle label:"Redis Queue"
n2.handle(right) -> n3.handle(left)
n3.handle(bottom) -> n4.handle(top)
n3.handle(bottom) -> n6.handle(top)
n3.handle(right) -> wa.n7.handle(left) [label="Route to US session"]
n3.handle(right) -> wa.n8.handle(left) [label="Route to EU session"]
n3.handle(right) -> wa.n9.handle(left) [label="Route to CN session"]
n2.handle(left) -> clients.n1.handle(right) [label="Response"]
n2.handle(left) -> clients.n5.handle(right) [label="Response"]
}
wa { # WhatsApp Sessions
n7: rectangle label:"Session +1 (US)"
n8: rectangle label:"Session +33 (EU)"
n9: rectangle label:"Session +86 (CN)"
n7.handle(left) -> gateway.n3.handle(right) [label="Webhook"]
n8.handle(left) -> gateway.n3.handle(right) [label="Webhook"]
n9.handle(left) -> gateway.n3.handle(right) [label="Webhook"]
}
Chaque client reçoit une clé API limitée à sa session WhatsApp. Votre backend eCommerce envoie une requête POST avec la confirmation de commande. La passerelle l'achemine vers le bon numéro WhatsApp. Les réponses des clients arrivent sous forme de webhooks. Pas de Business Manager Meta ni de vérification d'entreprise requis. Pas de facture par message.
Les outils : tableau comparatif
| Fonctionnalité | Evolution API | MultiWA | Cloud API Officielle |
|---|---|---|---|
| Coût | Gratuit (VPS uniquement) | Gratuit (VPS uniquement) | Par message distribué ; varie selon le marché et la catégorie |
| Vérification d'entreprise | Non requise | Non requise | Obligatoire |
| Approbation de modèles | Non nécessaire | Non nécessaire | Requis pour les messages sortants |
| Multi-session | Oui (instances illimitées) | Oui (profils illimités) | Limite par WABA |
| Format d'API | REST (Express.js) | REST (NestJS/Fastify) | REST (Graph API) |
| Constructeur d'automatisations | Via intégration n8n/Typebot | Glisser-déposer intégré | Via Meta Business Suite |
| Réponses automatiques IA | Via intégration OpenAI/Dify | Base de connaissances RAG intégrée | Via modules complémentaires BSP |
| Base de données | PostgreSQL / MySQL | PostgreSQL | Gérée par Meta |
| File de messages | RabbitMQ, SQS, NATS | Redis + BullMQ | Aucune exposée |
| Risque de bannissement | Oui (protocole non officiel) | Oui (protocole non officiel) | Non (officiel) |
| Badge coche verte | Non | Non | Oui (après vérification) |
| Déploiement Docker | docker compose up -d |
docker compose up -d |
N/A (SaaS) |
| Étoiles GitHub | 7 500+ | 200+ | N/A |
| Licence | Apache 2.0 | MIT | Propriétaire |
Déploiement : Docker Compose en 5 minutes
Voici le chemin Evolution API — l'option la plus éprouvée en production.
Prérequis
- VPS avec 2 Go de RAM (Hetzner CX22 à 4€/mois, Contabo 4 Go à 6€/mois)
- Docker et Docker Compose installés
- Un domaine avec le DNS pointant vers votre VPS (pour les callbacks webhook)
Étape 1 : Cloner et configurer
git clone https://github.com/evolution-foundation/evolution-api cd evolution-api cp .env.example .env
Modifiez le fichier .env avec vos valeurs :
# Obligatoire AUTHENTICATION_API_KEY=your-32-char-random-hex-key # Base de données (PostgreSQL recommandé pour la production) DATABASE_ENABLED=true DATABASE_PROVIDER=postgresql DATABASE_CONNECTION_URI=postgresql://user:***@postgres:5432/evolution # Redis (pour la file d'attente) REDIS_ENABLED=true REDIS_URI=redis://redis:6379 # Webhook (là où votre backend eCommerce écoute) WEBHOOK_BASE_URL=https://your-ecommerce-backend.com/webhooks
Étape 2 : Lancer
docker compose up -d
Trois conteneurs démarrent : evolution-api (port 8080), postgres et redis.
Étape 3 : Créer une session WhatsApp
curl -X POST http://localhost:8080/instance/create \ -H "apikey: your-32-char-random-key" \ -H "Content-Type: application/json" \ -d '{ "instanceName": "client-us-store", "token": "client-specific-token", "webhook": "https://client-a.com/whatsapp-webhook", "webhookByEvents": true }'
La réponse inclut un code QR. Scannez-le avec WhatsApp sur un téléphone enregistré avec le numéro professionnel du client. Session établie.
Étape 4 : Envoyer un message
Copiez-collez l'extrait de code FlowZap suivant dans un projet de votre compte FlowZap pour visualiser le diagramme.
clients { # eCommerce Client
n1: rectangle label:"Client Backend"
n1.handle(right) -> gateway.n2.handle(left) [label="POST /sendText"]
}
gateway { # WhatsApp Gateway
n2: rectangle label:"Nginx + Auth"
n3: rectangle label:"Evolution API"
n4: rectangle label:"PostgreSQL"
n2.handle(right) -> gateway.n3.handle(left)
n3.handle(bottom) -> gateway.n4.handle(top)
n2.handle(left) -> clients.n1.handle(right) [label="200 OK"]
n3.handle(right) -> wa.n5.handle(left) [label="Send msg"]
}
wa { # WhatsApp
n5: rectangle label:"WhatsApp Web"
n6: circle label:"Customer Phone"
n5.handle(right) -> wa.n6.handle(left)
n6.handle(left) -> wa.n5.handle(right)
n5.handle(left) -> gateway.n3.handle(right) [label="Webhook reply"]
}
curl -X POST http://localhost:8080/message/sendText/client-us-store \ -H "apikey: your-32-char-random-key" \ -H "Content-Type: application/json" \ -d '{ "number": "5511999999999", "text": "Your order #4872 has shipped. Track: https://track.client-a.com/4872" }'
Le client de votre client au Brésil reçoit un message WhatsApp provenant du numéro professionnel de la boutique. Aucun frais Meta. Aucune approbation de modèle. Le seul coût est le VPS.
Astuce : Définissez WEBHOOK_BASE_URL dans .env pour pointer vers votre backend eCommerce. Evolution API déclenche des événements MESSAGES_UPSERT à chaque message entrant. Votre backend reçoit les réponses des clients sous forme de requêtes POST JSON.
Architecture multi-tenant pour les agences transfrontalières
C'est ici que l'auto-hébergement surpasse l'API officielle. Avec Meta, chaque client a besoin de son propre compte Business Manager, de la vérification de son numéro de téléphone et de l'approbation de ses modèles — une boucle bureaucratique de 2 à 4 semaines par client.
Avec votre passerelle auto-hébergée :
Copiez-collez l'extrait de code FlowZap suivant dans un projet de votre compte FlowZap pour visualiser le diagramme.
clients { # Client Stores
n1: rectangle label:"US Store (Shopify)"
n2: rectangle label:"BR Store (WooCommerce)"
n1.handle(right) -> gateway.n3.handle(left) [label="key_us"]
n2.handle(right) -> gateway.n3.handle(left) [label="key_br"]
}
gateway { # Gateway VPS
n3: rectangle label:"Nginx + Let's Encrypt"
n4: rectangle label:"Evolution API"
n5: rectangle label:"PostgreSQL"
n6: rectangle label:"Redis"
n3.handle(right) -> n4.handle(left)
n4.handle(bottom) -> n5.handle(top)
n4.handle(bottom) -> n6.handle(top)
n4.handle(right) -> wa.n7.handle(left) [label="Route to US session"]
n4.handle(right) -> wa.n8.handle(left) [label="Route to BR session"]
n4.handle(right) -> wa.n9.handle(left) [label="Route to IN session"]
n3.handle(left) -> clients.n1.handle(right) [label="Response"]
n3.handle(left) -> clients.n2.handle(right) [label="Response"]
}
wa { # WhatsApp Sessions per Country
n7: rectangle label:"+1 US Session"
n8: rectangle label:"+55 BR Session"
n9: rectangle label:"+91 IN Session"
n7.handle(left) -> gateway.n4.handle(right) [label="Webhook"]
n8.handle(left) -> gateway.n4.handle(right) [label="Webhook"]
n9.handle(left) -> gateway.n4.handle(right) [label="Webhook"]
}
Temps de configuration client : 5 minutes. Générez une clé API, créez une instance, scannez un code QR. C'est tout.
Ce que chaque client voit : Un endpoint REST à https://wa-gateway.votredomaine.com. Ils envoient {"number": "...", "text": "..."} avec leur clé API. Ils reçoivent des webhooks pour les messages entrants. Ils ne touchent jamais à la configuration WhatsApp.
Ce que vous vendez : « 42€/mois par boutique — messages WhatsApp illimités. » Avec 10 clients, vous encaissez 420€/mois sur un VPS à 4€.
Astuce : Utilisez des webhooks par instance. Evolution API supporte webhook et webhookByEvents par instance. Les réponses du Client A vont vers https://client-a.com/webhooks, celles du Client B vers https://client-b.com/webhooks. Isolation complète des clients.
Ce qui fonctionne vs. ce qui casse
| ✅ Fonctionne | Pourquoi |
|---|---|
| Confirmations de commande et mises à jour de livraison | Volume élevé, basé sur des modèles, unidirectionnel — parfait pour l'auto-hébergement |
| Messages de récupération de panier | Envoyez un message 2 heures après l'abandon. Aucun modèle nécessaire |
| Confirmations de livraison avec photo | Evolution API supporte l'envoi d'images, de documents, d'audio, de localisation et de contacts |
| Multi-langue par client | L'instance de chaque client envoie dans la langue de ses clients |
| Isolation client via clés API | Chaque instance a son propre token. Le Client A ne peut pas voir les messages du Client B |
| Alertes CI/CD | POST vers votre passerelle depuis GitHub Actions, Uptime Kuma, Grafana |
| ❌ Casse | Pourquoi |
|---|---|
| Support client à haute valeur | Protocole non officiel — les sessions peuvent se déconnecter. Inadapté pour des conversations avec SLA |
| Envois marketing de masse | L'anti-spam de WhatsApp détecte les schémas d'envoi en masse. Les numéros sont bannis |
| Transactions financières | Aucune conformité Meta. Les banques et les processeurs de paiement rejettent les intégrations WhatsApp non officielles |
| Garantie de disponibilité 100% | La bibliothèque Baileys casse occasionnellement lorsque WhatsApp met à jour son protocole web. Heures d'indisponibilité possibles |
| Marque vérifiée coche verte | Seule la Cloud API officielle donne le badge d'entreprise vérifiée. L'auto-hébergé apparaît comme un utilisateur WhatsApp normal |
| Conformité aux politiques WhatsApp | Violation des conditions d'utilisation de Meta. Si détecté, les numéros de téléphone sont bannis. Les agences doivent peser le risque par rapport aux économies |
La vérité crue : L'auto-hébergement de WhatsApp est contraire aux conditions de Meta. Evolution API et MultiWA exploitent le protocole WhatsApp Web. Meta peut — et le fait occasionnellement — bannir des numéros. Pour les confirmations de commande et les mises à jour de livraison (transactionnelles, peu de plaintes), les bannissements sont rares. Pour les envois marketing et le démarchage à froid, les bannissements sont garantis.
Le tableau de décision : quel chemin pour quel client
| Profil client | Auto-hébergé | API Officielle |
|---|---|---|
| Marque D2C faisant 500 commandes/jour, besoin de confirmations | ✅ Oui | Surdimensionné |
| Agence transfrontalière avec 20 petites boutiques | ✅ Oui | 5 000€+/mois en frais Meta |
| Entreprise avec SLA, conformité, exigences d'audit | ❌ Non | Obligatoire |
| Startup testant WhatsApp comme canal de support | ✅ Oui | Peut migrer plus tard |
| Banque, assureur ou industrie réglementée | ❌ Non | Seule option |
| Marketplace nécessitant le badge vert vérifié | ❌ Non | Requis pour la confiance |
La passerelle auto-hébergée : checklist de production étape par étape
1. Choix du VPS
| Fournisseur | Spécifications | Prix | Sessions supportées |
|---|---|---|---|
| Hetzner CX22 | 2 vCPU, 4 Go RAM, 40 Go SSD | 4€/mois | 5–10 |
| Contabo VPS S | 4 vCPU, 8 Go RAM, 50 Go NVMe | 6€/mois | 10–25 |
| DigitalOcean Droplet | 2 vCPU, 4 Go RAM | 21€/mois | 5–10 |
| AWS Lightsail | 2 vCPU, 4 Go RAM | 17€/mois | 5–10 |
Chaque session WhatsApp (basée sur Baileys) utilise environ 150–250 Mo de RAM. Un serveur de 4 Go gère confortablement 10–15 sessions simultanées.
2. Domaine et SSL
# Pointez l'enregistrement DNS A vers l'IP de votre VPS # Puis : apt install nginx certbot python3-certbot-nginx -y certbot --nginx -d wa-gateway.votredomaine.com
3. Reverse proxy Nginx
server {
listen 443 ssl;
server_name wa-gateway.votredomaine.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
4. Sauvegardes de la base de données
# Tâche cron : dump quotidien PostgreSQL vers stockage compatible S3 0 3 * * * pg_dump evolution | gzip > /backups/evolution-$(date +%Y%m%d).sql.gz
5. Surveillance
# Evolution API expose l'endpoint /manager/status curl -s http://localhost:8080/manager/status | jq '.instances[] | {name, status}'
Branchez ceci dans Uptime Kuma ou Grafana pour des vérifications de santé par instance.
6. Script d'intégration par client
#!/bin/bash # onboard-client.sh <nom-client> <code-pays> <url-webhook> INSTANCE_NAME=$1 COUNTRY=$2 WEBHOOK_URL=$3 # Créer l'instance curl -s -X POST http://localhost:8080/instance/create \ -H "apikey: $EVOLUTION_API_KEY" \ -H "Content-Type: application/json" \ -d "{ \"instanceName\": \"$INSTANCE_NAME\", \"token\": \"$(openssl rand -hex 16)\", \"webhook\": \"$WEBHOOK_URL\", \"webhookByEvents\": true }" | jq '.' # Sortie : code QR à scanner + token API pour le client
Exécutez ceci par client. Temps total d'intégration : 5 minutes, scan QR inclus.
Quand MultiWA est plus pertinent
Evolution API est l'option orientée API, conçue pour les développeurs. MultiWA ajoute des fonctionnalités importantes pour les agences avec des clients moins techniques :
- Constructeur d'automatisations visuel : Flux de messages en glisser-déposer. Aucun client n'a besoin de coder « si le client dit X, répondre Y ».
- Réponses automatiques IA avec RAG : Téléchargez des catalogues produits, des politiques de livraison, des documents FAQ. MultiWA répond automatiquement aux questions courantes.
- Tableau de bord administrateur : Interface web Next.js où vous — ou vos clients — surveillez les sessions, lisez les conversations et configurez les automatisations.
Le fichier docker-compose.production.yml de MultiWA est presque identique à celui d'Evolution API. Compromis : projet plus jeune (200+ étoiles contre 7 500+), communauté plus petite, plus de composants mobiles (Next.js, worker BullMQ, PostgreSQL, Redis).
Règle empirique : Evolution API pour 5+ clients techniques où vous construisez l'automatisation dans votre backend eCommerce. MultiWA pour 1–4 clients qui veulent un tableau de bord pour gérer les choses eux-mêmes.
L'angle solopreneur : construire une fois, vendre à plusieurs
Vous êtes un seul développeur. Vous construisez cette passerelle une seule fois — Docker Compose, Nginx, Evolution API, PostgreSQL, Redis, scripts de sauvegarde. Un week-end de travail.
Ensuite, vous la vendez comme un service géré :
| Forfait | Prix | Inclus |
|---|---|---|
| Starter | 42€/mois | 1 session WhatsApp, 5 000 messages/mois, intégration webhook |
| Croissance | 85€/mois | 3 sessions, 25 000 messages/mois, modèles personnalisés |
| Agence | 214€/mois | 10 sessions, messages illimités, tableau de bord en marque blanche, support prioritaire |
À 10 clients Agence : 2 140€ MRR sur un VPS à 4–6€/mois.
Ce que vous vendez réellement : « Vos clients au Brésil, en Inde et au Nigeria reçoivent les mises à jour de commande sur WhatsApp. Vous payez un forfait fixe. Pas de bureaucratie Meta. Pas de tarification par message. Nous gérons la passerelle. »
C'est le même modèle que les agences utilisent pour l'email (Mailgun, SendGrid) et les SMS (Twilio). WhatsApp est simplement le canal suivant — et l'auto-hébergement le rend rentable à petite échelle.
Copiez-collez l'extrait de code FlowZap suivant dans un projet de votre compte FlowZap pour visualiser le diagramme.
client { # Client Profile
n1: circle label:"Need WhatsApp channel"
n2: diamond label:"Need verified badge, compliance, or SLA?"
n1.handle(right) -> n2.handle(left)
n2.handle(right) -> constraints.n5.handle(left) [label="Yes"]
n2.handle(bottom) -> operator.n3.handle(top) [label="No"]
}
operator { # FlowZap Operator
n3: diamond label:"Expected Meta spend > $100/mo?"
n4: diamond label:"Client wants dashboard and no-code automations?"
n3.handle(top) -> client.n2.handle(bottom) [label="Context received"]
n3.handle(right) -> constraints.n6.handle(left) [label="No"]
n3.handle(bottom) -> n4.handle(top) [label="Yes"]
}
constraints { # Constraints
n5: rectangle label:"Official path required"
n6: rectangle label:"Official API still acceptable"
n5.handle(left) -> options.n9.handle(top) [label="Recommend"]
n6.handle(bottom) -> options.n9.handle(left) [label="Recommend"]
}
options { # Recommended Stack
n7: rectangle label:"Evolution API on Docker"
n8: rectangle label:"MultiWA on Docker"
n9: rectangle label:"Official Meta Cloud API"
n10: rectangle label:"API-first, developer-operated"
n11: rectangle label:"Dashboard, RAG, automations"
n12: circle label:"Chosen path"
n4.handle(right) -> n8.handle(left) [label="Yes"]
n4.handle(bottom) -> n7.handle(top) [label="No"]
n7.handle(right) -> n10.handle(left)
n8.handle(right) -> n11.handle(left)
n9.handle(bottom) -> n12.handle(top) [label="Compliance path"]
n10.handle(bottom) -> n12.handle(left) [label="Lean self-hosted path"]
n11.handle(bottom) -> n12.handle(right) [label="Managed self-serve path"]
}
La règle : Si le coût mensuel WhatsApp du client via Meta dépasse 86€, l'auto-hébergement lui fait économiser de l'argent. S'il a besoin de la vérification coche verte, de la conformité ou d'une disponibilité garantie, orientez-le vers l'API officielle. Pour tout le reste — confirmations de commande, mises à jour de livraison, récupération de panier — votre passerelle auto-hébergée est le bon outil.
En résumé
- Evolution API dans Docker vous donne une passerelle WhatsApp de production en 5 minutes. API REST, multi-session, stockage PostgreSQL, prêt pour les webhooks. Coût zéro par message.
- L'auto-hébergement économise 429–6 864€/mois pour les agences avec 10+ clients envoyant des messages WhatsApp transactionnels à travers les frontières.
- L'isolation client via clés API signifie une seule passerelle desservant 20 boutiques — chacune avec son propre numéro WhatsApp, son endpoint webhook et sa file de messages.
- Le risque est réel : protocole WhatsApp non officiel. Les numéros peuvent être bannis. N'utilisez pas cela pour le démarchage à froid, le marketing de masse ou les industries réglementées. Utilisez-le pour les mises à jour de commande et les notifications de livraison — peu de plaintes, haute valeur.
Construisez la passerelle une fois. Vendez-la à chaque client eCommerce transfrontalier de votre portefeuille.
Inspirations:
- Evolution API GitHub — 7 500+ étoiles, Apache 2.0
- Documentation Evolution API
- Image Docker Evolution API
- Comparaison Evolution API vs API WhatsApp Officielle
- MultiWA GitHub — licence MIT, automatisation visuelle
- Analyse approfondie de l'architecture MultiWA
- Bibliothèque Baileys (protocole WhatsApp Web)
- Documentation officielle WhatsApp Cloud API
- Tarification WhatsApp Business API
- Guide de configuration WhatsApp Business API (2026)
- API WhatsApp pour l'eCommerce (2026)
- Reddit: whatsapp-web.js vs API Officielle vs Baileys
- Versions Evolution API
- Senate.sh: Guide d'auto-hébergement Evolution API
- OpenWA: Stack WhatsApp auto-hébergée gratuite
