fr
Expressions de templates de campagne

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 suggere capitalize(...).
  • 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
  • Parser + transformer + conditionner
    • Expression : {{ endsWith(lower(split(email, "@")[1]), ".fr") ? "FR lead" : "Non-FR lead" }}
    • Resultat : Non-FR lead
  • Split + join + upper
    • Expression : {{ upper(join(split(tags, ","), " | ")) }}
    • Resultat : VIP | PRIORITY | NEW
  • Decision multi-conditions
    • Expression : {{ startsWith(phone_number, "+1") && contains(language, "fr") ? "NA-FR segment" : "other segment" }}
    • Resultat : NA-FR segment

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.