WhatsApp Marketing
Trackily envoie des messages WhatsApp à vos clients : la demande de confirmation d'une commande payée à la livraison, le message qui suit un achat, les étapes d'une séquence. Le module est le jumeau du module e-mail — listes, séquences, journal, suppressions — avec deux différences qui changent la façon de travailler : un message WhatsApp coûte (au fournisseur, ou en risque pour le numéro), et un numéro qui écrit mal se fait fermer.
Concept
Le module manipule huit objets, et rien d'autre :
| Objet | À quoi il sert |
|---|---|
| Compte | Un numéro expéditeur chez un fournisseur. Un compte par numéro : un numéro de l'API officielle, ou une carte SIM. |
| Modèle | Le texte d'un message, avec des trous numérotés ({{1}}, {{2}}) remplis au moment de l'envoi. |
| Liste | Un ensemble d'abonnés. Elle envoie par un compte, par un groupe de SIM, ou par le compte de ses modèles — et cette cible dit aussi le métier de ses messages : commandes ou marketing. |
| Abonné | Un numéro dans une liste, avec son statut, sa source et sa preuve de consentement quand il en a une. |
| Séquence | Une suite d'étapes rattachée à une liste. Chaque étape = un modèle + un délai compté depuis l'inscription. |
| Déclencheur | Ce qui fait entrer quelqu'un dans une liste, ou part tout seul : une conversion, le formulaire d'une landing, un achat, une commande à confirmer. |
| Groupe de SIM | Plusieurs cartes SIM qui font le même métier (commandes, ou marketing). Les envois d'une liste qui vise le groupe se répartissent entre elles ; une SIM qui tombe peut rendre sa file à une autre. |
| Suppression | Un numéro à qui Trackily n'écrit plus, sur toutes les listes et tous les comptes. |
Les deux voies
Les deux voies coexistent dans la même instance. Le choix se fait compte par compte.
| API officielle | Cartes SIM (WhatsApp Web) | |
|---|---|---|
| Fournisseurs | Meta (API Cloud en direct), 360dialog, Twilio | La passerelle Trackily, un service à héberger à côté de Trackily |
| Conditions de WhatsApp | L'API officielle, via un fournisseur | Contraire aux conditions d'utilisation de WhatsApp : bannissement possible sans préavis, sans recours, sans support |
| Suivi du numéro | Chez Meta, la note de qualité et le palier d'envoi se relisent dans Trackily | L'état de la session et son échauffement se relisent dans Trackily |
| Textes | Modèles approuvés chez le fournisseur, récupérés par synchronisation | Modèles locaux écrits dans Trackily, sans approbation |
| Coût | Facturé par le fournisseur, selon ses tarifs ; sa facture fait foi | Le prix des SIM et de l'hébergement ; aucun coût par message |
| Confirmation COD | Oui | Non : un modèle local ne porte pas de boutons (voir Confirmation COD) |
| Rotation entre numéros | Non | Oui, par groupes de SIM |
| Plafonds par défaut d'un compte | 250 destinataires uniques sur 24 h, 1 000 messages par heure | 100 destinataires uniques sur 24 h, 40 messages par heure, plus l'échauffement et le rythme de la passerelle |
Un troisième fournisseur, le Bac à sable Trackily, n'appelle aucun réseau et ne coûte rien : il sert à essayer une séquence de bout en bout avant de brancher un vrai numéro.
À lire avant de brancher une carte SIM. Envoyer depuis un numéro ordinaire par WhatsApp Web est contraire aux conditions d'utilisation de WhatsApp. Le numéro peut être banni sans préavis, parfois en quelques heures, et il n'y a ni recours ni support : la SIM est perdue avec ses conversations. N'appairez jamais un numéro dont vous avez besoin, et n'écrivez qu'à des gens qui vous ont donné leur accord. Rien n'est assoupli sur cette voie : consentement, STOP, plafonds et licence s'appliquent exactement comme ailleurs.
Si vous disposez d'un compte de l'API officielle, c'est lui qui doit porter vos confirmations de commande : c'est ce qui ne doit jamais tomber, et c'est la seule voie où la demande de confirmation fonctionne aujourd'hui.
Architecture en une image
Ce qui fait entrer Ce qui programme Ce qui envoie (toutes les 30 s)
┌─────────────────────┐ ┌──────────────────────┐ ┌───────────────────────────────┐
│ Formulaire, achat, │─inscrit─▶│ Liste │ │ File d'envoi │
│ conversion, import, │ │ └─ séquence par │─programme▶│ gardes : compte ou SIM, │
│ ajout manuel, agent │ │ défaut (étapes) │ │ suppression, abonné, │
└─────────────────────┘ └──────────────────────┘ │ consentement, modèle, │
┌─────────────────────┐ │ plafonds, variables │
│ Commande COD, │────────────── envoi direct ────────────────▶│ │
│ message après achat, │ └───────────────┬───────────────┘
│ envoi d'essai │ │
└─────────────────────┘ ┌──────────────────────────────────┴──────────┐
▼ ▼
API officielle (Meta, 360dialog, Passerelle WhatsApp Web
Twilio) ou bac à sable (une session par SIM)
│ │
└─────── accusés, réponses, STOP ─────────────┘
▼
Webhook de Trackily (une URL par compte)
→ journal, suppressions, réponse COD
Le chemin d'un message
- L'entrée. Un déclencheur, un import, un ajout à la main ou un agent inscrit un numéro dans une liste. Le numéro est converti au format international avec le pays qu'on lui donne, sinon avec le pays par défaut de la liste. Un numéro illisible est refusé, jamais deviné. Un numéro bloqué pour tout (suppression « Tout ») est refusé à l'entrée.
- La programmation. Un abonné nouveau entre dans la séquence par défaut de la liste : chaque étape active devient un message en file, daté de l'inscription plus le délai de l'étape. Une étape dont le moment est déjà passé de plus de cinq minutes au moment où elle est programmée est sautée : elle n'est jamais programmée en retard. Une fois en file, un message peut en revanche partir plus tard que prévu (plafonds, licence coupée, nouvelles tentatives). Quand une commande est annulée, le client entre de même dans les séquences Commande annulée de sa liste, ses délais comptés depuis l'annulation (relance après annulation).
- Le passage du moteur. Toutes les 30 secondes, le moteur prend jusqu'à 50 messages dus et les traite un par un. Les envois hors séquence (confirmation COD, message après achat, essai) passent avant les étapes de séquence.
- Les gardes, avant tout appel réseau. Dans l'ordre : le compte (celui de l'envoi, ou la SIM choisie par la rotation — jamais une SIM rangée dans un groupe de l'autre métier), la suppression sous toutes les formes du numéro, l'abonné encore inscrit, le consentement pour un modèle MARKETING, le modèle approuvé et rattaché au bon compte, les plafonds, le rendu des variables, et pour une commande, son état relu à l'instant. Une garde qui refuse ne coûte rien : le message est sauté, reporté ou échoue, avec sa raison écrite au journal.
- L'envoi. Le message part chez le fournisseur ou la passerelle, et l'identifiant rendu est écrit sur l'envoi.
- Le retour. Les statuts (parti, livré, lu, échoué), les réponses aux boutons et les STOP reviennent par le webhook du compte. Le journal se met à jour ; un STOP bloque le numéro partout.
Une erreur passagère est retentée après 1 min, puis 5 min, 30 min et 2 h : au cinquième essai raté, l'envoi est abandonné. Un plafond atteint ou une limite du fournisseur ne consomment pas de tentative : un retard n'est pas un échec. Et quand le fournisseur ne répond pas, le message est peut-être parti : il est retenté une seule fois, puis abandonné (code envoi_incertain) plutôt que d'arriver deux fois chez le client.
Un 502 ou 504 reçu pendant un envoi (Meta, 360dialog, Twilio, ou un proxy devant la passerelle) veut dire la même chose : un intermédiaire n'a pas eu la réponse, le message est peut-être parti. Il n'est pas retenté du tout : il passe « Échoué » avec le code envoi_incertain. Pour qu'une panne du fournisseur ne fasse pas échouer toute la file, confirmations COD comprises, les autres messages de ce compte attendent alors 5 minutes, sans perdre de tentative, puis repartent. Le Journal des envois les retrouve d'un filtre : « Envoi incertain (peut-être parti) » pour ceux à vérifier avant de relancer, « En pause : panne 502/504 du fournisseur » pour ceux qui attendent.
Où ça se trouve dans l'admin
L'accordéon WhatsApp Marketing regroupe sept pages :
- Comptes — les numéros, leur état, l'URL de webhook, les modèles, l'appairage d'une SIM, l'Envoi d'essai.
- Groupes de SIM — les groupes par métier, les SIM de chacun, les règles de routage et le simulateur.
- Listes — les listes, leurs abonnés, l'import, l'export CSV, les mesures.
- Séquences — les séquences et leurs étapes.
- Journal des envois — tout ce qui est en file ou parti, avec son état et sa raison.
- Suppressions — les numéros bloqués, et les déclencheurs de conversion.
- Réglages — la confirmation COD, la case de consentement, le message après achat.
Deux choix vivent hors de l'accordéon, à côté de leur jumeau e-mail : Liste WhatsApp dans le formulaire d'une landing (ses leads y sont inscrits), et Liste WhatsApp post-achat dans celui d'une campagne (ses acheteurs y sont inscrits). Voir Déclencheurs.
Deux droits se partagent le module. settings ouvre Comptes, Suppressions, Réglages et l'envoi d'essai. landings ouvre Groupes de SIM, Listes, Séquences, Journal des envois et les déclencheurs de conversion. Rattacher une SIM à un groupe écrit sur le compte : il faut le droit settings, même depuis la page des groupes. Changer la liste WhatsApp post-achat d'une campagne demande le droit landings en écriture, en plus de celui des campagnes.
La licence
Le module est une fonctionnalité payante (whatsapp_marketing). Sans elle :
- l'accordéon n'affiche plus ses sept pages : il dit « Fonctionnalité non incluse dans votre licence » et propose Mettre à niveau et Revérifier ma licence. Une page ouverte quand même (par un lien ou son adresse) est fermée, sauf Réglages, qui reste lisible pour dire pourquoi ;
- rien ne part : les messages restent en file et repartent au retour de la licence ;
- les déclencheurs n'inscrivent personne, la case de consentement n'apparaît pas, aucune demande de confirmation COD n'est envoyée, et les choix « Liste WhatsApp » des landings et des campagnes ne s'affichent pas (une landing déjà reliée dit pourquoi sa liste ne sert à rien) ;
- en revanche, un STOP reçu est toujours enregistré, et un Purchase retenu par la confirmation COD est toujours libéré à l'expiration.
Une panne n'est pas une licence absente : si le serveur ne peut pas dire l'état du module (erreur, réseau), les pages restent fermées sous « État du module illisible », avec un bouton Relire l'état — ce n'est pas une réponse sur votre licence.
Les droits de la licence sont relus toutes les 6 heures. Une fonctionnalité qui vient d'être activée se voit tout de suite avec le bouton Revérifier ma licence (dans l'accordéon WhatsApp, ou Settings (Paramètres) → General, carte License).
Piloter le module depuis un agent IA
Le serveur MCP expose 47 outils WhatsApp, sous les scopes whatsapp:read et whatsapp:write ; les deux outils qui relient une landing ou une campagne à une liste (bind_landing_to_whatsapp_list, bind_campaign_to_whatsapp_list) demandent en plus landings:write ou campaigns:write. Ils passent par exactement les mêmes règles que l'écran.
Quatre outils demandent une confirmation en deux temps (aperçu, puis jeton) : archive_whatsapp_list, archive_whatsapp_group, send_test_whatsapp (un vrai message : facturé par le fournisseur sur l'API officielle, parti du vrai numéro sur une SIM) et update_whatsapp_settings.
Ce que l'agent ne fait pas, délibérément :
- créer ou modifier un compte — les jetons d'API ne passent pas par une conversation ;
- appairer ou déconnecter une SIM — un QR se scanne devant un téléphone ; l'agent lit seulement l'état de la session ;
- rattacher une SIM à un groupe — c'est une écriture sur le compte, faite à l'écran ;
- lever un STOP — ni lui, ni personne depuis l'administration.
Ce qui ne se négocie pas
- Un STOP ne se lève pas depuis l'administration. Seul le client peut revenir, quand son fournisseur transmet une reprise explicite (voir Suppressions).
- Le rythme de la passerelle ne se règle pas. Délai entre deux messages, échauffement d'un numéro neuf : des constantes, sans réglage ni variable d'environnement (voir Passerelle).
- Dans le doute, Trackily ne renvoie pas. Un message dont on ne sait pas s'il est parti est marqué en échec, pas renvoyé : mieux vaut un message manquant qu'un message en double.
- Les métiers ne se mélangent pas. Sur les cartes SIM rangées en groupes, Trackily vérifie avant chaque envoi que la SIM a le métier du message — commandes ou marketing —, et refuse de ranger une SIM là où elle mélangerait les deux (voir Rotation).
Voir aussi
- Comptes — API officielle, cartes SIM, appairage
- Modèles — modèles du fournisseur et modèles locaux
- Listes — abonnés, import, consentement exigé
- Séquences — étapes, délais, rattrapage
- Déclencheurs — ce qui inscrit et ce qui part tout seul
- Confirmation COD — les trois options et ce qu'elles font à l'argent
- Rotation — groupes de SIM par métier, règles, simulateur
- Suppressions — STOP, causes, ce qui ne se lève jamais
- Passerelle — installer le service des cartes SIM
- MCP — piloter Trackily depuis un agent