Skip to content

Balises de personnalisation prises en charge

Cet article de référence présente la liste complète des balises de personnalisation Liquid prises en charge.

Résumé des balises prises en charge

Voici un résumé des balises de personnalisation prises en charge. Pour plus de détails sur chaque type de balise et sur les bonnes pratiques, poursuivez votre lecture.

Attributs pris en charge

Les attributs de campagne, de carte et de Canvas ne sont pris en charge que dans les modèles d’envoi de messages correspondants (par exemple, dispatch_id n’est pas disponible dans les campagnes de messages in-app).

Consultez cet article d’aide pour en savoir plus sur la manière dont certains de ces attributs diffèrent d’une source à l’autre dans Braze.

Différences entre les balises Canvas et campagne

Le comportement des balises suivantes diffère entre Canvas et les campagnes :

  • Le comportement de dispatch_id diffère parce que Braze traite les étapes du Canvas comme des événements déclenchés, même lorsqu’elles sont « planifiées » (à l’exception des étapes d’entrée, qui peuvent être planifiées). Pour en savoir plus, consultez Comportement de l’ID de répartition.
  • La balise {{campaign.${name}}} utilisée avec Canvas affiche le nom du composant Canvas. Utilisée avec des campagnes, elle affiche le nom de la campagne.

Informations sur l’appareil le plus récemment utilisé

Vous pouvez utiliser les attributs suivants comme modèles pour l’appareil le plus récent de l’utilisateur, toutes plateformes confondues. Si un utilisateur n’a pas utilisé votre application (par exemple, si vous l’avez importé via l’API REST), ces valeurs seront toutes null.

Étant donné la grande diversité des opérateurs, des noms de modèles et des systèmes d’exploitation, nous vous conseillons de tester minutieusement tout code Liquid dont la logique conditionnelle dépend de l’une de ces valeurs. Ces valeurs seront null si elles ne sont pas disponibles sur un appareil donné.

Informations sur l’application ciblée

Pour les messages in-app, vous pouvez utiliser les attributs d’application suivants dans Liquid. Les valeurs sont basées sur la clé API du SDK que vos applications utilisent pour demander l’envoi de messages.

Par exemple, ce code Liquid annulera un message si l’application à l’origine de la demande ne correspond pas à l’une des deux clés API de la liste :

1
2
3
4
5
6
{% assign allowed_api_keys = 'sdk_api_key_1,sdk_api_key_2' | split: ',' %}
{% if allowed_api_keys contains {{app.${api_id}}} %}
User is in list of apps
{% else %}
{% abort_message("User not in list of apps") %}
{% endif %}

Informations sur l’appareil ciblé

Pour les notifications push, les messages in-app et les bannières, vous pouvez utiliser les attributs suivants comme modèles pour l’appareil qui reçoit le message. Une notification push, un message in-app ou une bannière peuvent inclure des attributs de l’appareil sur lequel l’utilisateur lit le message. Ces attributs ne fonctionnent pas avec les cartes de contenu ni les e-mails. Pour les e-mails, les messages sont générés avant l’envoi : l’appareil sur lequel l’utilisateur ouvrira l’e-mail est donc inconnu à ce moment-là.

Étant donné la grande diversité des opérateurs, des noms de modèles et des systèmes d’exploitation, nous vous conseillons de tester minutieusement toute logique conditionnelle qui dépend de l’une de ces valeurs. Ces valeurs seront null si elles ne sont pas disponibles sur un appareil donné.

De plus, pour les notifications push, il est possible que Braze ne puisse pas déterminer l’appareil associé à la notification dans certaines circonstances, par exemple si le jeton de notification push a été importé via l’API. Les valeurs seront alors null pour ces messages.

Exemple d'utilisation d'une valeur par défaut « there » lors de l'utilisation d'une variable de prénom dans un message de notification push.

Utiliser la logique conditionnelle au lieu d’une valeur par défaut

Dans certains cas, il peut être préférable d’utiliser une logique conditionnelle plutôt que de définir une valeur par défaut. La logique conditionnelle vous permet d’envoyer des messages différents selon la valeur d’un attribut personnalisé. Vous pouvez également l’utiliser pour interrompre les messages destinés aux clients dont les valeurs d’attribut sont nulles ou vides.

