Déclencheurs
Un déclencheur relie un événement de votre activité à WhatsApp : une conversion affiliée inscrit l'acheteur dans une liste, le formulaire d'une landing y inscrit le lead, une commande payée envoie un message de confirmation, une commande à la livraison demande à l'acheteur de confirmer. C'est ce qui rend le module automatique : une fois branché, plus personne ne touche au clavier.
Concept
Trackily connaît cinq points d'entrée automatiques. Tous se règlent depuis l'écran, et aussi par l'agent IA.
| Événement | Ce qui se passe | Où ça se règle |
|---|---|---|
| Conversion affiliée (postback d'un réseau) | L'acheteur est inscrit dans une liste, qui démarre sa séquence par défaut | Suppressions → Déclencheurs de conversion, ou l'agent IA |
| Formulaire d'une landing (et formulaire d'une étape de funnel) | Le lead qui laisse un téléphone est inscrit dans la liste WhatsApp de la landing | Pages de destination → la landing → Liste WhatsApp, ou l'agent IA — voir plus bas |
| Commande payée d'une campagne | L'acheteur est inscrit dans la liste WhatsApp post-achat de la campagne | Campagnes → la campagne → Liste WhatsApp post-achat, ou l'agent IA — voir plus bas |
| Commande payée | Un modèle UTILITY part tout de suite à l'acheteur, sans liste | Réglages → Message après achat |
| Commande à la livraison (COD) | Une demande de confirmation à deux boutons part à l'acheteur | Réglages → Confirmation des commandes à la livraison — voir Confirmation COD |
Deux règles valent pour tous :
- Un déclencheur ne bloque jamais votre client. Les inscriptions (par conversion, par formulaire, après achat) et le message après achat partent en arrière-plan, après la réponse au visiteur ou au réseau. La demande de confirmation COD, elle, est préparée pendant la commande — il faut savoir, avant de répondre, si le Purchase est retenu —, mais aucun appel au fournisseur n'a lieu à ce moment, et toute erreur la fait simplement ignorer : la commande passe, et le Purchase part comme sans l'option. Si WhatsApp est en panne, si la licence manque, si le numéro est illisible, la commande passe et le postback est accepté. Le message est perdu, pas la vente.
- Sans licence, aucun déclencheur n'agit. Rien n'est inscrit, rien n'est mis en file.
1. Le déclencheur de conversion
C'est le jumeau WhatsApp du déclencheur de conversion e-mail, avec les mêmes filtres.
Le créer
WhatsApp Marketing → Suppressions, moitié basse de la page : Déclencheurs de conversion → Nouveau déclencheur.
| Champ | Ce qu'il fait |
|---|---|
| Nom | Le vôtre. |
| Offre | Une offre précise, ou Toutes les offres. |
| Liste visée | La liste où l'acheteur sera inscrit. Elle doit exister et ne pas être archivée. |
| Payout minimum / maximum | Bornes incluses sur le montant de la conversion. |
| Statuts acceptés | Séparés par une virgule (approved, pending). Pré-rempli à approved : l'acheteur d'une vente refusée par le réseau ne reçoit pas « merci pour votre achat ». Vide = tous les statuts, y compris une conversion refusée (rejected). |
| Déclencheur actif | Décoché, le déclencheur existe mais n'inscrit personne. |
Seules ces trois clés de filtre existent. Un filtre qui n'accepterait aucune conversion (un minimum au-dessus du maximum) est refusé à l'enregistrement.
« Toutes les offres », c'est chaque conversion de chaque offre. Chaque acheteur inscrit démarre la séquence de la liste, et chaque message de cette séquence coûte. Or l'acheteur n'a accepté que ce qu'il a acheté.
Ce qui se passe à chaque postback
- Trackily retient les déclencheurs actifs de l'offre, plus ceux de « toutes les offres », dont les filtres acceptent le montant et le statut.
- Il cherche le téléphone de l'acheteur, dans cet ordre : le paramètre
phone(ouuser_phone) du postback ; le téléphone du dernier lead enregistré sur ce clic ; celui des données de lead du clic. Le pays vient du paramètrecountry(oucountry_code), sinon du lead, sinon du clic. - Il inscrit l'acheteur dans chaque liste visée, avec les mêmes règles que toute inscription (voir Listes). L'abonné porte en champs personnalisés le montant, l'offre, le statut et le clic de la conversion (
{{custom.conversion_payout}}, etc.). - Le compteur Déclenché n'augmente que pour une inscription réelle : un numéro refusé ne compte pas.
Un postback ne porte aucune preuve de consentement, et un achat n'en vaut pas une. Sur une liste qui exige le consentement, l'acheteur ne recevra que les modèles UTILITY de la séquence.
Archiver un déclencheur l'arrête pour de bon : il disparaît de la liste et n'inscrit plus personne. Pour une pause, décochez « Déclencheur actif ».
Via l'agent IA
{
"name": "create_whatsapp_conversion_trigger",
"arguments": {
"name": "Acheteurs confirmés",
"target_list_id": 3,
"offer_id": 12,
"filters": { "payout_min": 5, "statuses": ["approved"] }
}
}
Omettez offer_id pour « toutes les offres ». Sans statuses dans filters, seules les conversions approved inscrivent — à la création comme à la modification d'un filtre ; pour tout accepter, rejetées comprises, écrivez "statuses": []. list_whatsapp_conversion_triggers avec un offer_id rend les déclencheurs qui concernent cette offre : les siens et ceux de « toutes les offres ». Ajoutez actifs: true pour ne garder que les actifs ; les filtres de montant et de statut, eux, ne sont jugés qu'au postback.
2. Le message après achat
Réglages → Message après achat. Un modèle UTILITY approuvé, envoyé une fois à chaque commande payée — et facturé chaque fois.
| Champ | Ce qu'il fait |
|---|---|
| Modèle de confirmation de commande | Le modèle envoyé. « Aucun » coupe l'envoi. |
| Paramètres du modèle (JSON) | La valeur de chaque variable, par exemple {"body.1": "{{first_name}}", "body.2": "{{order_number}}"}. Les variables de commande sont lues au moment de l'envoi. |
| Compte transmis par le message après achat | Laissez-le sur « Aucun », ou mettez le compte du modèle. Un modèle n'appartient qu'à un compte : un autre compte que le sien fait refuser l'envoi. |
Ce qui se passe :
- le message part quand la commande devient payée (paiement capturé), et une seule fois par commande, même si le paiement est notifié plusieurs fois ;
- jamais pour une commande COD : elle a déjà sa demande de confirmation, et l'acheteur recevrait deux messages pour un seul achat ;
- jamais pour une commande annulée, un aperçu, une commande en paiement manuel, une commande sans téléphone, ni pour la commande d'un upsell de funnel (l'upsell est listé dans le message de sa commande principale) ;
- dans un funnel avec des upsells, le message attend que l'acheteur ait fini le funnel : il part une seule fois, quand l'acheteur arrive sur la page de merci (dans la minute) ou quand la fenêtre d'upsell du funnel se ferme (15 minutes après le dernier achat par défaut), et seulement si la commande est toujours payée — une commande remboursée ou annulée entre-temps ne reçoit rien. Les variables
{{order_group_items_text}},{{order_group_total}},{{order_group_count}}et{{order_group_numbers}}y listent la commande et ses upsells (hors funnel, la commande seule). Un funnel sans étape upsell active envoie tout de suite, comme avant ; - le numéro est lu avec le pays de la commande : un numéro national sans pays est refusé ;
- une variable attendue et absente fait refuser l'envoi avant tout appel réseau.
Sur une carte SIM, le message après achat part de la SIM qui porte son modèle. Choisir le modèle d'une SIM rangée dans un groupe Marketing est refusé à l'enregistrement (vocation_contraire) : cette SIM ne l'enverrait pas, et aucune SIM Commandes ne connaît ce modèle (voir Rotation).
3. La confirmation COD
Assez de conséquences sur l'argent pour avoir sa page : Confirmation COD.
4. Le formulaire d'une landing, et la liste post-achat d'une campagne
Deux choix de liste vivent hors du module, à côté de leur jumeau e-mail.
Relier une landing à une liste
Pages de destination → modifier la landing → Liste WhatsApp (sous « Email list »). Chaque lead du formulaire de cette landing qui laisse un numéro de téléphone est inscrit dans la liste (source landing_form) et entre dans sa séquence par défaut. Un formulaire d'étape de funnel passe par la liste de la page principale de l'étape — sauf en aperçu : un funnel testé avant publication n'inscrit personne sur WhatsApp (le lead, lui, est enregistré).
- Le numéro est lu avec le pays du clic, sinon avec le pays par défaut de la liste, comme toute inscription (voir Listes).
- La landing n'a pas à être active : une landing en pause inscrit encore. Une landing supprimée n'inscrit plus personne.
- Au-delà de 20 inscriptions en une heure depuis une même adresse IP vers une même liste, les leads suivants de cette adresse ne sont pas inscrits jusqu'à la fin de l'heure : une garde contre les robots, large parce qu'un opérateur mobile met des centaines de clients derrière une même adresse. L'adresse comptée est celle du visiteur : transmise par Cloudflare quand votre instance est derrière Cloudflare, sinon celle de la connexion reçue par votre proxy. Un en-tête
CF-Connecting-IPqui n'a pas été posé par Cloudflare est ignoré (avant la mise à jour du 2026-09-26, il était cru : un robot pouvait changer d'adresse à chaque envoi). Si un autre proxy public que Cloudflare se tient devant votre instance, déclarez son adresse dans la variableTRUSTED_PROXY_IPS, sinon tous vos visiteurs partagent la sienne. - La preuve de consentement vient de la case cochée par le visiteur (voir plus bas).
Relier une campagne à une liste post-achat
Campagnes → modifier la campagne → Liste WhatsApp post-achat (sous « Email automation »). Chaque commande payée de la campagne inscrit l'acheteur dans la liste (source native_commerce_post_purchase) s'il a laissé un numéro, et il entre dans sa séquence par défaut. Il n'y a pas de liste WhatsApp « par défaut » : sans choix, personne n'est inscrit.
- L'inscription a lieu quand la commande devient payée (Stripe, PayPal, « marquer payé », achat d'un funnel) — et pour une commande COD, dès son placement, qu'elle soit confirmée ensuite ou non. Dans un funnel avec des upsells, elle attend la fin du funnel, comme le message après achat.
- Une seule fois par commande. Jamais pour une commande annulée, un aperçu, une commande en paiement manuel, une commande sans téléphone, ni pour la commande d'un upsell de funnel.
- Le numéro est lu avec le pays de la commande, sinon avec le pays par défaut de la liste.
- L'abonné porte sa commande : les variables
{{order_number}},{{order_total}}… de ses modèles la lisent. Si l'acheteur a coché la case de consentement au checkout, la preuve le suit.
Ce qui vaut pour les deux
- La liste doit exister et ne pas être archivée : sinon le choix est refusé, et rien n'est écrit. Une liste en pause s'accepte, mais n'inscrit personne tant qu'elle n'est pas réactivée ; l'aide sous le choix le dit.
- Les deux choix n'apparaissent que si le module est inclus dans votre licence. Pour un membre d'équipe, les listes WhatsApp se lisent avec le droit landings, et changer la liste post-achat d'une campagne demande le droit landings en écriture, en plus de celui des campagnes.
- Un import JSON de landings ou de campagnes ne garde pas ces liaisons : l'identifiant d'une liste n'a pas de sens d'une instance à l'autre. La réponse de l'import dit combien ont été retirées ; reliez-les à nouveau après l'import.
- Le métier des messages est celui de la cible de la liste (voir Rotation) : rattachez la liste post-achat — un suivi de commande — au groupe de SIM Commandes, et la liste d'une landing de prospects au groupe Marketing.
Via l'agent IA
{ "name": "bind_landing_to_whatsapp_list", "arguments": { "landing_id": 8, "list_id": 3 } }
{ "name": "bind_campaign_to_whatsapp_list", "arguments": { "campaign_id": 5, "list_id": 4 } }
list_id est obligatoire : null détache, et un oubli ne détache rien. Le premier outil demande les scopes whatsapp:write et landings:write, le second whatsapp:write et campaigns:write. Ils refusent une liste archivée même si elle est déjà posée, rendent la liste (active ou non, séquence par défaut, métier de ses envois) et une note qui dit ce qui arrivera vraiment : personne n'entre dans une liste en pause, rien n'est programmé sans séquence par défaut, et une landing liée à une liste du métier Commandes, ou une campagne liée à une liste Marketing, est signalée.
La case de consentement
Réglages → Case de consentement → Afficher la case au checkout et dans les formulaires de lead. Éteinte par défaut.
Allumée, et tant que la licence est active :
- Trackily ajoute une case décochée au checkout, au checkout d'un funnel, et dans les formulaires de lead des landings qu'il sert lui-même (landings IA et landings locales) qui demandent un téléphone (un formulaire marqué
data-trackily="off"n'en reçoit pas) ; - dans un formulaire de lead, la case porte un jeton signé par votre instance, valable 12 heures et pour cette landing seulement. La preuve n'est gardée que si la case cochée revient avec son jeton : un envoi fabriqué sans avoir affiché la page, une case ajoutée par le code de votre page (même pré-cochée ou marquée comme celle de Trackily ; avant la mise à jour du 2026-09-26, une case marquée ainsi comptait sur une landing IA), ou un formulaire qui poste lui-même vers
/api/lead, ne valent pas consentement. Le lead est enregistré quand même, sans consentement ; - une page hébergée ailleurs (votre propre site, avec le script
trackily.js) n'a pas de case pour l'instant : Trackily ne sait pas encore lui fournir de jeton. Ses leads sont inscrits sans consentement ; - dans un funnel, le checkout d'une étape suit cette seule option ; le formulaire d'une étape (capture, pré-vente ou page de vente) ne reçoit la case que si vous l'activez en plus pour cette étape : voir La case dans un funnel ;
- la case parle la langue de la page, en français, anglais ou arabe. Une page dans une autre langue n'a pas de case : un client ne consent pas à un texte qu'il ne lit pas ;
- quand le client coche au checkout (ou au checkout d'un funnel), Trackily garde la preuve avec la commande : le texte exact affiché, sa version, la langue, la date, l'adresse IP, le navigateur et l'origine ;
- pour un formulaire de lead, la preuve n'est gardée que sur l'abonné WhatsApp : elle suit le lead quand sa landing est reliée à une liste WhatsApp active (le choix « Liste WhatsApp » de la landing, voir plus haut). Sans liste reliée, ou si le lead n'est pas inscrit, la case cochée n'est conservée nulle part ;
- la preuve gardée avec une commande suit l'acheteur quand la campagne de la commande l'inscrit dans sa liste post-achat ;
- sur l'abonné, la preuve est gardée entière — texte, version, langue, date, origine, et l'adresse IP et le navigateur de la personne qui a coché (pas ceux de son clic publicitaire) — et se lit dans sa chronologie (voir Listes). Les abonnés inscrits avant la mise à jour v135 n'ont que la date, le texte et l'origine.
Le texte de chaque langue se règle sur la même page (500 caractères au plus). Par défaut, il annonce le suivi de commande et les offres commerciales, et rappelle qu'on se désinscrit en répondant STOP. La version est l'empreinte du texte affiché : modifier le texte ouvre une nouvelle version sans invalider les preuves déjà archivées — mais un formulaire resté ouvert pendant la modification n'apporte plus de preuve.
Une case pré-cochée n'est pas un consentement. Trackily ne pose jamais la case cochée. Ne la remplacez pas par la vôtre.
La case dans un funnel
Funnel Builder → cliquez l'étape → WhatsApp → Proposer la case de consentement WhatsApp dans le formulaire. Éteinte par défaut : vos funnels existants ne changent pas. Le réglage vaut pour une étape de capture, de pré-vente ou de page de vente ; le checkout d'un funnel suit l'option générale ci-dessus.
Cochée, la case apparaît dans le formulaire de l'étape si, en plus :
- l'option Réglages → Case de consentement est allumée et la licence est active (l'inspecteur le signale sinon) ;
- le formulaire a un champ nommé
phoneoutel: sans numéro, pas d'inscription WhatsApp, donc pas de case ; - la page est en français, anglais ou arabe (la langue de la page réellement montrée, variante A/B comprise).
La case porte le même jeton signé que sur une landing, émis pour la page principale de l'étape. Seule la case posée par Trackily compte : une case ou un champ wa_consent écrits dans votre page ne valent pas consentement. En aperçu, la case s'affiche pour que vous la voyiez, mais le lead n'est pas inscrit sur WhatsApp.
L'inspecteur vous prévient si la page de l'étape n'est liée à aucune liste WhatsApp active : la case s'affiche quand même, mais le lead n'est pas inscrit et son consentement n'est gardé nulle part. Reliez la page à une liste (voir plus haut).
L'agent IA pose le même réglage par set_funnel_composition (settings.wa_consent_checkbox: true sur l'étape). Comme l'outil remplace toute la composition, l'agent doit relire le funnel et renvoyer ce réglage, sinon la case s'éteint.
Erreurs courantes
- Le déclencheur de conversion affiche 0 — le postback ne porte pas de téléphone, et aucun lead de ce clic n'en a laissé. Faites passer
phonedans l'URL de postback, ou collectez le téléphone sur le prelander. - Le formulaire d'une landing n'inscrit personne — la landing n'est reliée à aucune liste WhatsApp, la liste est en pause, le formulaire n'envoie pas de téléphone, le numéro est national et ni le clic ni la liste ne donnent de pays, ou la même adresse IP a déjà inscrit 20 leads dans cette liste depuis une heure.
- L'acheteur n'entre pas dans la liste post-achat — la commande n'appartient pas à une campagne reliée à une liste, la liste est en pause, ou la commande est annulée, un aperçu, en paiement manuel, sans téléphone, ou l'upsell d'un funnel.
- L'acheteur est inscrit mais ne reçoit rien — la liste exige le consentement et la séquence est MARKETING, ou la liste n'a pas de séquence par défaut.
- Le message après achat ne part pas — la commande est COD (normal), le modèle n'est pas UTILITY, ou le « Compte transmis » n'est pas le compte du modèle.
- La case de consentement n'apparaît pas — l'option est éteinte, la licence manque, la page n'est ni en français, ni en anglais, ni en arabe, le formulaire ne demande pas de téléphone, la page est hébergée hors de Trackily, ou la clé de signature de l'instance n'est pas installée (le démarrage l'écrit : « aucune clé de signature »).
- Un lead a coché la case mais n'a pas de consentement — la page était ouverte depuis plus de 12 heures, elle avait été ouverte avant une mise à jour de Trackily (le script est gardé en cache jusqu'à une heure), ou le formulaire envoie sa propre case au lieu de celle de Trackily. Le journal du serveur dit « case de lead cochée sans jeton valide », avec la landing et la raison.
Voir aussi
- Listes — les règles d'inscription
- Séquences — ce qui démarre après l'inscription
- Confirmation COD — le déclencheur qui touche le plus à l'argent
- Rotation — le métier d'une liste, donc les SIM dont partent ses messages
- API — Postback — le postback qui fait tourner les déclencheurs de conversion