Questions fréquemment posées
Sur cette page, vous trouverez des réponses aux questions fréquemment posées sur Liquid.

Braze ne prend pas actuellement en charge 100 % du Liquid de Shopify, mais seulement certaines parties que nous avons tenté de décrire dans notre documentation. Testez tous les messages utilisant Liquid avant de les envoyer afin de réduire le risque d’erreurs ou d’utilisation de Liquid non pris en charge.
À propos de Liquid dans Braze
Comment utiliser les extraits de code Liquid dans Braze ?
Dans de nombreux cas, vous pouvez incorporer des extraits de code Liquid en accédant à vos Campaigns ou Canvas et en insérant du Liquid dans la fenêtre modale de personnalisation, dans des zones telles que le corps du message e-mail ou dans vos Segments.
Où puis-je en savoir plus ?
Pour en savoir plus sur Liquid, consultez notre parcours guidé Personnalisation dynamique avec Liquid sur Braze Learning. Vous pouvez également consulter la bibliothèque de cas d’usage Liquid pour trouver de l’inspiration et une variété d’exemples de personnalisation utilisant Liquid.
Quelle est la différence entre l’utilisation de Liquid et du contenu connecté pour la personnalisation ?
Le contenu connecté de Braze est un exemple d’étiquette Liquid. Il est également utilisé pour la personnalisation, mais les données proviennent d’un endpoint externe plutôt que de données stockées dans Braze. Consultez notre section dédiée au contenu connecté pour en savoir plus sur les façons d’étendre la personnalisation de vos messages.
Qu’est-ce que le templating Liquid ?
C’est la manière la plus courante d’utiliser Liquid dans Braze. Le templating Liquid consiste à extraire des données du profil d’un utilisateur pour les intégrer dans un message. Ces données peuvent aller du prénom de l’utilisateur aux événements personnalisés issus d’un message déclenché par un événement.
Consultez les tags de personnalisation pris en charge pour obtenir la liste complète des étiquettes Liquid prises en charge.
L’utilisation de Liquid consomme-t-elle des points de donnée ?
Non.
Balises de personnalisation et sources de données
Comment puis-je utiliser Liquid pour envoyer un message d’accueil personnalisé ?
Pour un message d’accueil personnalisé utilisant le prénom d’un utilisateur, récupérez les attributs standard du profil utilisateur tels que {{${first_name}}} et {{${last_name}}}.
Vous pouvez également utiliser une instruction Liquid {% if X %} pour effectuer un rendu conditionnel basé sur n’importe quel critère, comme le jour de la semaine ou des attributs personnalisés. Pour plus d’informations sur les opérateurs Liquid pris en charge dans les instructions conditionnelles, consultez Opérateurs.
Comment puis-je personnaliser un message en fonction de la localisation d’un utilisateur ?
Il existe un attribut par défaut pour la localisation de l’utilisateur : {{${most_recent_location}}}.
Quelle est la différence entre {{campaign.${name}}} et {{campaign.${message_name}}} ?
{{campaign.${name}}} et {{campaign.${message_name}}} sont toutes deux des balises de personnalisation Liquid prises en charge. Ces deux balises font référence aux attributs de la Campaign. {{campaign.${name}}} désigne le nom de votre Campaign, et {{campaign.${message_name}}} est le nom de votre variante de message.
Pour l’utilisation dans les URL et les chaînes de requête (par exemple, lorsqu’un nom contient % ou des espaces), consultez Noms de Campaign dans les URL.
Comment utiliser Liquid avec des objets imbriqués ?
Braze dispose d’une fonctionnalité intégrée qui génère du code Liquid pour les Segments pouvant être utilisés dans un message. Plus précisément, vous pouvez créer un Segment qui correspond à plusieurs critères au sein d’un objet.
Pour plus d’informations, consultez Segmentation multicritère.
Comment utiliser les attributs d’événement pour personnaliser un message déclenché par un événement ?
Vous pouvez accéder aux propriétés des événements déclenchés par API avec la balise api_triggered_property : {{api_trigger_properties.${attribute_key}}}.
Braze prend-il en charge un tableau de tableaux en Liquid ?
Liquid ne prend pas nativement en charge les tableaux de tableaux. Stockez les valeurs sous forme de tableau de chaînes de caractères séparées par des virgules et utilisez le filtre split pour les analyser au besoin.
Variables et syntaxe
Comment assigner des variables avec Liquid ?
Vous pouvez créer et assigner des variables en utilisant la balise assign. Cela crée une variable dans le compositeur de messages qui peut également être référencée dans l’ensemble de votre message.
Quand dois-je utiliser assign plutôt que capture ?
assign et capture créent tous deux des variables Liquid, mais ils servent des objectifs différents :
assignest destiné aux variables simples qui stockent une seule valeur, comme un booléen, un nombre ou une chaîne de caractères simple. Vous pouvez également appliquer un seul filtre sur la même ligne.captureest destiné au stockage d’un bloc de texte pouvant inclure plusieurs variables, chaînes de caractères ou expressions complexes.
Utilisez capture lorsque la valeur est trop complexe pour une seule instruction assign, comme des URL qui utilisent d’autres variables Liquid ou des attributs personnalisés comme paramètres. capture est également préféré lors de l’implémentation de variables Liquid dans le corps des appels de contenu connecté.
Exemples
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{% comment %}Use assign for custom attributes{% endcomment %}
{% assign name = {{custom_attribute.${first_name}}} %}
{% assign price = {{custom_attribute.${price}}} | plus: 0 %}
{% comment %}Use assign for a simple variable{% endcomment %}
{% assign discount_label = "20% off" %}
Hello {{ customer.first_name | default: "there" }}, enjoy {{ discount_label }} on your next order!
{% comment %}Use capture for complex strings{% endcomment %}
{% capture greeting %}Hello, {{custom_attribute.${first_name}}}! Your order #{{custom_attribute.${order_id}}} is ready.{% endcapture %}
{{ greeting }}
{% comment %}Use capture to create conditional content{% endcomment %}
{% capture promo_block %}
{% if customer.vip == true %}
As a VIP member, you get free shipping.
{% else %}
Join our VIP program to unlock free shipping.
{% endif %}
{% endcapture %}
Les variables Liquid sont-elles partagées entre la ligne d’objet et le corps du message ?
Non. Braze effectue le rendu de chaque composant du message séparément (comme la ligne d’objet, le corps HTML, l’accroche et le titre push). Les assignations ou captures que vous effectuez dans un champ ne sont pas disponibles dans un autre. Répétez l’appel Liquid ou de contenu connecté dans chaque champ qui nécessite la valeur.
Qu’est-ce que la logique de boucle for et comment l’utiliser ?
Les boucles for sont également connues sous le nom de balises d’itération. L’utilisation de la logique de boucle for dans vos extraits Liquid vous permet de parcourir des blocs Liquid jusqu’à ce qu’une condition soit remplie.
Dans Braze, cela peut être utilisé pour vérifier des éléments dans un attribut personnalisé de type tableau, ou une liste de valeurs et d’objets renvoyés par un catalogue, une sélection ou une réponse d’appel de contenu connecté. Plus précisément, vous pouvez utiliser la logique de boucle for dans vos messages pour vérifier si un produit est en stock ou s’il a une note minimale.
Par exemple, supposons que vous ayez un catalogue appelé « Games » qui contient une sélection appelée « cheap_games ». Pour récupérer les titres des jeux dans « cheap_games », vous pouvez utiliser cet extrait Liquid :
1
2
3
4
{% catalog_selection_items Games cheap_games %}
{% for item in items %}
Get this game: {{ item.title }}
{% endfor %}
Une fois les conditions définies remplies, votre message peut être envoyé. L’utilisation de cette logique est un moyen pratique de gagner du temps, au lieu de répéter des blocs Liquid pour différentes conditions.
Qu’est-ce que la logique d’abandon et comment l’utiliser ?
La logique d’abandon vous permet d’empêcher l’envoi d’un message si les conditions sont remplies. Cela est particulièrement utile pour éviter l’envoi de messages incomplets à vos utilisateurs. Pour des exemples de logique d’abandon dans vos Campaigns marketing, consultez Abandon de messages.
Puis-je utiliser Liquid à l’intérieur de la balise abort_message ?
Non. La balise {% abort_message %} accepte une chaîne de caractères statique entre guillemets, pas de personnalisation Liquid. Utilisez une autre logique Liquid avant la balise si vous avez besoin d’un comportement d’abandon conditionnel.
Comment masquer des numéros de téléphone avec Liquid ?
Vous pouvez masquer des numéros de téléphone en utilisant le filtre slice pour extraire des chiffres spécifiques et le filtre append pour les combiner avec des caractères de masquage.
Masquer tout sauf les quatre derniers chiffres
Pour afficher un numéro de téléphone à 10 chiffres sous la forme ******7890 :
1
2
3
4
5
6
7
8
9
{% assign phone = {{${phone_number}}} | split: '' %}
{% assign masked_phone = '' %}
{% for i in (0..5) %}
{% assign masked_phone = masked_phone | append: '*' %}
{% endfor %}
{% for i in (6..9) %}
{% assign masked_phone = masked_phone | append: phone[i] %}
{% endfor %}
{{ masked_phone }}
Afficher les trois premiers et les quatre derniers chiffres
Pour afficher un numéro de téléphone à 10 chiffres sous la forme 123***7890 :
1
2
3
4
{% assign first_part = {{${phone_number}}} | slice: 0, 3 %}
{% assign last_part = {{${phone_number}}} | slice: -4, 4 %}
{% assign masked_phone_number = first_part | append: "***" | append: last_part %}
{{ masked_phone_number }}
Canvas, catalogues et propriétés de déclenchement
Pourquoi mon Liquid déclenché par API échoue-t-il dans Braze ?
Une paire d’accolades supplémentaire est une cause fréquente. Par exemple, {{{api_trigger_properties.${attribute_key}}}} n’est pas une syntaxe de personnalisation Braze valide. Utilisez exactement deux accolades ouvrantes et deux accolades fermantes : {{api_trigger_properties.${attribute_key}}}.
Existe-t-il des limites de taille pour les propriétés de contexte Canvas ?
Braze n’impose pas de limite stricte sur les propriétés de contexte Canvas, mais maintenez les payloads en dessous d’environ 1 Ko (~1 000 caractères). Les objets plus volumineux peuvent augmenter l’utilisation de la mémoire et retarder le rendu des messages lors d’envois à fort volume.
Pourquoi est-ce que j’obtiens une erreur Liquid lors de la prévisualisation de certains types de données dans le tableau de bord ?
Certains types de propriétés de contexte Canvas nécessitent une conversion dans Liquid avant de pouvoir les utiliser dans des comparaisons ou des calculs. Par exemple, lorsque vous avez besoin d’un comportement numérique :
1
{{context.${property_name} | plus: 0}}
Pourquoi mon extrait Liquid de catalogue renvoie-t-il un message d’abandon ?
Si un extrait Liquid de catalogue s’interrompt lors de l’envoi, recréez l’extrait à partir du menu de personnalisation en sélectionnant des éléments de catalogue individuels au lieu d’utiliser une sélection en masse ou entièrement dynamique. Consultez Catalogues et Sélections.
Content Blocks et le compositeur de messages
Pourquoi y a-t-il un espacement supplémentaire dans les messages qui utilisent des Content Blocks ?
Si vous remarquez un espacement supplémentaire dans les messages envoyés qui utilisent des Content Blocks avec Liquid, il se peut que vous ayez des sauts de paragraphe ou de ligne inutiles dans vos instructions conditionnelles. Écrivez vos instructions conditionnelles sur une seule ligne plutôt que sur plusieurs lignes.
Exemple
1
{% if {{custom_attribute.${has_discount}}} == true %}Discounted Item{% elsif {{custom_attribute.${is_new_arrival}}} == true %}New Arrival{% else %}Regular Item{% endif %}
Pourquoi le Liquid multiligne crée-t-il des espaces blancs inattendus dans les éditeurs par glisser-déposer ?
Lorsque le code Liquid est réparti sur plusieurs lignes dans l’éditeur par glisser-déposer de messages in-app ou l’éditeur par glisser-déposer d’e-mails, chaque bloc {% %} est rendu sous forme de texte non visible. Les sauts de ligne sont conservés sous forme de lignes vides avant la sortie visible, ce qui provoque des espaces blancs inattendus.
Solution 1 : Utiliser les balises de contrôle des espaces blancs (recommandé)
Ajoutez des tirets à l’intérieur des délimiteurs de balise pour supprimer les espaces blancs environnants tout en gardant le code lisible :
1
2
3
4
5
{%- assign event_date = {{custom_attribute.${PreferredPickupDate}}} | date: "%s" -%}
{%- assign today = 'now' | date: "%s" -%}
{%- assign difference = event_date | minus: today -%}
{%- assign difference_days = difference | divided_by: 86400 -%}
Only {{ difference_days }} days until your move!
Solution 2 : Regrouper le Liquid sur une seule ligne
Supprimez tous les sauts de ligne pour que le Liquid soit sur une seule ligne continue :
1
{% assign event_date = {{custom_attribute.${PreferredPickupDate}}} | date: "%s" %}{% assign today = 'now' | date: "%s" %}{% assign difference = event_date | minus: today %}{% assign difference_days = difference | divided_by: 86400 %}Only {{ difference_days }} days until your move!
Les deux approches empêchent l’apparition de lignes vides indésirables dans votre message rendu. Cela s’applique à l’éditeur par glisser-déposer de messages in-app, à l’éditeur par glisser-déposer d’e-mails et aux Content Blocks avec Liquid. Pour en savoir plus, consultez Contrôle des espaces blancs.
Pourquoi mon Content Block n’apparaît-il pas sous Row dans l’outil de recherche par glisser-déposer ?
Certains Content Blocks n’apparaissent pas sous Row dans la recherche de l’éditeur par glisser-déposer. Ajoutez un bloc HTML depuis l’onglet Content (Advanced), puis insérez l’étiquette Liquid du Content Block dans ce bloc HTML pour afficher le contenu du bloc.
Pourquoi l’aperçu de mon Content Block par glisser-déposer diffère-t-il de la vue de composition ?
Lorsque vous intégrez un Content Block avec Liquid via un modèle, les requêtes média mobiles du bloc peuvent ne pas s’appliquer de la même manière dans l’aperçu que lorsque vous glissez le bloc directement dans un message. Glisser le bloc préserve la mise en page mais le dissocie du bloc source, de sorte que les modifications futures du bloc ne mettent plus à jour le message automatiquement.
Comment prévisualiser les valeurs des propriétés d’événement dans le compositeur de messages ?
Utilisez Preview as Custom User et saisissez des exemples de valeurs de propriétés d’événements personnalisés pour l’utilisateur que vous prévisualisez. Cela est également utile pour les messages avec une logique d’abandon lorsque vous avez besoin de valeurs d’aperçu qui ne déclenchent pas un abandon.
Liquid dans les e-mails
Pourquoi mon message est-il interrompu avec « Invalid from email address for recipient: » ?
Cette interruption se produit lorsque le Liquid dans l’adresse From génère une syntaxe invalide, comme une variable manquante, des espaces supplémentaires ou des caractères non autorisés. Prévisualisez avec un utilisateur test et vérifiez que l’adresse From rendue correspond à votre domaine d’envoi configuré.
Comment créer une adresse Reply-To dynamique ?
Utilisez Liquid dans le champ Reply-To lorsque votre espace de travail prend en charge la configuration dynamique du Reply-To. Associez-le à vos paramètres de nom d’affichage From selon vos besoins. Consultez la section Paramètres des e-mails pour les options spécifiques à l’espace de travail.
Résolution des problèmes liés aux erreurs Liquid
Pourquoi mon code Liquid ne fonctionne-t-il pas alors qu’il semble correct ?
Si votre code Liquid semble syntaxiquement correct mais ne fonctionne pas, vérifiez la présence de guillemets typographiques (guillemets courbes comme ' ' ou " ") et de tirets longs (tirets cadratins comme —) au lieu de guillemets droits (' ' ou " ") et de traits d’union (-). Liquid ne reconnaît que les caractères ASCII droits, donc les guillemets typographiques et les tirets longs provoqueront des erreurs d’analyse.
Cela se produit fréquemment lorsque le paramètre clavier de macOS Utiliser les guillemets et tirets typographiques est activé, ce qui convertit automatiquement les caractères au fur et à mesure de la saisie dans le tableau de bord de Braze.
Pour désactiver ce paramètre sur macOS :
- Accédez à Réglages Système > Clavier > Saisie de texte > Modifier.
- Décochez Utiliser les guillemets et tirets typographiques.
| Exemple | Guillemets courbes (ne fonctionne pas) | Guillemets droits (fonctionne) |
|---|---|---|
| Valeur par défaut | {{${first_name} | default: 'Torchie'}} |
{{${first_name} | default: 'Torchie'}} |
| Condition | {% if ${country} contains 'US' %} |
{% if ${country} contains 'US' %} |
Cela s’applique aux valeurs par défaut, aux conditions et à tout autre code Liquid utilisant des guillemets. Les guillemets courbes et droits peuvent sembler identiques à l’écran, alors comparez votre code attentivement ou collez-le dans un éditeur de texte brut.
Pour plus d’informations sur l’utilisation des guillemets dans Liquid, consultez Syntaxe Liquid.
Pourquoi est-ce que je vois une erreur Liquid « Unexpected end token » ?
Cette erreur indique généralement la présence d’accolades en trop ou manquantes. N’imbriquez pas {{ }} à l’intérieur d’une autre expression de balise Liquid. Par exemple, utilisez {{custom_attribute.${date_of_birth} | date: '%s'}} plutôt que d’envelopper la référence d’attribut dans une paire d’accolades supplémentaire.
Pourquoi la relance de contenu connecté n’est-elle pas disponible pour mon message in-app ?
La balise {% connected_content %} avec relance n’est pas prise en charge pour tous les types de messages, y compris certains formats de messages in-app. Supprimez les paramètres de relance ou utilisez un canal compatible pour les appels de contenu connecté avec relance.