Cas d’utilisation

Supposons que vous envoyiez une notification de solde de récompenses à vos clients. Il n’existe pas de bonne méthode pour gérer les clients dont le solde est faible ou nul à l’aide de valeurs par défaut.

Dans ce cas, deux options peuvent être plus adaptées que la définition d’une valeur par défaut :

  1. Interrompre le message pour les clients dont les soldes sont faibles, nuls ou vides.

    1
    2
    3
    4
    5
    
    {% if {{custom_attribute.${balance}}} > 0 %}
    Your rewards balance is {{custom_attribute.${balance}}}
    {% else %}
    {% abort_message() %}
    {% endif %}
    
  2. Envoyer un message complètement différent à ces clients, par exemple :

    1
    2
    3
    4
    5
    
    {% if ${first_name} != blank and ${first_name} != null %}
    Hello {{${first_name} | default: 'there'}}, thanks for downloading!
    {% else %}
    Thanks for downloading!
    {% endif %}
    

Dans ce cas d’utilisation, un utilisateur dont le prénom est vide ou null recevra le message « Thanks for downloading! ». Pensez à inclure une valeur par défaut pour le prénom afin de vous assurer que votre client ne voit pas de code Liquid en cas d’erreur.

Balises de variables

Vous pouvez utiliser la balise assign pour créer une variable dans le compositeur de message. Nous vous recommandons de choisir un nom unique pour votre variable. Si vous créez une variable dont le nom est similaire à celui des balises de personnalisation prises en charge (comme language), cela peut affecter votre logique d’envoi de messages.

Une fois la variable créée, vous pouvez y faire référence dans votre logique d’envoi de messages ou dans votre message. Cette balise est particulièrement utile lorsque vous souhaitez reformater le contenu renvoyé par notre fonctionnalité de contenu connecté. Pour en savoir plus, consultez la documentation de Shopify sur les balises de variables.

Cas d’utilisation

Supposons que vous permettiez à vos clients d’échanger leurs points de fidélité contre des prix après avoir accumulé 100 points. Vous ne souhaitez donc envoyer des messages qu’aux clients dont le solde de points serait supérieur ou égal à 100 s’ils effectuaient cet achat supplémentaire :

1
2
3
4
5
6
{% assign new_points_balance = {{custom_attribute.${current_rewards_balance} | plus: 50}} %}
{% if new_points_balance >= 100 %}
Make a purchase to bring your rewards points to {{new_points_balance}} and cash in today!
{% else %}
{% abort_message('not enough points') %}
{% endif %}

Balises d’itération

Les balises d’itération permettent d’exécuter un bloc de code de manière répétée. Le cas d’utilisation ci-dessous illustre l’utilisation de la balise for.

Cas d’utilisation

Supposons que vous ayez une promotion sur les baskets Nike et que vous souhaitiez envoyer des messages aux clients qui ont exprimé leur intérêt pour Nike. Vous disposez d’un tableau de marques de produits consultées sur le profil de chaque client. Ce tableau peut contenir jusqu’à 25 marques, mais vous ne voulez envoyer des messages qu’aux clients qui ont vu un produit Nike parmi leurs 5 consultations les plus récentes.

1
2
3
4
5
6
7
8
9
10
{% for items in {{custom_attribute.${Brands Viewed}}} limit:5 %}
{% if {{items}} contains 'Converse' %}
{% assign converse_viewer = true %}
{% endif %}
{% endfor %}
{% if converse_viewer == true %}
Sale on Converse!
{% else %}
{% abort_message() %}
{% endif %}

Dans ce cas d’utilisation, nous examinons les cinq premiers éléments du tableau des marques de baskets consultées. Si l’un de ces éléments est Converse, nous créons la variable converse_viewer et la définissons sur true.

Ensuite, nous envoyons le message de promotion lorsque converse_viewer est true. Sinon, nous interrompons le message.

Ceci est un exemple simple d’utilisation des balises d’itération dans le compositeur de messages de Braze. Pour en savoir plus, consultez la documentation de Shopify sur les balises d’itération.

Balises de syntaxe

