Passer au contenu

Questions fréquemment posées

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

À propos de Liquid dans Braze

Comment utiliser les extraits de code Liquid dans Braze ?

Dans de nombreux cas, vous pouvez intégrer 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 apprendre davantage ?

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 insérer 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 la section 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.

Tags 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, utilisez 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 tous deux des tags de personnalisation Liquid pris en charge. Ces deux tags 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 multi-critères.

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 le tag api_triggered_property : {{api_trigger_properties.${attribute_key}}}.

Braze prend-il en charge les tableaux de tableaux dans Liquid ?

Liquid ne prend pas en charge nativement 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 puis-je 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.

Vous pouvez répartir un assign sur plusieurs lignes si vous encadrez toutes les variables Liquid de Braze avec des doubles accolades ({{ }}). Sans ces accolades, les instructions assign sur plusieurs lignes peuvent provoquer un rendu inattendu, y compris des attributs personnalisés qui échouent lors du templating. Pour des exemples et les règles de syntaxe associées, consultez Utiliser Liquid.

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 :

  • assign est 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.
  • capture est 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 les URL qui utilisent d’autres variables Liquid ou des attributs personnalisés en tant que 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

{% 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 de 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 un appel de réponse 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 pourriez utiliser cet extrait Liquid :

{% 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é. Cette logique est un moyen utile 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 tous les chiffres sauf les quatre derniers

Pour afficher un numéro de téléphone à 10 chiffres sous la forme ******7890 :

{% 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 :

{% 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 des 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 en Liquid avant de les utiliser dans des comparaisons ou des opérations mathématiques. Par exemple, lorsque vous avez besoin d’un comportement numérique :

{{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 groupée ou entièrement dynamique. Consultez Catalogues et Sélections.

Content Blocks et le compositeur de messages

Pourquoi y a-t-il des espaces supplémentaires dans les messages utilisant des Content Blocks ?

Si vous remarquez des espaces supplémentaires dans les messages envoyés qui utilisent des Content Blocks avec Liquid, il est possible que des sauts de paragraphe ou de ligne inutiles se trouvent dans vos instructions conditionnelles. Écrivez vos instructions conditionnelles sur une seule ligne plutôt que sur plusieurs lignes.

Exemple

{% if {{custom_attribute.${has_discount}}} == true %}Discounted Item{% elsif {{custom_attribute.${is_new_arrival}}} == true %}New Arrival{% else %}Regular Item{% endif %}

Pourquoi le code 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 dans 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.

Ajoutez des tirets à l’intérieur des délimiteurs de balise pour supprimer les espaces blancs environnants tout en conservant un code lisible :

{%- 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 code Liquid sur une seule ligne

Supprimez tous les sauts de ligne afin que le code Liquid tienne sur une seule ligne continue :

{% 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 la documentation de Shopify sur le contrôle des espaces blancs et la syntaxe Liquid de Braze.

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 faites glisser le bloc directement dans un message. Faire glisser le bloc préserve la mise en page mais le dissocie du bloc source, de sorte que les modifications ultérieures 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énement personnalisé pour l’utilisateur dont vous souhaitez afficher l’aperçu. Cela est également utile pour les messages comportant une logique d’abandon lorsque vous avez besoin de valeurs d’aperçu qui ne déclenchent pas un abandon.

Liquid dans les notifications push

Pourquoi le titre de ma notification push iOS apparaît-il tronqué lorsque j’utilise Liquid ?

Les titres de notifications push iOS s’affichent sur une seule ligne sur l’appareil. Si la sortie de votre Liquid contient des caractères de saut de ligne, les utilisateurs risquent de ne voir que le texte précédant le premier saut de ligne.

Appliquez le filtre strip_newlines à la sortie finale de votre titre. Pour un exemple dans le compositeur de notifications push, consultez Créer une notification push. Pour les autres facteurs qui influencent la quantité de texte affichée dans le titre, consultez Variables dans la troncature du texte.

Pour le corps de la notification push (et non le titre), Braze supprime automatiquement les sauts de ligne adjacents aux balises Liquid lors de l’envoi du message. Ce comportement ne s’applique pas au champ titre. Pour en savoir plus, consultez Sauts de ligne dans les notifications push.

Liquid dans les e-mails

Pourquoi mon message est-il interrompu avec « Invalid from email address for recipient: » ?

Cette interruption survient lorsque le Liquid dans le champ From produit une syntaxe invalide, par exemple une variable manquante, des espaces superflus 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 d’e-mail 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 réglage clavier macOS Use smart quotes and dashes 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 réglage sur macOS :

  1. Accédez à System Settings > Keyboard > Text Input > Edit.
  2. Décochez Use smart quotes and dashes.
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 se ressembler à 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 en 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 tag Liquid. Par exemple, utilisez {{custom_attribute.${date_of_birth} | date: '%s'}} plutôt que d’encapsuler la référence d’attribut dans une paire d’accolades supplémentaire.

Pourquoi la relance de Connected Content 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.

Pourquoi est-ce que je vois « Liquid Error: Comparison of Time with String Failed » ?

Cette erreur se produit lors de la comparaison d’un attribut personnalisé de type heure ou d’une propriété d’événement directement avec une valeur vide (une chaîne de caractères vide). Liquid ne prend pas en charge les comparaisons directes entre des types de données différents, comme un objet de type heure et une chaîne de caractères.

Voici un exemple courant qui provoque cette erreur :

{% if {{custom_attribute.${expiration_date}}} == blank %}
  <a>Some words</a>
{% endif %}

Cela échoue car vous ne pouvez pas comparer un attribut personnalisé dont le type de donnée est « heure » avec une chaîne de caractères (blank).

Pour résoudre ce problème, convertissez l’attribut de type heure en chaîne de caractères en l’assignant à une variable et en utilisant le filtre default lorsque l’attribut est évalué comme vide au moment du rendu :

{% assign expiration_date = {{custom_attribute.${expiration_date}}} | default: "" %}

{% if expiration_date == blank %}
  <a>Example Words</a>
{% endif %}

Lorsque vous comparez un attribut personnalisé de type heure avec l’heure actuelle ou des dates futures, utilisez la même approche :

{% assign today = 'now' | date: '%s' %}
{% assign month = 'now' | date: '%s' | plus: 2592000 %}
{% assign expiration_date = {{custom_attribute.${expiration_date}}} | default: "" %}

{% if expiration_date == blank %}
  <a>Example Words</a>
{% elsif expiration_date >= today and expiration_date >= month %}
  <a>More Words</a>
{% endif %}
New Stuff!