Un programme de fidélité qui communique par WhatsApp atteint ses membres là où ils sont déjà actifs, sans dépendre d'une app mobile propriétaire ni d'un e-mail ignoré. Ce cas pratique décrit l'intégration complète d'un canal WhatsApp dans une plateforme de fidélisation SaaS, de l'architecture technique jusqu'à la gestion des campagnes.
Contexte : une plateforme SaaS de fidélité multi-enseignes
Prenons le cas d'un éditeur SaaS qui fournit un moteur de fidélité à des enseignes retail (mode, beauté, restauration). La plateforme gère les points, les paliers membres, les récompenses et les campagnes. Elle envoie déjà des e-mails et des SMS. L'objectif : ajouter WhatsApp comme canal de notification sans refaire l'architecture existante.
Contraintes :
- Plusieurs dizaines d'enseignes clientes, chacune avec sa propre base membres
- Chaque enseigne doit apparaître avec son nom et son numéro sur WhatsApp (pas le numéro SaaS)
- Volume : jusqu'à 500 000 messages/mois en pic (soldes, fêtes)
- RGPD : données membres hébergées en UE
Architecture : événements, workers, webhooks
Le modèle événementiel
Le moteur de fidélité émet des événements internes à chaque action membre :
| Événement | Déclencheur | Canal WhatsApp |
|---|---|---|
points.credited |
Achat validé | Template Utility (notification points) |
reward.available |
Seuil de points atteint | Template Utility ou Marketing |
reward.expiring |
J-7 avant expiration | Template Marketing |
campaign.send |
Planification manuelle | Template Marketing (campagne) |
member.reply |
Message entrant membre | Réponse session (gratuit Meta) |
Ces événements sont publiés sur une file (dans ce cas pratique, une queue Redis simple suffit pour commencer). Un worker consomme la queue et appelle l'API Whakup.
Le worker d'envoi
import redis
import json
import requests
queue = redis.Redis()
def process_event(event):
enseigne_id = event["enseigne_id"]
membre = event["membre"]
# Récupérer le phone_number_id de l'enseigne
config = get_enseigne_config(enseigne_id)
# Construire le payload selon le type d'événement
if event["type"] == "points.credited":
payload = build_points_template(membre, config, event["data"])
elif event["type"] == "campaign.send":
payload = build_campaign_template(membre, config, event["data"])
# Envoyer via Whakup
resp = requests.post(
"https://api.whakup.com/v1/messages",
headers={"Authorization": f"Bearer {config['api_key']}"},
json=payload
)
# Stocker le message_id
store_message_log(event["id"], resp.json().get("message_id"))
while True:
_, raw = queue.blpop("whatsapp_notifications")
event = json.loads(raw)
process_event(event)
La table de configuration par enseigne
Chaque enseigne a son propre phone_number_id Whakup. La table de configuration ressemble à :
CREATE TABLE enseigne_whatsapp_config (
enseigne_id UUID PRIMARY KEY,
phone_number_id VARCHAR(50) NOT NULL,
api_key_encrypted TEXT NOT NULL,
templates JSONB, -- {"points": "notification_points_v1", "campaign": "offre_membre_v2"}
optout_marketing_count INT DEFAULT 0,
created_at TIMESTAMP DEFAULT NOW()
);
Gestion des enseignes : l'embedded signup en pratique
Avec plusieurs dizaines d'enseignes, il est exclu de connecter les numéros manuellement. Whakup fournit un flux d'embedded signup intégrable dans votre interface d'administration SaaS.
Le flux côté enseigne :
- L'enseigne accède à la section "Canaux" de votre plateforme
- Elle clique "Connecter WhatsApp"
- Une fenêtre iframe/popup Whakup s'ouvre
- L'enseigne s'authentifie avec son compte Facebook Business et sélectionne son numéro
- Le
phone_number_idest automatiquement transmis à votre back-end via callback
En moins de 5 minutes, l'enseigne est prête à envoyer. Vous ne touchez à rien. Pas de certification Meta à gérer pour chaque client.
Pour comprendre la différence entre construire cette intégration soi-même et passer par un partenaire certifié, lisez le comparatif Build vs Buy pour l'API WhatsApp.
Campagnes : envoi en volume et gestion des paliers
Calculer le volume envoyable par numéro
Meta impose un palier de 1 000 conversations Marketing par 24h pour un numéro récent. Ce plafond monte à 10 000 puis 100 000 selon la qualité et le volume écoulé. Pour une enseigne avec 50 000 membres actifs, il faut anticiper la montée en puissance sur 2 à 3 semaines avant une campagne de soldes.
Recommandation pratique : commencez à envoyer 2 semaines avant la campagne principale (petits volumes de notifications utility) pour "chauffer" le numéro.
Batching et rate limiting
import time
def send_campaign_batch(membres, template_name, enseigne_config):
batch_size = 100
delay_between_batches = 1 # seconde
for i in range(0, len(membres), batch_size):
batch = membres[i:i+batch_size]
for membre in batch:
if not membre.get("optout_whatsapp_marketing"):
send_message(membre, template_name, enseigne_config)
time.sleep(delay_between_batches)
Coût d'une campagne marketing
Pour une campagne vers 10 000 membres en France (numéros FR) :
- Frais Meta : 10 000 × 0,0712 € = 712 €
- Frais Whakup : 10 000 × 0,0088 € = 88 €
- Total : ~800 € pour 10 000 membres
À mettre en regard du taux de conversion attendu et du panier moyen. Pour les détails tarifaires complets, consultez l'article sur les prix de l'API WhatsApp Business en 2026.
Webhook : traitement des réponses membres
Le webhook Whakup reçoit les statuts et les messages entrants. Voici le traitement des cas principaux dans le contexte fidélité :
@app.route("/webhook", methods=["POST"])
def handle_webhook():
data = request.json
if data["type"] == "button":
handle = data["button"]["payload"]
sender = data["from"]
if handle == "optout_marketing":
update_member_optout(sender, "marketing")
elif handle.startswith("redeem_"):
reward_id = handle.split("_")[1]
process_reward_redemption(sender, reward_id)
elif data["type"] == "message":
# Réponse texte libre : lancer un mini-chatbot
handle_free_text(data["from"], data["text"]["body"])
return "", 200
L'échange de récompenses via bouton WhatsApp est un cas d'usage à fort impact : le membre peut convertir ses points en bon de réduction directement depuis le message, sans connexion à une app ou à un site.
FAQ
Comment gérer les membres qui ont le même numéro dans deux enseignes différentes ?
Chaque enseigne a son propre numéro expéditeur. Un même consommateur peut recevoir des messages de plusieurs enseignes sur son WhatsApp. Chaque conversation est distincte côté WhatsApp. Il n'y a pas de conflit, mais assurez-vous que chaque enseigne gère son propre opt-in indépendamment.
Comment mesurer le ROI des notifications WhatsApp fidélité ?
Trackez les événements clés : messages envoyés, messages lus (statut read via webhook), clics sur boutons URL (via paramètre UTM dans l'URL), et conversions côté plateforme. La corrélation entre message_id → read → achat dans les 48h vous donne un taux de conversion directement attribuable.
Peut-on envoyer des bons de réduction dans un template WhatsApp ?
Oui, via un bouton URL ou un code texte dans le corps du template. Attention : si le message contient une offre promotionnelle, il doit être catégorisé MARKETING, même si le membre a déjà des points. La catégorie est définie par le contenu, pas par la relation client.
Que se passe-t-il si le numéro d'une enseigne est suspendu par Meta ?
La suspension (rare) survient en cas de taux de spam élevé ou de violation des règles Meta. Whakup alertera via le dashboard. Les envois échoueront avec un code d'erreur spécifique dans les webhooks. La solution préventive est de maintenir une qualité d'opt-in élevée et de ne pas envoyer à des membres inactifs depuis plus de 6 mois sans re-consentement.
Conclusion
Ce cas pratique montre qu'un éditeur SaaS peut brancher WhatsApp sur son moteur de fidélité en quelques semaines, avec une architecture événementielle claire et l'API Whakup pour gérer le multi-enseigne. L'embedded signup supprime le principal frein opérationnel : intégrer chaque nouveau client.
Whakup fournit l'API REST, le multi-numéros, la marque blanche et l'hébergement EU. Pour démarrer, consultez la page API WhatsApp de Whakup.

Co-fondateur de Whakup, Arthur accompagne les entreprises africaines dans leur transformation digitale via WhatsApp depuis 2022. Passionné par le growth marketing et l'entrepreneuriat en Afrique francophone.
Prêt à passer à l'action ?
Essayez Whakup gratuitement pendant 15 jours. Aucune carte bancaire requise.
Démarrer l'essai gratuitArticles similaires
WhatsApp pour les alertes de sécurité via l'API : cas pratique pour les éditeurs
Cas pratique concret : comment un éditeur SaaS déploie ses alertes de sécurité WhatsApp via l'API Business, avec architecture, logique de fallback et résultats mesurables.
WhatsApp pour les enquêtes de satisfaction via l'API : cas pratique pour les éditeurs
Découvrez comment intégrer une enquête satisfaction WhatsApp via l'API Business : architecture, templates, logique de scoring et retour d'expérience concret pour les éditeurs.
WhatsApp pour l'envoi de documents via l'API : cas pratique pour les éditeurs
Envoi de documents WhatsApp via l'API Business : cas pratique concret pour les éditeurs SaaS et agences qui veulent intégrer PDF, devis et contrats dans leurs flux.