Les balises de syntaxe permettent de contrôler le rendu du Liquid. Vous pouvez utiliser la balise echo pour renvoyer une expression. Cela revient à entourer une expression avec des accolades, sauf que vous pouvez utiliser cette balise à l’intérieur d’autres balises Liquid. Vous pouvez également utiliser la balise liquid pour écrire un bloc Liquid sans délimiteur sur chaque balise. Chaque balise doit alors figurer sur sa propre ligne. Consultez la documentation de Shopify sur les balises de syntaxe pour plus d’informations et d’exemples.

Grâce au contrôle des espaces, vous pouvez supprimer les espaces autour de vos balises et ainsi mieux maîtriser l’apparence de la sortie Liquid.

Codes de statut HTTP

Vous pouvez exploiter le statut HTTP d’un appel au contenu connecté en l’enregistrant d’abord dans une variable locale, puis en utilisant la clé __http_status_code__. Par exemple :

1
2
3
4
{% connected_content https://example.com/api/endpoint :save connected %}
{% if connected.__http_status_code__ != 200 %}
{% abort_message('Connected Content returned a non-200 status code') %}
{% endif %}

Envoyer des messages en fonction de la langue, des paramètres régionaux les plus récents et du fuseau horaire

Dans certaines situations, vous pouvez souhaiter envoyer des messages spécifiques à certaines locales. Par exemple, le portugais brésilien est généralement différent du portugais européen.

Cas d’utilisation : Localiser en fonction des paramètres régionaux récents

Voici un exemple montrant comment utiliser les paramètres régionaux les plus récents pour affiner la localisation d’un message internationalisé.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{% if ${language} == 'en' %}
Message in English
{% elsif  ${language} == 'fr' %}
Message in French
{% elsif  ${language} == 'ja' %}
Message in Japanese
{% elsif  ${language} == 'ko' %}
Message in Korean
{% elsif  ${language} == 'ru' %}
Message in Russian
{% elsif ${most_recent_locale} == 'pt_BR' %}
Message in Brazilian Portuguese
{% elsif ${most_recent_locale} == 'pt_PT' %}
Message in European Portuguese
{% elsif  ${language} == 'pt' %}
Message in default Portuguese
{% else %}
Message in default language
{% endif %}

Dans ce cas d’utilisation, les clients dont la locale la plus récente est pt_BR recevront un message en portugais brésilien, et ceux dont la locale la plus récente est pt_PT recevront un message en portugais européen. Les clients qui ne remplissent pas les deux premières conditions mais dont la langue est le portugais recevront un message dans le type de portugais que vous aurez choisi par défaut.

Cas d’utilisation : Cibler les utilisateurs par fuseau horaire

Vous pouvez également cibler les utilisateurs en fonction de leur fuseau horaire. Par exemple, envoyer un message aux utilisateurs situés dans le fuseau EST et un autre à ceux du fuseau PST. Pour ce faire, enregistrez l’heure actuelle en UTC et comparez-la avec l’heure de l’utilisateur via une instruction if/else afin d’envoyer le bon message pour le bon fuseau horaire. Pensez à configurer la campagne pour qu’elle soit envoyée dans le fuseau horaire local de l’utilisateur, afin qu’il la reçoive au moment opportun.

Voici un exemple de message envoyé entre 14 h et 15 h, avec un contenu spécifique pour chaque fuseau horaire.

1
2
3
4
5
6
7
8
{% assign hour_in_utc = 'now' | date: '%H' | plus:0 %}
{% if hour_in_utc >= 19 && hour_in_utc < 20 %}
It is between 2:00:00 pm and 2:59:59 pm ET!
{% elsif hour_in_utc >= 22 && hour_in_utc < 23 %}
It is between 2:00:00 pm and 2:59:59 pm PT!
{% else %}
{% abort_message %}
{% endif %}

Envoyer des messages avec un nombre aléatoire

La balise {% random %} renvoie un nombre aléatoire. Vous pouvez l’utiliser pour une logique de type A/B, un échantillonnage ou pour varier le contenu des messages.

Cas d’utilisation : Envoyer des variantes aléatoires aux utilisateurs

1
2
3
4
5
6
7
{% capture roll_str %}{% random %}{% endcapture %}
{% assign roll = roll_str | plus: 0 %}
{% if roll < 0.5 %}
Show variant A
{% else %}
Show variant B
{% endif %}
New Stuff!