Variables dans Shopify Flow
Les variables sont des paramètres fictifs qui sont remplacés par des valeurs lors de l'exécution d'un flux de travail. Ces variables décrivent les attributs des clients, des commandes et des produits qui sont impliqués dans vos flux de travail. Par exemple, il existe des variables pour le numéro de commande, le prix de la commande, le nom du client, etc.
Flow utilise une version différente de Liquid que les thèmes Shopify et peut accéder à l’une des variables disponibles par le biais de l'API d'administration GraphQL.
Les noms de la plupart des variables de modèles sont auto descriptifs. Par exemple, la variable qui affiche le nom du produit est {{ product.title }}
. Lorsque le message est envoyé, cette variable est remplacée par le nom du produit commandé : Large Coffee Mug
.
Ajout de variables aux actions
Vous pouvez ajouter des variables à n'importe quel champ de texte qui contient le lien ajouter une variable. Cliquer sur le lien ajouter une variable sous le champ concerné, puis choisissez une variable dans la liste.
Les variables dans la liste ajouter une variable sont filtrées, de sorte que vous ne voyez que les variables qui s'appliquent au déclencheur que vous avez choisi. Lorsque vous choisissez une variable dans la liste, elle est formatée correctement et ajoutée à la zone de texte pour vous.
Flow prend en charge presque tous les champs API d'interface d'administration GraphQL.
Variables Liquid
Si vous êtes un développeur ayant de l’expérience avec la rédaction de code Liquid, vous pouvez utiliser Liquid pour écrire vos variables ou modifier les variables que vous insérez à l’aide du lien Ajouter une variable. Pour en savoir plus, consultez Référence de l'API d'administration GraphQL.
Balises conditionnelles et d'itération
Vous pouvez ajouter manuellement des balises de variable Liquid à vos messages de flux de travail. Ces balises vous permettent d'intégrer davantage d'informations dans vos messages.
Par exemple, un objet for loop
vous permet de créer une itération dans une liste d'objets, tels que les rubriques d'une commande. Avec ces balises, vous pouvez créer des messages contenant des détails, tels que le titre du produit, la référence, le prix et la quantité de chaque élément de campagne d'une commande, et éviter ainsi à vos destinataires de rechercher ces informations dans votre interface administrateur Shopify.
Flow prend en charge les balises Liquid conditionnelles (ou de contrôle du flux) suivantes :
- if (si)
- unless (sauf si)
- elsif/else
- case/when (quand)
- et/ou (plusieurs conditions)
Flow prend également en charge les balises d’itération Liquid suivantes :
Filtres
Flow prend en charge les filtres Liquid suivants :
Exemples de variables
Par exemple, vous souhaitez créer un flux de travail pour envoyer un e-mail à un employé lorsqu’un client dépense plus de 500 $ pour une commande. Créez un flux de travail à l’aide du déclencheur commande créée, définissez une condition vraie si le total de la commande dépasse 500 $ et utilisez l’action envoyer un e-mail interne. Dans la section message de l’action envoyer un e-mail interne, vous utilisez les variables suivantes.
Entrée | Sortie |
---|---|
Veuillez envoyer un message de remerciement personnel à {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) pour avoir passé une commande de {{ order.totalPriceSet.shopMoney.amount }}$. | Veuillez envoyer un message de remerciement personnel à Jeanne Dupont (jeanne@example.com) pour avoir passé une commande de 763,42 $. |
Vous décidez que vous devez informer un employé lorsque le stock de produit est en baisse et qu’une commande doit être passée pour en avoir plus. Créez un flux de travail qui commence par le déclencheur quantité de stock modifiée et définissez une condition vraie si la quantité de stock avant est inférieure ou égale à 10. Dans la section message de l’action envoyer un e-mail interne, vous utilisez les variables suivantes.
Entrée | Sortie |
---|---|
Veuillez renouveler la commande {{ product.title }}. Envoyez un e-mail à owner@store.com pour vérifier qu’il a reçu le bon de commande. | Veuillez renouveler la commande de leggings taille haute - noir. Envoyez un e-mail à owner@example.com pour vérifier qu’il a reçu le bon de commande. |
Vous souhaitez annuler des commandes qui ont un niveau de risque élevé, mais préférez que vos employés annulent la commande manuellement. Créez un flux de travail qui commence par le déclencheur commande créée et définissez une condition qui est vraie si le niveau de risque de la commande est égal à élevé. Dans la section message de l’action envoyer un e-mail interne, vous utilisez les variables suivantes.
Entrée | Sortie |
---|---|
Notre boutique Shopify a reçu une commande avec un risque élevé de fraude. Nous aimerions annuler cette commande immédiatement, avant son envoi à la production : {{ order.name }} {{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }} {{ order.email }} Veuillez confirmer le statut de la nouvelle commande. Merci ! |
Notre boutique Shopify a reçu une commande avec un risque élevé de fraude. Nous aimerions annuler cette commande immédiatement, avant son envoi à la production : #1001 Dupont, Jeanne jeanne@example.com Veuillez confirmer le statut de la nouvelle commande. Merci ! |
Exemples de boucle for
Lorsqu’une commande est reçue, il peut être utile d’envoyer un message contenant les produits commandés. Pour ce faire, vous pouvez utiliser for loop
, qui exécutent de façon répétée un bloc de code. Les champs de texte qui prennent en charge les variables prennent également en charge les boucles for et l’objet forloop.
Par exemple, vous souhaitez créer un flux de travail qui retourne une liste de tous les SKU et les quantités d’une commande. Dans la section message de l’action envoyer un e-mail interne, vous utilisez les variables suivantes.
Entrée | Sortie |
---|---|
Résumé de la commande : {% for a in order.lineItems %} unités de gestion de stock : {{a.sku}} ( {{a.quantity}} ), {% endfor %} |
Résumé de la commande : 8987097979 (50) 8877778887 (3) 8889988988B (1) |
Vous décidez d’ajouter plus d’informations à l’e-mail, notamment le nom du produit, les SKU, le prix par article et les informations d’expédition du client. Dans la section message de l’action envoyer un e-mail interne, vous utilisez les variables suivantes.
Entrée | Sortie |
---|---|
Résumé de la commande : {% for a in order.lineItems %} produit : {{a.title}} unité de gestion de stock : {{a.sku}} (par unité) : $ {{a.originalUnitPriceSet.shopMoney.amount}} quantité : {{a.quantity}} {% endfor %} |
Résumé de la commande : Produit : leggings taille haute - Noir Unité de gestion de stock : 8987097979 Prix (à l’unité) : 8,49 $ Quantité : 5 Produit : Chaussettes de sport – Bleu Unité de gestion de stock : 88899889898B Prix (à l’unité) : 5,61 $ Quantité : 2 |
Vous devez suivre les articles vendus fournis par un fournisseur spécifique. Dans la section messages de l’action envoyer un e-mail interne, vous utilisez les variables suivantes et incluez un énoncé if
dans votre for loop
.
Entrée | Sortie |
---|---|
Produit Acme vendu : {% for x in order.lineItems %} {% if x.vendor == 'acme-vendor' %} Nom du produit : {{x.title}} Unité de gestion de stock : {{x.sku}} {% endif %} {% endfor %} |
Produit Acme vendu : Nom du produit : Leggings taille haute Unité de gestion de stock : 8987097979 |
Objets de données complexes dans Shopify Flow
Shopify Flow ne prend pas en charge l’extraction de tableaux et d’objets pour les raisons suivantes :
- La sortie de données qui ne sont pas requises est déconseillée pour l’API GraphQL, et cela peut créer des requêtes de grande taille qui entraînent l’échec de votre flux de travail.
- Lorsque de nouvelles fonctionnalités sont introduites, de nouveaux champs API sont ajoutés, ce qui peut perturber votre flux de travail.
Si une quantité trop importante de données est envoyée automatiquement, le flux de travail échoue. Au lieu d’appeler directement les tableaux et les objets, utilisez une boucle sur les tableaux et incluez uniquement les champs que vous souhaitez.
Par exemple, au lieu d’appeler directement {{ order.lineItems }}
, utilisez le format suivant pour appeler des champs spécifiques. Ces exemples comprennent tous les champs qui seront inclus en appelant directement le tableau ou l’objet. Copiez et collez les champs dont vous avez besoin.
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}
{% for ca in li.customAttributes %}
{{ ca.key }}
{{ ca.value }}
{% endfor %}
{% for da in li.discountAllocations %}
{{ da.allocatedAmountSet.presentmentMoney.amount }}
{{ da.allocatedAmountSet.presentmentMoney.currencyCode }}
{{ da.allocatedAmountSet.shopMoney.amount }}
{{ da.allocatedAmountSet.shopMoney.currencyCode }}
{% endfor %}
{{ li.discountedTotalSet.presentmentMoney.amount }}
{{ li.discountedTotalSet.presentmentMoney.currencyCode }}
{{ li.discountedTotalSet.shopMoney.amount }}
{{ li.discountedTotalSet.shopMoney.currencyCode }}
{{ li.discountedUnitPriceSet.presentmentMoney.amount }}
{{ li.discountedUnitPriceSet.presentmentMoney.currencyCode }}
{{ li.discountedUnitPriceSet.shopMoney.amount }}
{{ li.discountedUnitPriceSet.shopMoney.currencyCode }}
{% comment %}li.duties - omitted {% endcomment %}
{{ li.fulfillableQuantity }}
{{ li.fulfillmentService.callbackUrl }}
{{ li.fulfillmentService.fulfillmentOrdersOptIn }}
{{ li.fulfillmentService.handle }}
{{ li.fulfillmentService.id }}
{{ li.fulfillmentService.inventoryManagement }}
{% comment %}rest of location omitted{% endcomment %}
{{ li.fulfillmentService.location.name }}
{{ li.fulfillmentService.productBased }}
{{ li.fulfillmentService.serviceName }}
{% for sm in li.fulfillmentService.shippingMethods %}
{{ sm.code }}
{{ sm.label }}
{% endfor %}
{{ li.fulfillmentService.type }}
{{ li.fulfillmentStatus }}
{{ li.id }}
{{ li.image.altText }}
{{ li.image.height }}
{{ li.image.id }}
{% comment %}li.image.metafield omitted{% endcomment %}
{% comment %}li.image.privateMetafield omitted{% endcomment %}
{{ li.image.width }}
{{ li.merchantEditable }}
{{ li.name }}
{{ li.nonFulfillableQuantity }}
{{ li.originalTotalSet.presentmentMoney.amount }}
{{ li.originalTotalSet.presentmentMoney.currencyCode }}
{{ li.originalTotalSet.shopMoney.amount }}
{{ li.originalTotalSet.shopMoney.currencyCode }}
{{ li.originalUnitPriceSet.presentmentMoney.amount }}
{{ li.originalUnitPriceSet.presentmentMoney.currencyCode }}
{{ li.originalUnitPriceSet.shopMoney.amount }}
{{ li.originalUnitPriceSet.shopMoney.currencyCode }}
{% comment %}rest of product omitted{% endcomment %}
{{ li.product.title }}
{{ li.quantity }}
{{ li.refundableQuantity }}
{{ li.requiresShipping }}
{{ li.restockable }}
{{ li.sellingPlan.name }}
{{ li.sku }}
{% for tl in li.taxLines %}
{{ tl.priceSet.presentmentMoney.amount | json }}
{{ tl.priceSet.presentmentMoney.currencyCode | json }}
{{ tl.priceSet.shopMoney.amount | json }}
{{ tl.priceSet.shopMoney.currencyCode | json }}
{{ tl.rate | json }}
{{ tl.ratePercentage | json }}
{{ tl.title | json }}
{% endfor %}
{{ li.taxable }}
{{ li.title }}
{{ li.totalDiscountSet.presentmentMoney.amount }}
{{ li.totalDiscountSet.presentmentMoney.currencyCode }}
{{ li.totalDiscountSet.shopMoney.amount }}
{{ li.totalDiscountSet.shopMoney.currencyCode }}
{{ li.unfulfilledDiscountedTotalSet.presentmentMoney.amount }}
{{ li.unfulfilledDiscountedTotalSet.presentmentMoney.currencyCode }}
{{ li.unfulfilledDiscountedTotalSet.shopMoney.amount }}
{{ li.unfulfilledDiscountedTotalSet.shopMoney.currencyCode }}
{{ li.unfulfilledOriginalTotalSet.presentmentMoney.amount }}
{{ li.unfulfilledOriginalTotalSet.presentmentMoney.currencyCode }}
{{ li.unfulfilledOriginalTotalSet.shopMoney.amount }}
{{ li.unfulfilledOriginalTotalSet.shopMoney.currencyCode }}
{{ li.unfulfilledQuantity }}
{% comment %}rest of variant omitted{% endcomment %}
{{ li.variant.title }}
{{ li.variantTitle }}
{{ li.vendor }}
{% endfor %}
{
"lineItems": [
{% for li in order.lineItems %}
{% if forloop.first != true %},{% endif %}
{
"contract": {
{% comment %}rest of contract omitted{% endcomment %}
"id": {{ li.contract.id | json }}
},
"customAttributes": [
{% for ca in li.customAttributes %}
{% if forloop.first != true %},{% endif %}
{
"key":{{ ca.key | json }},
"value":{{ ca.value | json }}
}
{% endfor %}
],
"discountAllocations": [
{% for da in li.discountAllocations %}
{% if forloop.first != true %},{% endif %}
"allocatedAmountSet": {
"presentmentMoney" : {
"amount": {{ da.allocatedAmountSet.presentmentMoney.amount | json }},
"currencyCode": {{ da.allocatedAmountSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ da.allocatedAmountSet.shopMoney.amount | json }},
"currencyCode": {{ da.allocatedAmountSet.shopMoney.currencyCode | json }}
}
}
{% endfor %}
],
"discountedTotalSet": {
"presentmentMoney" : {
"amount": {{ li.discountedTotalSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.discountedTotalSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.discountedTotalSet.shopMoney.amount | json }},
"currencyCode": {{ li.discountedTotalSet.shopMoney.currencyCode | json }}
}
},
"discountedUnitPriceSet": {
"presentmentMoney" : {
"amount": {{ li.discountedUnitPriceSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.discountedUnitPriceSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.discountedUnitPriceSet.shopMoney.amount | json }},
"currencyCode": {{ li.discountedUnitPriceSet.shopMoney.currencyCode | json }}
}
},
"duties": [
{% for duty li.duties %}
{% if forloop.first != true %},{% endif %}
{
{% comment %}rest of duties omitted{% endcomment %}
"id": {{ duty.id | json }}
}
{% endfor %}
],
"fulfillableQuantity": {{ li.fulfillableQuantity | json }},
"fulfillmentService": {
"callbackUrl":{{ li.fulfillmentService.callbackUrl | json }},
"fulfillmentOrdersOptIn": {{ li.fulfillmentService.fulfillmentOrdersOptIn | json }},
"handle": {{ li.fulfillmentService.handle | json }},
"id": {{ li.fulfillmentService.id | json }},
"inventoryManagement": {{ li.fulfillmentService.inventoryManagement | json }},
{% comment %}fulfillmentService.inventoryManagement - omitted {% endcomment %}
"productBased": {{ li.fulfillmentService.productBased | json }},
"serviceName": {{ li.fulfillmentService.serviceName | json }},
"shippingMethods": [
{% for sm in li.fulfillmentService.shippingMethods %}
{% if forloop.first != true %},{% endif %}
{
"code": {{ sm.code | json }},
"label": {{ sm.label | json }}
}
{% endfor %}
],
"type": {{ li.fulfillmentService.type | json }}
},
"fulfillmentStatus": {{ li.fulfillmentStatus | json }},
"id": {{ li.id | json }},
"image": {
"altText": {{ li.image.altText | json }},
"height": {{ li.image.height | json }},
"id": {{ li.image.id | json }},
{% comment %}li.image.metafield omitted{% endcomment %}
{% comment %}li.image.privateMetafield omitted{% endcomment %}
"width":{{ li.image.width | json }}
},
"merchantEditable": {{ li.merchantEditable | json }},
"name": {{ li.name | json }},
"nonFulfillableQuantity": {{ li.nonFulfillableQuantity | json }},
"originalTotalSet": {
"presentmentMoney" : {
"amount": {{ li.originalTotalSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.originalTotalSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.originalTotalSet.shopMoney.amount | json }},
"currencyCode": {{ li.originalTotalSet.shopMoney.currencyCode | json }}
}
},
"originalUnitPriceSet": {
"presentmentMoney" : {
"amount": {{ li.originalUnitPriceSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.originalUnitPriceSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.originalUnitPriceSet.shopMoney.amount | json }},
"currencyCode": {{ li.originalUnitPriceSet.shopMoney.currencyCode | json }}
}
},
"product": {
{% comment %}rest of Product omitted{% endcomment %}
"title": {{ li.product.title | json }}
},
"quantity": {{ li.quantity | json }},
"refundableQuantity": {{ li.refundableQuantity | json }},
"requiresShipping": {{ li.requiresShipping | json }},
"restockable": {{ li.restockable | json }},
"sellingPlan": {
"name": {{ li.sellingPlan.name | json }}
},
"sku": {{ li.sku | json }},
"taxLines": [
{% for tl in li.taxLines %}
{% if forloop.first != true %},{% endif %}
{
"priceSet": {
"presentmentMoney" : {
"amount": {{ tl.priceSet.presentmentMoney.amount | json }},
"currencyCode": {{ tl.priceSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ tl.priceSet.shopMoney.amount | json }},
"currencyCode": {{ tl.priceSet.shopMoney.currencyCode | json }}
}
},
"rate": {{ tl.rate | json }},
"ratePercentage": {{ tl.ratePercentage | json }},
"title": {{ tl.title | json }}
}
{% endfor %}
],
"taxable":{{ li.taxable | json }},
"title":{{ li.title | json }},
"totalDiscountSet": {
"presentmentMoney" : {
"amount": {{ li.totalDiscountSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.totalDiscountSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.totalDiscountSet.shopMoney.amount | json }},
"currencyCode": {{ li.totalDiscountSet.shopMoney.currencyCode | json }}
}
},
"unfulfilledDiscountedTotalSet": {
"presentmentMoney" : {
"amount": {{ li.unfulfilledDiscountedTotalSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.unfulfilledDiscountedTotalSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.unfulfilledDiscountedTotalSet.shopMoney.amount | json }},
"currencyCode": {{ li.unfulfilledDiscountedTotalSet.shopMoney.currencyCode | json }}
}
},
"unfulfilledOriginalTotalSet": {
"presentmentMoney" : {
"amount": {{ li.unfulfilledOriginalTotalSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.unfulfilledOriginalTotalSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.unfulfilledOriginalTotalSet.shopMoney.amount | json }},
"currencyCode": {{ li.unfulfilledOriginalTotalSet.shopMoney.currencyCode | json }}
}
},
"unfulfilledQuantity": {{ li.unfulfilledQuantity | json }},
"variant": {
{% comment %}rest of variant omitted {% endcomment %}
"title": {{ li.variant.title | json }}
},
"variantTitle": {{ li.variantTitle | json }},
"vendor": {{ li.vendor | json }}
}
{% endfor %}
]
}