Les variables, également appelées tags de personnalisation ou tags de fusion, vous permettent d’insérer des données personnalisées pour chaque destinataire, comme son prénom ou son achat le plus récent. Les filtres modifient la façon dont ces données apparaissent.
Comment utiliser les filtres ?
Vous utilisez les filtres à l’intérieur de doubles accolades {{ }} avec une barre verticale |. Par exemple :
| Entrée | Sortie |
| {{ contact.FIRSTNAME|upper }} | EMILIA |
Vous pouvez enchaîner plusieurs filtres, de sorte que la sortie d’un filtre soit transmise au suivant. Par exemple :
| Entrée | Sortie |
| {{ contact.FIRSTNAME|title|truncatechars:4 }} | EMIL |
Pour insérer une variable avec des filtres dans un message, deux choix s'offrent à vous :
-
Taper manuellement la variable et les filtres, ou
-
Sélectionner une variable existante et modifier sa syntaxe dans l’onglet Paramètres avancés.
💬 Insérer une valeur par défaut
default
Insère une valeur de repli si une variable est vide.
| Entrée | Sortie |
| Bonjour {{ contact.FIRSTNAME|default:'there' }} | Bonjour cher client, |
🔠 Format de la casse
capfirst
Met en majuscule le premier caractère.
| Entrée | Sortie |
| {{ contact.MESSAGE|capfirst }} | Ma voiture rouge |
title
Met en majuscules la première lettre de chaque mot.
| Entrée | Sortie |
| {{ contact.FULLNAME|title }} | John Doe |
upper
Convertit tous les caractères en majuscules.
| Entrée | Sortie |
| {{ contact.FULLNAME|upper }} | JOHN DOE |
lower
Convertit tous les caractères en minuscules.
| Entrée | Sortie |
| {{ contact.FULLNAME|lower }} | john doe |
truncatechars
Raccourcit une chaîne en N caractères. Les valeurs tronquées se termineront par des points de suspension (...) inclus dans le nombre de caractères.
| Entrée | Sortie |
| {{ contact.MANAGER|truncatechars:7 }} | Elisab… |
🔢 Format des numéros
floatformat
Arrondit les valeurs flottantes jusqu’à un nombre spécifié de décimales.
| Entrée | Sortie |
| {{ params.total|floatformat:2 }} | 40.32 |
| {{ params.total|floatformat:0 }} | 40 |
integer
Convertit un nombre au format chaîne de caractères ou virgule flottante en un nombre entier.
| Entrée | Sortie |
| {{ 10.578|integer }} | 10 |
| {{ "16.765"|integer }} | 16 |
float
Convertit un nombre au format chaîne ou entier en un nombre à virgule flottante.
| Entrée | Sortie |
| {{ 10|float }} | 10.000000 |
| {{ "16.765"|float }} | 16.765000 |
lang_format
Met en forme les nombres selon une langue.
| Entrée | Sortie |
| {{ params.number|lang_format:"fr" }} | 123 456,789 |
| {{ params.number|lang_format:"en" }} | 123,456.789 |
| {{ params.number|lang_format:"hi" }} | 1,23,456.789 |
| {{ params.number|lang_format:"bn" }} | ১,২৩,৪৫৬.৭৮৯ |
| {{ params.number|lang_format:"fr,%.2f" }} | 123 456,79 |
-
Pour forcer 2 décimales, ajoutez
,%.2faprès le filtre de langue. - Pour le français, le séparateur de milliers est un espace insécable.
📅 Format de la date et de l'heure
time_parse
- Les noms de jour et mois (complets et abrégés) doivent être en anglais.
- La date/heure de référence est "lundi 2 janvier 15:04:05 -0700 MST 2006".
- Les valeurs manquantes sont par défaut à 0.
- Le fuseau horaire par défaut est UTC.
- Les mots-clés am/pm peuvent être utilisés.
- Les fuseaux horaires peuvent être des mots-clés (MST, CET, UTC, Asie/Kolkata) ou des décalages numériques (+0100, -0100).
Convertit une chaîne de dates en un horodatage standard pouvant être utilisé avec d’autres filtres, comme date ou date_i18n.
Lorsque vous utilisez votre format de date comme argument, écrivez la date et l’heure exactement comme l’heure de référence le serait si c’était la valeur.
| Entrée | Sortie |
| {{ params.MY_DATE|time_parse:"Monday 02 January 2006" }} | Tuesday 11 March 2021 |
Utilisez time_parse_rfc3339 pour les chaînes mises en forme en RFC3339 sans fournir de format personnalisé.
date
Convertit un horodatage ou une date analysée en un format spécifié. Utilisez-le avec une date analysée via time_parse ou avec l’heure actuelle en utilisant time_now.
| Entrée | Sortie |
| {{ "14:01 01/06/2018"|time_parse:"15:04 02/01/2006"|date:"Mon Jan 2 15:04:05 2006" }} | Fri Jun 1 14:01:00 2018 |
| {{ time_now|date:"Monday, Jan 2, 2006" }} | Imprimera le jour et la date en cours au format spécifié |
| {{ time_now|date:"02/01/2006" }} | Imprimera le jour et la date en cours au format spécifié |
| {{ time_now|date:"01" }} | Imprimera le mois en cours |
| {{ time_now|date:"02" }} | Imprimera le jour en cours |
| {{ time_now|date:"2006" }} | Imprimera l'année en cours |
date_i18n
Convertit un horodatage ou une date analysée en un format spécifié, la sortie s'affichant dans une langue spécifique. Ce filtre fonctionne comme date, mais vous devez d’abord spécifier la langue, suivie du format.
Les langues prises en charge sont en, fr, it, es, de et pt.
| Entrée | Sortie |
| {{ "14:01 01/06/2018" | time_parse:"15:04 02/01/2006"|date_i18n:"en,Monday" }} | Friday |
| {{ "14:01 01/06/2018" | time_parse:"15:04 02/01/2006"|date_i18n:"de,Monday" }} | Freitag |
time_add_date
Ajoute des années, des mois et des jours à un horodatage ou une date analysée. Vous devez préciser l’heure à ajouter dans l'ordre année, mois, jour.
| Entrée | Sortie |
| {{ time_now|time_add_date:"1,2,3" }} | Imprimera l'horodatage après avoir ajouté 1 an, 2 mois et 3 jours à la valeur temporelle de l'horodatage actuel. |
| {{ "14:01 01/06/2018"|time_parse:"15:04 02/01/2006"|time_add_date: "1,2,3" }} | 2019-08-04 14:01:00 +0000 UTC |
time_in_location
Convertit un horodatage ou une date analysée en un fuseau horaire spécifié. Vous devez spécifier le fuseau horaire au format lieu/fuseau horaire.
| Entrée | Sortie |
| {{ time_now|time_in_location:"Europe/Berlin" }} | Imprimera l'heure actuelle en CEST |
| {{ "14:01 01/06/2018"|time_parse:"15:04 02/01/2006"|time_in_location: "Europe/Berlin" }} | 2018-06-01 16:01:00 +0200 CEST |
time_add_duration
Ajoute des heures, minutes et secondes à un horodatage ou une date analysée. Vous devez spécifier la valeur au format h,m,s et transmettre au moins une valeur (heure, minute ou seconde) dans le filtre.
| Entrée | Sortie |
| {{ time_now|time_add_duration:"1h2m3s" }} | Imprimera l'horodatage après avoir ajouté 1 heure, 2 minutes et 3 secondes à la valeur temporelle de l'horodatage actuel |
| {{ time_now|time_add_duration:"30m" }} | Imprimera l'horodatage après avoir ajouté 30 minutes à la valeur du temps |
time_unix
Convertit une valeur de temps en horodatage Unix en secondes.
| Entrée | Sortie |
| {{ time_now|time_unix }} | Imprimera l'horodatage Unix actuel en secondes. |
time_unix_nano
Convertit une valeur de temps en horodatage Unix en nanosecondes.
| Entrée | Sortie |
| {{ time_now|time_unix_nano }} | Imprimera l'horodatage Unix actuel en nanosecondes |
🧑💻 Encoder ou encrypter des données
base64_encode ou decode
Encode ou décode la base 64 :
- base64_decode décode une chaîne de caractères vers un []byte
- base64_encode encode un []byte en une chaîne de caractères.
| Entrée | Sortie |
| https://exemple.com/test?nom={{ contact.FIRSTNAME|base64_encode }} | https://example.com/test?name=RW56bw== (au lieu de https://example.com/test?name=Enzo) |
Les filtres base64_encode et decode peuvent prendre un paramètre d'encodage optionnel :
- std: encodage normal base64,
- raw_std: encodage normal base64, sans les caractères de remplissage =,
- url: version sécurisée de l'encodage base64 pour les URL, + et / sont remplacés par - et _ respectivement,
- raw_url: une combinaison de raw et url.
aes_128, 192, ou 256
Encrypte une valeur. Par exemple, vous pouvez utiliser ce filtre pour envoyer des informations de contact cryptées dans une URL, comme une adresse email ou un identifiant.
La variante AES utilisée dépend de la longueur de la clé fournie :
| Longueur de la clé secrète | Variante AES |
| 16 octets (128 bits) | AES-128 |
| 24 octets (192 bits) | AES-192 |
| 32 octets (256 bits) | AES-256 |
Par exemple, pour la variante AES-256, la variable doit être mise en forme comme suit {{ contact.ATTRIBUTE | aes_256:'key' }}, où la clé doit :
- être composée de 32 chiffres ;
- être générée de façon aléatoire ;
- doit persister de votre côté afin de pouvoir décrypter la valeur d'origine.
Par défaut, si aucun paramètre d'encodage n'est défini, base64 std sera utilisé. Les paramètres suivants sont également pris en charge :
- raw_std: encodage normal base64, sans les caractères de remplissage =,
- url: version sécurisée de l'encodage base64 pour les URL, + et / sont remplacés par - et _ respectivement,
- raw_url: une combinaison de raw et url.
Dans nos exemples ci-dessous, nous chiffrons les adresses email de nos contacts à l'aide de la clé suivante : e5a34a481274c776856d04119bed8188. Notez que vous ne devez pas utiliser la même clé, mais plutôt générer votre propre clé en respectant les exigences ci-dessus.
| Encodage | Entrée | Sortie |
| Aucun encodage (encodage base64 std par défaut) | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188' }} | Imprime une chaîne aléatoire qui doit être décryptée pour lire la valeur d'origine |
| Encodage base64 raw_std | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188,raw_std' }} | Imprime une chaîne aléatoire qui doit être décryptée pour lire la valeur d'origine |
| Encodage base64 url | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188,url' }} | Imprime une chaîne aléatoire qui doit être décryptée pour lire la valeur d'origine |
| Encodage base64 raw_url | {{ contact.EMAIL | aes_256:'e5a34a481274c776856d04119bed8188,raw_url' }} | Imprime une chaîne aléatoire qui doit être décryptée pour lire la valeur d'origine |
🔎 Autres filtres
first
Renvoie le premier élément d'une séquence, d'un mappage ou d'une chaîne.
| Entrée | Demande API | Sortie |
| {{ params.array|first }} | "params" : { "array" : [ 1,2,3,4 ] } |
1 |
join
Combine les éléments d'un tableau en une seule chaîne de caractères en utilisant l'argument comme séparateur.
Le séparateur entre les éléments est vide par défaut. Vous pouvez le définir avec le premier paramètre facultatif.
| Entrée | Sortie |
| {{ [1, 2, 3]|join }} | 123 |
| {{ [1, 2, 3]|join: '|' }} | 1|2|3 |
last
Renvoie le dernier élément d'une séquence, d'un mappage ou d'une chaîne.
| Entrée | Sortie |
| {{ [1, 2, 3, 4]|last }} | 4 |
length
Renvoie le nombre d'éléments d'une séquence ou d'un mappage, ou la longueur d'une chaîne.
| Entrée | Sortie |
| {{ ['a', 'b', 'c', 'd']|length }} | 4 |
safe
Marque une chaîne de caractères comme ne nécessitant pas d'échappement HTML supplémentaire avant la sortie.
| A | Demande API | Entrée | Sortie | |
| "params" :{HtmlTest: "<p>This is my test sentence.</p>"} | {{ params.htmltest|safe }} | This is my test sentence | ||
| B | Attribut de contact | Placeholder | Entrée | Sortie |
| EMAIL_SALUTATION | Welcome to <b>Brevo</b>, we're glad to have you here | {{ contact.EMAIL_SALUTATION|safe }} | Welcome to Brevo, we're glad to have you here | |
Sans le filtre safe, la balise HTML s'afficherait comme une chaîne normale dans l'e-mail du destinataire : "<p>This is my test sentence</p>" ou "Welcome to <b>Brevo</b>, we're glad to have you here".
slice
Extrait une tranche d'une séquence, d'un mappage ou d'une chaîne.
Ce filtre peut être configuré pour :
| A | Ne passer en boucle que le premier nombre "n" d'éléments d'un tableau | Dans ces deux cas, rappelez-vous que les éléments d'un tableau se voient attribuer un numéro de position unique commençant par "0" comme première position (ils sont "indexés à zéro"). |
| B | Passer en boucle les éléments entre deux positions spécifiées ("n" et "m") dans le tableau. | |
| C | Passer en boucle les éléments entre deux éléments spécifiés dans un tableau. |
Dans chaque exemple, considérez que votre tableau contient les éléments suivants : ["a","b","c","d","e","f","g","h"...].
| Entrée | Sortie | |
| A |
{% for product in params.products|slice:':5' %} {{ product.name }} - {{ product.price }} {% endfor %} |
Passera en boucle les 5 premières positions (0-4), qui sont : ["a","b","c","d","e"] |
| B |
{% for product in params.products|slice:'2:3' %} {{ product.name }} - {{ product.price }} {% endfor %} |
Passera en boucle les positions (2-3), qui sont : ["c","d"] |
| C |
{% for product in params.products|slice:'b:d' %} {{ product.name }} - {{ product.price }} {% endfor %} |
Passera en boucle les éléments spécifiés, qui sont : ["b","c","d"] |
verbatim
Dans Brevo, les variables s’écrivent à l’aide de doubles accolades comme {{ params.property }}. Lorsque vous incluez des doubles accolades comme {{ this }} dans votre email, Brevo considère cela comme un élément de template.
Pour afficher {{ }} en texte brut dans votre email, enveloppez le contenu dans un bloc {% verbatim %} :
| Entrée | Sortie |
|---|---|
|
{% verbatim %} {{ Print variable }} {% endverbatim %} |
{{ Print variable }} |
autoescape
Par défaut, Brevo échappe tout le contenu variable, y compris HTML et JavaScript. Cela signifie que si votre variable contient du code HTML (par exemple, <h1>Mon titre</h1>), elle sera affichée en texte brut plutôt qu’en HTML.
Pour permettre le rendu HTML, vous devez désactiver l’autoescape avec le tag {% autoescape off %}. Enveloppez la variable dans ce bloc et fermez-la avec {% endautoescape %} :
{% autoescape off %}{{ params.my_html }}{% endautoescape %}
| Entrée | Sortie | |
|---|---|---|
| Sans la balise autoescape | {{ params.my_html }} | <h1>Mon titre</h1> |
| Avec la balise autoescape |
{% autoescape off %} {{ params.my_html }} {% endautoescape %} |
Mon titre |
📖 Ressources complémentaires
Le langage de template de Brevo est basé sur Pongo2, qui est une réimplémentation de Django en Go (un langage de programmation).
Tags supportés
autoescape, comment, cycle, filter, firstof, for, if, ifchanged, now, set, spaceless, templatetag, with.
Filtres supportés
escape, safe, escapejs, add, addslashes, capfirst, center, cut, date, default, default_if_none, divisibleby, first, floatformat, get_digit, iriencode, join, last, length, length_is, linebreaks, linebreaksbr, linenumbers, ljust, lower, make_list, phone2numeric, pluralize, random, removetags, rjust, slice, stringformat, striptags, time, title, truncatechars, truncatechars_html, truncatewords, truncatewords_html, upper, urlencode, urlize, urlizetrunc, wordcount, wordwrap, yesno.
Filtres supportés pour les algorithmes de hachage
hash_md5, hash_sha256, hash_sha256_224, hash_sha512, hash_sha512_224, hash_sha512_256, hash_sha512_384, hash_sha3_224, hash_sha3_256, hash_sha3_384, hash_sha3_512.
🤔 Vous avez des questions ?
Pour toute question, n’hésitez pas à contacter notre service client en créant un ticket à partir de votre compte. Si vous n’avez pas encore de compte, vous pouvez nous contacter ici.
Si vous avez besoin d'aide pour un projet impliquant Brevo, nous pouvons vous mettre en relation avec une agence partenaire Brevo.