Expressions de templates de campagne
Cette reference explique toutes les fonctionnalites d'expressions prises en charge dans les templates de messages de campagne.
Demarrage rapide
- Utilisez
{{ ... }}pour evaluer une expression. - Variable simple :
{{ first_name }}
- Acces par point :
{{ webhook.raw_data.deal.stage }}
- Fonction :
{{ capitalize(first_name) }}
- Condition (ternaire) :
{{ gender == "Male" ? "Mr." : "Ms." }}
Ou cela fonctionne
- Corps principal du message (
template_body) - Corps du message de la variante A/B B (
ab_variant_b_body)
Commandes slash (/)
- Quand vous tapez
/dans l'editeur, seules les fonctions sont proposees. - Exemple : en tapant
/cap, l'editeur suggerecapitalize(...). - Les variables s'inserent avec les chips/boutons de variables, pas via les slash commands.
Syntaxe prise en charge
1) Variables
- Basique :
{{ name }}
- Notation par point :
{{ contact.first_name }}
2) Literaux
- Chaines de caracteres :
{{ "hello" }}{{ 'hello' }}
- Nombres :
{{ 42 }}
- Booleens / null :
{{ true }}{{ false }}{{ null }}
3) Operateurs
- Egalite :
==,!=
- Logiques :
&&,||,!
- Ternaire :
condition ? whenTrue : whenFalse
Exemples :
{{ status == "vip" }}{{ has_email && has_phone }}{{ !opted_out }}{{ first_name ? first_name : "there" }}
4) Indexation
Vous pouvez indexer des tableaux et des chaines :
{{ split(email, "@")[0] }}{{ "hello"[1] }}
Fonctions helper prises en charge
Les noms de helpers sont sensibles a la casse.
Donnees d'exemple utilisees pour les resultats :
{
"first_name": "jANE",
"email": "sophie.martin@gmail.com",
"language": "fr-FR",
"company": "ACME CORP",
"country_code": "fr",
"full_name": " Sophie Martin ",
"tags": "vip,priority,new",
"phone_number": "+14155550123"
}lower(value)
Convertit le texte en minuscules.
- Variables :
company = "ACME CORP" - Expression :
{{ lower(company) }} - Resultat :
acme corp
upper(value)
Convertit le texte en majuscules.
- Variables :
country_code = "fr" - Expression :
{{ upper(country_code) }} - Resultat :
FR
capitalize(value)
Met la premiere lettre en majuscule et le reste en minuscules.
- Variables :
first_name = "jANE" - Expression :
{{ capitalize(first_name) }} - Resultat :
Jane
trim(value)
Supprime les espaces en debut et fin de chaine.
- Variables :
full_name = " Sophie Martin " - Expression :
{{ trim(full_name) }} - Resultat :
Sophie Martin
split(value, separator)
Decoupe une chaine en tableau.
- Variables :
email = "sophie.martin@gmail.com" - Expression :
{{ split(email, "@")[0] }} - Resultat :
sophie.martin
join(value, separator)
Assemble un tableau en chaine.
- Variables :
tags = "vip,priority,new" - Expression :
{{ join(split(tags, ","), " | ") }} - Resultat :
vip | priority | new
default(value, fallback)
Retourne fallback si value est null, undefined ou une chaine vide.
- Variables :
first_name = "jANE" - Expression :
{{ default(first_name, "customer") }} - Resultat :
jANE - Variables :
first_name = "" - Expression :
{{ default(first_name, "customer") }} - Resultat :
customer
contains(value, substring)
Verifie si le texte contient une sous-chaine.
- Variables :
email = "sophie.martin@gmail.com" - Expression :
{{ contains(email, "@gmail.com") }} - Resultat :
true
startsWith(value, prefix)
Verifie si le texte commence par un prefixe.
- Variables :
phone_number = "+14155550123" - Expression :
{{ startsWith(phone_number, "+1") }} - Resultat :
true
endsWith(value, suffix)
Verifie si le texte se termine par un suffixe.
- Variables :
email = "sophie.martin@gmail.com" - Expression :
{{ endsWith(email, ".fr") }} - Resultat :
false
Expressions cumulatives (composees)
Vous pouvez combiner plusieurs helpers et operateurs dans une seule expression.
- Normaliser + fallback + capitalize
- Expression :
{{ capitalize(default(trim(first_name), "customer")) }} - Resultat :
Jane
- Expression :
- Parser + transformer + conditionner
- Expression :
{{ endsWith(lower(split(email, "@")[1]), ".fr") ? "FR lead" : "Non-FR lead" }} - Resultat :
Non-FR lead
- Expression :
- Split + join + upper
- Expression :
{{ upper(join(split(tags, ","), " | ")) }} - Resultat :
VIP | PRIORITY | NEW
- Expression :
- Decision multi-conditions
- Expression :
{{ startsWith(phone_number, "+1") && contains(language, "fr") ? "NA-FR segment" : "other segment" }} - Resultat :
NA-FR segment
- Expression :
Exemple de message compose
Template
{{ contains(language, "fr") ? "Bonjour" : "Hello" }} {{ capitalize(default(trim(first_name), "customer")) }}, segment: {{ startsWith(phone_number, "+1") && contains(language, "fr") ? "NA-FR" : "other" }}.
Resultat
Bonjour Jane, segment: NA-FR.
Exemples copier/coller
- Salutation :
{{ gender == "Male" ? "Mr." : "Ms." }}
- Fallback sur le prenom :
{{ capitalize(default(first_name, "customer")) }}
- Entreprise en minuscules :
{{ lower(company) }}
- Nom utilisateur depuis l'email :
{{ split(email, "@")[0] }}
- Salutation conditionnelle :
{{ contains(language, "fr") ? "Bonjour" : "Hello" }}
Notes et limitations
- Les noms de fonctions inconnus ne sont pas executes.
- Les expressions invalides sont laissees telles quelles (le placeholder reste visible).
- Aucune execution JavaScript arbitraire n'est autorisee.
- Pour l'extraction des parametres de template WhatsApp, seuls les noms de variables simples sont traites comme "simple variables" ; les expressions complexes sont tout de meme evaluees au moment du rendu/envoi.