Dès qu’on veut écrire à un client en dehors d’une conversation déjà ouverte — une confirmation de commande, une relance, un code de vérification — WhatsApp impose un passage obligé : le template, un modèle de message soumis à l’avance et approuvé par Meta. Comprendre les catégories, rédiger un template qui passe la validation du premier coup, et l’envoyer avec ses variables : c’est l’objet de ce tutoriel. C’est aussi là que beaucoup de projets se bloquent, faute de connaître les règles.
Ce satellite prolonge le cluster WhatsApp Cloud API en 2026 et sa règle des 24 heures. Les structures et catégories décrites sont vérifiées sur la documentation officielle Meta.
Pourquoi des templates
Rappel du principe central de la plateforme : dans les 24 heures qui suivent le dernier message d’un client, vous répondez librement ; en dehors de cette fenêtre, vous ne pouvez écrire qu’avec un template approuvé. Cette barrière protège les utilisateurs du démarchage sauvage. Conséquence pratique : tout message que vous initiez — une notification, une relance, une alerte — doit exister sous forme de template validé avant de pouvoir partir.
Les trois catégories
Chaque template appartient à une catégorie, qui détermine à la fois les règles d’approbation et le prix.
- Utility — messages liés à une transaction ou à une action du client : confirmation de commande, mise à jour de livraison, alerte de compte, rappel de rendez-vous. Ce sont les plus utiles au quotidien d’une PME, et les moins chers.
- Marketing — tout ce qui relève de la promotion ou de l’engagement : offres, lancements, soldes, newsletters. Les plus chers, et les plus encadrés.
- Authentication — codes à usage unique et vérification d’identité, dans un format strict.
Attention au piège qui fait recaler tant de templates : depuis le 9 avril 2025, si vous déclarez un message en Utility alors que son contenu est promotionnel, Meta le reclasse d’office en Marketing — avec le tarif correspondant. La catégorie n’est pas ce que vous déclarez, c’est ce que Meta constate. Un « votre commande est prête » glissant vers « …et profitez de -20 % sur la prochaine » bascule en Marketing.
Anatomie d’un template
Un template se compose de blocs, dont un seul est obligatoire. Le corps (body) porte le texte principal — c’est le seul composant requis. En option viennent un en-tête (header), qui peut être du texte ou un média (image, document, vidéo) ; un pied de page (footer), une petite ligne discrète ; et des boutons, de réponse rapide ou d’appel à l’action (ouvrir un lien, appeler un numéro). C’est cet assemblage qui transforme une notification plate en message actionnable — un bouton « Suivre ma commande » vaut mieux qu’un lien noyé dans le texte.
Les boutons : transformer une notification en action
Un template peut embarquer quelques boutons, de deux familles. Les boutons de réponse rapide (quick reply) renvoient, quand le client tape dessus, un identifiant que vous récupérez par webhook — idéal pour un « Oui / Non » ou « Confirmer / Annuler » sans que le client tape quoi que ce soit. Les boutons d’appel à l’action ouvrent un lien (URL) ou lancent un appel. Pour une PME ouest-africaine, le cas d’usage est limpide : un template de confirmation avec un bouton « Payer avec Wave » qui ouvre le lien de paiement, et un bouton « Suivre ma livraison ». Le client agit en un tap, depuis la conversation, sans rien installer.
L’en-tête média : envoyer une facture ou un visuel
L’en-tête optionnel d’un template peut être un média : une image (visuel produit, bannière) ou un document (typiquement un PDF de facture ou de reçu). À l’approbation, on fournit un exemple de média ; à l’envoi, on passe l’URL ou l’identifiant du fichier réel dans le composant d’en-tête. C’est ce qui permet d’envoyer automatiquement la facture PDF d’une commande directement dans la conversation du client — une fonctionnalité qui, à elle seule, fait souvent adopter WhatsApp comme canal officiel de relation client.
Les variables et leurs exemples
Un template n’est pas figé : on y insère des variables, notées {{1}}, {{2}}, etc., remplacées à l’envoi par des valeurs réelles. « Bonjour {{1}}, votre commande {{2}} est confirmée » devient « Bonjour Awa Diop, votre commande CMD-1024 est confirmée ».
Meta exige que vous fournissiez un exemple pour chaque variable au moment de la soumission. Ce n’est pas une formalité : le relecteur (humain ou automatique) juge le template sur cet exemple. Un exemple réaliste et cohérent accélère l’approbation ; un exemple vide, absurde ou trompeur la fait échouer.
Créer un template
Deux voies. La plus simple, pour démarrer, est l’interface WhatsApp Manager : un formulaire guidé où l’on choisit la catégorie, la langue, et où l’on compose les blocs visuellement. La plus puissante, pour industrialiser, est l’API : on crée le template par une requête sur le WABA.
POST https://graph.facebook.com/v23.0/<WABA_ID>/message_templates
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json
{
"name": "confirmation_commande",
"language": "fr",
"category": "UTILITY",
"components": [
{
"type": "BODY",
"text": "Bonjour {{1}}, votre commande {{2}} est confirmée.",
"example": { "body_text": [["Awa Diop", "CMD-1024"]] }
}
]
}
Quelques règles vérifiées : le name est en minuscules, sans espaces (underscores autorisés) ; la category vaut UTILITY, MARKETING ou AUTHENTICATION ; et le champ example fournit les valeurs de démonstration attendues. On crée ainsi autant de templates et de langues qu’on veut, par programme.
L’approbation : ce que Meta regarde
Une fois soumis, le template passe en statut PENDING, puis APPROVED ou REJECTED. Le délai va de quelques minutes à 24 heures. Meta vérifie plusieurs choses : que la catégorie correspond au contenu (le piège vu plus haut), que le message n’est pas trompeur ni abusif, que les variables sont bien formées (pas de {{1}} sans exemple, pas de variables collées sans texte autour), et que la langue déclarée est la bonne. Un template rejeté indique généralement un motif ; on corrige et on resoumet. Meta permet aussi de contester une reclassification de catégorie dans un délai après approbation.
Un mot de patience : ne resoumettez pas frénétiquement un template rejeté sans en comprendre le motif. Lisez la raison indiquée, corrigez le point précis — souvent la catégorie ou un exemple peu crédible — puis resoumettez une seule fois. Multiplier les soumissions identiques n’améliore rien et finit par peser sur la réputation de votre compte ; mieux vaut une correction réfléchie qu’une rafale d’essais.
Envoyer un template approuvé
Une fois APPROVED, on l’envoie en référençant son nom et en fournissant les valeurs des variables, dans l’ordre :
{
"messaging_product": "whatsapp",
"to": "221770000000",
"type": "template",
"template": {
"name": "confirmation_commande",
"language": { "code": "fr" },
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "Awa Diop" },
{ "type": "text", "text": "CMD-1024" }
]
}
]
}
}
Le premier paramètre remplit {{1}}, le second {{2}}. L’ordre compte : inverser les paramètres enverrait « Bonjour CMD-1024, votre commande Awa Diop… ». Si votre template porte des boutons dynamiques ou un en-tête média, on ajoute les composants correspondants dans le tableau.
Gérer plusieurs langues
Un même template existe par langue : « confirmation_commande » en français et en anglais sont deux versions, sous le même nom, distinguées par leur code langue. À l’envoi, on choisit la langue dans le champ language.code (fr, en…). Pour un marché ouest-africain, on rédige le plus souvent en français ; mais la mécanique permet, le jour utile, de servir un client anglophone, sans changer la logique d’envoi. Chaque version se fait approuver séparément.
Un exemple complet de bout en bout
Mettons les pièces ensemble pour une boutique en ligne sénégalaise. On crée en amont trois templates Utility : « commande confirmée » (numéro de commande en variable, bouton « Payer avec Wave »), « commande expédiée » (bouton « Suivre la livraison ») et « commande livrée » (bouton de réponse rapide « Noter ma commande »). Les trois sont soumis, approuvés en quelques heures. Désormais, chaque étape du parcours d’achat déclenche depuis le back-office l’envoi du bon template — et le client suit toute sa commande sur WhatsApp, paie en un tap, sans jamais quitter la conversation. C’est exactement le genre d’automatisation qui inspire confiance.
Rédiger un template qui passe du premier coup
Quelques principes tirés de l’expérience d’approbation. Choisir honnêtement la catégorie : un message transactionnel en Utility, un message promotionnel en Marketing — ne pas chercher à déguiser l’un en l’autre. Rester clair et spécifique : un template vague (« Bonjour, cliquez ici ») inquiète le relecteur ; un template précis (« Votre commande {{1}} est prête au retrait ») rassure. Soigner les exemples : réalistes, cohérents avec le texte. Encadrer les variables de texte : ne jamais commencer ou finir le corps par une variable nue, ni en coller deux côte à côte. Vérifier la langue : le code langue déclaré doit correspondre au texte écrit.
Les templates d’authentification : un cas à part
La catégorie Authentication sert exclusivement à envoyer des codes à usage unique (OTP) pour vérifier un numéro ou sécuriser une connexion. Son format est volontairement rigide — Meta propose des modèles encadrés, souvent avec un bouton « Copier le code » — précisément parce que ces messages sont une cible de choix pour le phishing. Pour une application qui authentifie ses utilisateurs par WhatsApp plutôt que par SMS (souvent moins cher et plus fiable en Afrique de l’Ouest), c’est la brique dédiée. On ne détourne pas un template Utility pour un OTP : on utilise la catégorie prévue.
La qualité d’un template se surveille
L’approbation n’est pas une fin : un template approuvé porte ensuite une note de qualité, calculée sur la façon dont les destinataires y réagissent. Trop de blocages ou de signalements, et le template voit sa qualité chuter — jusqu’à être mis en pause par Meta, puis désactivé s’il ne s’améliore pas. La leçon rejoint celle de la note de qualité du numéro : un template n’est performant que s’il est attendu et pertinent. On envoie le bon template, au bon client, au bon moment — et l’on surveille ses indicateurs pour retirer ou réécrire ceux qui déçoivent.
Préparer ses templates en amont
Les templates s’anticipent. Comme leur approbation prend du temps et que tout message initié en dépend, on identifie tôt les messages récurrents de son activité — confirmation de commande, expédition, relance, rappel de rendez-vous, code de connexion — et on les soumet avant d’en avoir besoin. Le jour où le flux métier doit notifier, le template est déjà approuvé et prêt. Rien n’est plus frustrant que de découvrir, au lancement, qu’on ne peut écrire à ses clients faute de template validé.
Pièges courants
- Promotion déguisée en Utility. La reclassification automatique en Marketing est la cause de rejet n°1. Le contenu détermine la catégorie, pas votre déclaration.
- Exemples manquants ou bidons. Chaque variable exige un exemple crédible ; sans lui, rejet quasi assuré.
- Variables mal placées. Une variable en début ou fin de corps, ou deux variables accolées, déclenchent un refus de forme.
- Modifier un template approuvé. Changer le texte rouvre un cycle d’approbation ; on ne touche pas à un template en production sans le prévoir.
- Confondre nom et contenu. On envoie un template par son
name, pas par son texte ; un nom mal orthographié renvoie une erreur.
En résumé
- Hors fenêtre de 24 heures, tout message initié passe par un template approuvé.
- Trois catégories — Utility, Marketing, Authentication — dont la bonne déclaration conditionne approbation et prix ; l’Utility promotionnel est reclassé en Marketing.
- Un template se crée via WhatsApp Manager ou par
POST /message_templates, avec des variables{{1}}et leurs exemples obligatoires. - On l’envoie approuvé en passant les paramètres dans l’ordre des variables.
Aucun commentaire pour l'instant — lancez la discussion !