Variables et liquide
Tous les éléments dynamiques de cette application sont écrits en Liquid, le même langage de modèles que celui utilisé par les thèmes d'Shopify. Vous écrivez un espace réservé, et l'application le remplace au moment de l'envoi.
Les espaces de noms
| Espace de noms | D'où vient cette valeur ? | Disponible en |
|---|---|---|
{{ variables.key }} |
Le champ « Variables (JSON) » de l'action Shopify Flow | Objet et corps de l'e-mail, URL HTTP, en-têtes et corps |
{{ secrets.key }} |
La page « Secrets » | Idem, en ajoutant le nom d'utilisateur et le mot de passe SMTP |
{{ shop.name }}, {{ shop.domain }}, {{ shop.email }} |
Votre boutique | Actions liées aux e-mails et au protocole HTTP |
{{ language }} |
La langue indiquée par l'étape « Shopify Flow », ou bien la langue principale de la mise en page | Objet de l'e-mail, texte d'aperçu et corps du message - voir Envoyez des e-mails dans la langue de vos clients |
{{ unsubscribe_link }}, {{ unsubscribe_url }} |
Le lien de désabonnement destiné au destinataire, uniquement dans les modèles marketing | Corps de l'e-mail : vide dans les modèles transactionnels - voir ci-dessous |
{{ flow.key }} |
The raw Shopify Flow payload | Uniquement les requêtes HTTP |
La fiche « Variables système » de l'éditeur répertorie les valeurs de la boutique avec leur contenu actuel ; cliquer sur l'une d'entre elles permet de la copier.
Transmission de variables depuis Shopify Flow
Dans l'action « Shopify Flow », insérez un objet JSON dans le champ « Variables (JSON) » :
{
"firstName": "{{ customer.firstName }}",
"orderNumber": "{{ order.name }}",
"total": "{{ order.totalPriceSet.shopMoney.amount }}"
}
Vous pouvez ensuite les utiliser n'importe où dans la mise en page :
Hi {{ variables.firstName }}, your order {{ variables.orderNumber }} is on its way.
C'est à vous de choisir les clés. Le nom que vous indiquez à gauche est celui que vous utiliserez après variables. ; il doit correspondre exactement, tant au niveau de l'orthographe que de la mise en majuscules.
Vous n'avez pas besoin de rédiger ce JSON à la main. Chaque mise en page dispose d'une fiche « Utilisation dans lShopify Flow contenant le JSON approprié, prêt à être copié - consultez Transmission de données depuis Shopify Flow.
Filtres
Les filtres « Standard Liquid » fonctionnent. Le plus utile est default, qui vous protège contre les valeurs vides :
Hi {{ variables.firstName | default: "there" }}
D'autres se comportent comme on pourrait s'y attendre :
{{ variables.productTitle | upcase }}
{{ variables.total | round: 2 }}
{{ variables.note | truncate: 100 }}
Lorsqu'une variable s'affiche vide
Un envoi en direct qui remplace toute variable référencée par « nothing » se voit attribuer un badge « Variables vides » dans l'historique. L'ouverture de l'entrée permet de les nommer et de distinguer deux problèmes différents :
- Envoyé par Shopify Flow mais vide : la clé figurait bien dans votre fichier JSON, mais Shopify Flow n'a généré aucune valeur. Cela est généralement dû à un chemin d'accès incorrect à la propriété, ou à un champ qui est réellement vide pour cet enregistrement (un panier en mode « invité » ne comporte pas de prénom de client).
- Cela ne provient absolument pas de Shopify Flow : la clé est tout simplement absente de votre fichier JSON.
L'ajout d'une solution de secours de type | default: indique que cet espace vide est intentionnel, et l'application cesse d'afficher d'avertissement à ce sujet.
Conditions et boucles
Utilisez le bloc HTML / Code pour les conditions :
{% if variables.isVip %}
<p>As a VIP you get free shipping on this order.</p>
{% else %}
<p>Spend a little more to unlock free shipping.</p>
{% endif %}
Utilisez le bloc « Boucle » pour parcourir un tableau, par exemple les articles d'une commande :
{% for item in variables.items %}
<tr>
<td>{{ item.title }}</td>
<td>{{ item.quantity }}</td>
<td>{{ item.price }}</td>
</tr>
{% endfor %}
Transmettez le tableau depuis Shopify Flow au format JSON :
{
"items": [
{ "title": "Classic White T-Shirt", "quantity": 2, "price": "29.00" },
{ "title": "Eco Water Bottle", "quantity": 1, "price": "19.00" }
]
}
Pour prévisualiser une boucle dans le générateur, saisissez le même tableau JSON que celui indiqué dans l'onglet « Tester les variables ».
Les objets se comportent différemment dans les e-mails et sur HTTP
C'est la seule particularité qu'il convient de connaître.
- Dans une requête HTTP, l'interpolation d'un objet ou d'un tableau entraîne automatiquement sa sérialisation au format JSON.
{{ variables.records }}devient ainsi un véritable tableau JSON dans le corps de la requête. Un filtrejsonest également disponible si vous souhaitez procéder de manière explicite. - Dans un e-mail, cette conversion n'a pas lieu. L'interpolation d'un objet entier affiche le texte littéral
[object Object].
Ainsi, dans les e-mails, utilisez toujours l'objet plutôt que de l'imprimer :
Wrong: {{ variables.customer }}
Right: {{ variables.customer.firstName }} {{ variables.customer.lastName }}
Ou bien, parcourez un tableau à l'aide d'une boucle au lieu de l'afficher dans son intégralité.
Les secrets des modèles
Pour accéder à un secret enregistré, procédez de la même manière :
Authorization: Bearer {{ secrets.airtableAccessToken }}
Veuillez utiliser la syntaxe exacte suivante : {{ secrets.keyName }}. Les exemples suivants ne fonctionnent pas :
{{ secret.keyName }}- singulier{{ secrets['keyName'] }}- syntaxe des accolades
Les noms de clés sont sensibles à la casse. Voir Secrets.
Remplacement du corps pour les requêtes HTTP
Le champ « variables » de l'action HTTP dispose d'un deuxième mode. Si vous lui transmettez une clé body, celle-ci remplace intégralement le corps de la requête enregistré :
{
"body": { "anything": "you like", "shaped": ["however"] }
}
Cela s'avère utile lorsque la forme du payload est déterminée par une étape antérieure de Shopify Flow. Seule exception : si votre corps enregistré fait lui-même référence à {{ variables.body }}, il est alors traité comme une variable ordinaire.
Vérification de ce que vous avez écrit
L'aperçu sur la page n'évalue pas le code Liquid : il affiche les balises telles qu'elles sont écrites. Pour voir les valeurs résolues :
- Pour les e-mails, utilisez la fonction « Envoyer un e-mail de test » disponible dans l'éditeur de mise en page.
- Pour les requêtes HTTP, utilisez le bouton « Tester », qui affiche l'URL résolue et le corps de la réponse à côté de celle-ci.
Le lien de désabonnement dans les modèles marketing
Un modèle dont le type d'e-mail est « Marketing » dispose de deux variables supplémentaires. Chaque destinataire d'un e-mail marketing dispose de son propre lien de désabonnement, et celles-ci permettent de l'insérer :
{{ unsubscribe_link }}affiche un lien portant la mention « Se désabonner » issue des Paramètres (ou celle propre à la mise en page).{{ unsubscribe_url }}affiche l'adresse brute, pour un bouton ou un lien que vous personnalisez vous-même.
<p>No longer interested? <a href="{{ unsubscribe_url }}">Unsubscribe here</a>.</p>
Vous n'êtes pas obligé de les utiliser : chaque e-mail marketing comporte de toute façon un pied de page permettant de se désabonner. Lorsque le corps de l'e-mail affiché contient déjà le lien, le pied de page omet la phrase de désabonnement et n'ajoute que les coordonnées de l'entreprise. Dans l'objet et le texte d'aperçu, ces deux variables ne s'affichent pas, et dans une mise en page transactionnelle, elles sont toujours vides. Voir E-mails marketing et désabonnements.
Connexes
- Transmission de données depuis Shopify Flow - le champ « Variables (JSON) » en détail.
- Créer une mise en page d'e-mail - où ces variables sont placées.
- E-mails marketing et désabonnements - les mises en page marketing, le pied de page de désabonnement et la liste de désabonnement.
- Secrets - le stockage sécurisé des identifiants.
- Effectuez une requête HTTP depuis Shopify Flow - les variables d'une requête réelle.

