Variablen in Shopify Flow

Variablen sind in Liquid definierte Platzhalter, die bei der Ausführung eines Workflows durch Werte aus der GraphQL Admin API ersetzt werden. Variablen beschreiben die Attribute der Kunden, Bestellungen und Produkte, die an deinen Workflows beteiligt sind. Es gibt beispielsweise Variablen für die Bestellnummer, den Bestellpreis, den Kundennamen und so weiter. Variablen können in Bedingungen verwendet werden, um die Logik in deinem Workflow zu steuern oder um Daten aus einer Aktion auszugeben.

Variablen hinzufügen

Du kannst mit Liquid Variablen zu jedem Textfeld hinzufügen, das den Link Variable hinzufügen enthält. Klicke unter dem entsprechenden Feld auf den Link Eine Variable hinzufügen und wähle eine Variable aus der Liste aus.

Bild, das zeigt, welche Felder Liquid akzeptieren

Die Variablen in der Liste Variable hinzufügen werden gefiltert, sodass du nur die Variablen verwendest, die von Schritten vor dem aktuellen Schritt zurückgegeben werden, z. B. Trigger. Beispielsweise stellt der Trigger Bestellung erstellt Bestellungs- und Shop-Ressourcen aus der Admin API bereit, die als Variablen eingefügt werden können. Wenn du eine Variable aus der Liste ausgewählt hast, wird sie als korrekt formatiertes Liquid in das Textfeld eingefügt.

Du kannst Liquid auch direkt in den Textblock schreiben. Du kannst beispielsweise die Variable {{ order.name }} verwenden, um die im Shopify-Adminbereich angezeigte Bestellzeichenfolge anzuzeigen, wie z. B. „Bestellung-123“.

Da Flow die Admin API verwendet, um die für Liquid verwendeten Daten abzurufen, verwendet die Variablensyntax die „gemischte Groß-/Kleinschreibung“. Um beispielsweise auf das Datum zuzugreifen, an dem ein Produkt erstellt wurde, gib {{ product.createdAt }} ein. Wenn du die Liquid-Syntax in einem Shopify-Theme verwendest, gibst du {{ product.created_at }} ein.

Liquid-Tags für Bedingungen und Iterationen

Manchmal möchtest du Liquid-Tags u. U. für folgende Aktionen verwenden:

  • An eine Bedingung geknüpfte Anweisungen schreiben, z. B. die Bestimmung, ob eine Bestellsumme größer als 100 USD ist.
  • Durch eine Liste von Objekten iterieren, z. B. die Ausgabe von Daten für jede Position in einer Bestellung.

Du kannst Liquid-Tags verwenden, um diese Anweisungen zu schreiben und durch Objekte zu iterieren.

Im folgenden Liquid-Code wird beispielsweise die Bestellnummer angezeigt, wenn die Bestellsumme größer als 100 USD ist:

{% if order.totalPriceSet.shopMoney.amount > 100 %}
  Order number: {{ order.name }}
{% endif %}

Du kannst auch eine For-Schleife verwenden, um durch eine Liste von Objekten zu iterieren, z. B. durch die Positionen einer Bestellung. Im folgenden Liquid-Code wird beispielsweise der Name jedes Artikels in einer Bestellung angezeigt:

{% for li in order.lineItems %}
  {{ li.title }}
{% endfor %}

Flow unterstützt die folgenden bedingten (oder Kontrollfluss-)Tags von Liquid:

Flow unterstützt auch die folgenden Iterationstags von Liquid:

Filter

Mit Filtern kannst du Daten in Liquid umwandeln. Flow unterstützt alle Open-Source-Liquid-Filter.

Der folgende Liquid-Code entfernt beispielsweise ein Präfix aus einem Bestellnamen und gibt den übrigen Text aus: {{ order.name | remove: "Order-" }}

Zusätzlich zu den Standard-Liquid-Filtern stellt Flow Datumsfilter bereit, um ein Datum im Verhältnis zu einem anderen Datum zur Unterstützung des Triggers Geplanter Zeitpunkt und der Funktionen Daten abrufen abzurufen. Diese Filter sind: date_minus und date_plus.

So gibst du ein Datum aus, das einen Tag in der Zukunft liegt:{{ "now" | date_plus: "1 day" }}

So gibst du ein Datum aus, das einen Tag in der Vergangenheit liegt:{{ "now" | date_minus: "1 day" }}

Diese Filter akzeptieren second, minute, day, week, month und year als Einheit für die Dauer sowohl im Singular (z. B. second) als auch im Plural (z. B. seconds). Zusätzlich zu diesem Format kannst du auch eine ganze Zahl (Anzahl der Sekunden) bereitstellen. Zum Beispiel:{{ "now" | date_minus: 3600 }}

Du kannst auch einen ISO8601-Dauer-String angeben, wobei P1Y2D 1 Jahr und 2 Tage bedeutet:{{ "now" | date_minus: "P1Y2D" }}

Überlegungen zur Verwendung von Liquid-Variablen in Filtern

  • Flow unterstützt keine Punktnotation, die für einige Filter verfügbar ist. Flow unterstützt beispielsweise {{ order.lineItems | size }}, aber nicht {{ order.lineItems.size }}.
  • Flow unterstützt keine Punktnotation für Metafelder. Du kannst beispielsweise nicht {{ order.metafields.custom.hold_note }} verwenden. Stattdessen musst du eine Schleife auf die Metafelder anwenden, wie in den Beispielen beschrieben.
  • Flow unterstützt die Verwendung von Indizes nicht für den Zugriff auf Elemente in einer Liste. Du kannst beispielsweise nicht {{ order.lineItems[0].title }} verwenden. Stattdessen musst du eine Schleife auf die Positionen anwenden, wie in den Beispielen beschrieben.

Beispiele

Betrachte die folgenden Beispiele, um ein besseres Verständnis für die Verwendung von Liquid-Variablen zu erlangen.

URLs für Ressourcen ausgeben

Du möchtest die URLs für den Kunden, die Bestellung und das Produkt ausgeben, die an einem Workflow beteiligt sind.

# Output the base Admin URL for your store
https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}

# Assign the base Admin url to a variable named base_url:
{%- capture base_url -%}https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}{%- endcapture -%}

# Customer from a Customer trigger:
{{ base_url }}/customers/{{ customer.legacyResourceId }}

# Customer without the base_url:
https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}/customers/{{ customer.legacyResourceId }}

# Customer from an Order trigger:
{{ base_url }}/customers/{{ order.customer.legacyResourceId }}

# Order:
{{ base_url }}/orders/{{ order.legacyResourceId }}

# Product:
{{ base_url }}/products/{{ product.legacyResourceId }}

# Product Variant:
{{ base_url }}/products/{{ product.legacyResourceId }}/variants/{{ productVariant.legacyResourceId }}

# Example showing a clickable link in HTML, making use of the URL:
<a href="{{ base_url }}/products/{{ product.legacyResourceId }}">{{ product.title }}</a>

Liste von Tags in ein Metafeld umwandeln

Du möchtest einen Satz Tags in ein Metafeld umwandeln, das eine Liste von Feldern für einzeiligen Text ist. Du erstellst einen Workflow mit dem Trigger Produkt zum Shop hinzugefügt und verwendest die Aktion Produkt-Metafeld aktualisieren. Im Abschnitt Wert der Aktion Produkt-Metafeld aktualisieren fügst den folgenden Liquid-Code hinzu. In diesem Beispiel wird davon ausgegangen, dass du die Werte nur einmal beim Erstellen des Produkts festlegen musst und dass das Produkt zwei relevante Tags hat: color:red und color:orange.

Beispiel für Liquid-Code zum Festlegen einer Liste von Feldern für einzeiligen Text:
EingabeAusgabe
{% capture mf_value %}
{%- for tags_item in product.tags -%}
{%- if tags_item contains "color:" -%}
"{{- tags_item | remove_first: "color:" | strip -}}",
{%- endif -%}
{%- endfor -%}
{% endcapture -%}
[{{mf_value | remove_last: ","}}]
["rot", "orange"]

Dynamische E-Mail-Nachricht für eine Bestellung schreiben

Du möchtest beispielsweise einen Workflow erstellen, um eine E-Mail an einen Mitarbeiter zu senden, wenn ein Kunde mehr als 500 USD für eine Bestellung ausgibt. Du erstellst einen Workflow mithilfe des Triggers Bestellung erstellt, legst eine Bedingung fest, die wahr ist, wenn die Bestellsumme über 500 USD liegt, und verwendest die Aktion Interne E-Mail senden. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen.

Beispiel für die Verwendung von Variablen zur Bereitstellung von Kundendetails
EingabeAusgabe
Bitte sende eine persönliche Dankesmitteilung an {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) für die Bestellung in Höhe von {{ order.totalPriceSet.shopMoney.amount }}.Bitte sende eine persönliche Dankesmitteilung an Jeanne Dupont (jeanne@example.com) für die Bestellung in Höhe von 763,42 USD.

Dynamische E-Mail-Nachricht für ein Produkt mit niedrigem Lagerbestand schreiben

Du entscheidest, dass du einen Mitarbeiter informieren musst, wenn das Produktinventar gering ausfällt und eine Bestellung für mehr Lagerbestand aufgegeben werden muss. Du erstellst einen Workflow, der mit dem Trigger Inventarmenge geändert startet, und legst eine Bedingung, die wahr ist, fest, wenn die vorherige Inventarmenge kleiner oder gleich 10 ist. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen.

Beispiel der Variablennutzung zum Anzeigen von Artikeldetails.
EingabeAusgabe
Bitte bestelle "{{ product.title }}" nach. Sende eine E-Mail an inhaber@shop.de, um zu bestätigen, dass sie die Bestellung erhalten haben.Bitte bestelle "High Waist Leggings – Schwarz" nach. Sende eine E-Mail an inhaber@shop.de, um zu bestätigen, dass sie die Bestellung erhalten haben.

Dynamische E-Mail-Nachricht schreiben, um Mitarbeiter über eine betrügerische Bestellung zu informieren

Du möchtest Bestellungen mit einer hohen Risikostufe stornieren, aber möchtest lieber, dass deine Mitarbeiter die Bestellung manuell stornieren. Du erstellst einen Workflow, der mit dem Trigger Bestellung erstellt startet, und legst eine Bedingung fest, die wahr ist, wenn die Risikostufe der Bestellung gleich hoch ist. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen.

Beispiel für die Variablenverwendung zur Bereitstellung von Informationen zu einer betrügerischen Bestellung
EingabeAusgabe
Unser Shopify-Shop hat eine Bestellung mit hohem Betrugsrisiko erhalten. Wir möchten diese Bestellung sofort stornieren, bevor sie an die Produktion gesendet wird:

{{ order.name }}
{{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }}
{{ order.email }}

Bitte bestätigen Sie den neuen Bestellstatus. Danke!
Unser Shopify-Shop hat eine Bestellung mit hohem Betrugsrisiko erhalten. Wir möchten diese Bestellung sofort stornieren, bevor sie an die Produktion gesendet wird:

#1001
Dupont, Jeanne
jeanne@beispiel.de

Bitte bestätigen Sie den neuen Bestellstatus. Danke!

Positionen für eine Bestellung mithilfe einer For-Schleife ausgeben

Wenn eine Bestellung eingegangen ist, kann es hilfreich sein, eine Nachricht mit den bestellten Produkten zu versenden. Dies kannst du mithilfe von for loop tun, um wiederholt einen Codeblock auszuführen. Textfelder, die Variablen unterstützen, unterstützen auch for-Schleifen und das forloop-Objekt.

Du möchtest beispielsweise einen Workflow erstellen, der eine Liste aller SKUs und Mengen in einer Bestellung zurückgibt. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen.

Beispiel für die Verwendung einer Schleife zum Bereitstellen von Bestellinformationen
EingabeAusgabe
Bestellübersicht:
{% for a in order.lineItems %}
SKU: {{a.sku}} ( {{a.quantity}} ),
{% endfor %}
Bestellübersicht:
8987097979 (50)
8877778887 (3)
888998898B (1)

Positionen für eine Bestellung mithilfe einer For-Schleife mit zusätzlichen Informationen ausgeben

Du entscheidest dich, der E-Mail weitere Informationen hinzuzufügen, einschließlich Produktname, Artikelnummer (SKU), Preis pro Artikel und Versandinformationen des Kunden. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen.

Beispiel für eine For-Schleife zur Bereitstellung von umfassenden Bestellinformationen
EingabeAusgabe
Bestellübersicht:
{% for a in order.lineItems %}
Produkt: {{a.title}}
SKU: {{a.sku}}
Preis (pro Einheit): {{a.originalUnitPriceSet.shopMoney.amount}} USD
Anzahl: {{a.quantity}}
{% endfor %}
Bestellübersicht:
Produkt: High Waist Leggings – Schwarz
SKU: 8987097979
Preis (pro Einheit): 8,49 USD
Menge: 5
Produkt: Sportsocken – Blau
SKU: 8889988B
Preis (pro Einheit): 5,61 USD
Menge: 2

Einige Positionen durch Kombination einer For-Schleife mit einer If-Anweisung ausgeben

Du musst verkaufte Artikel verfolgen, die von einem bestimmten Anbieter bereitgestellt werden. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen und schließt ein if im Objekt for loop ein.

Beispiel für eine For-Schleife und eine If-Statement-Verwendung zur Bereitstellung von Bestellinformationen für bestimmte Anbieter
EingabeAusgabe
Verkauftes Acme-Produkt:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Produktname: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Verkauftes Acme-Produkt:
Produktname: High Waist Leggings – Schwarz
SKU: 8987097979

Komplexe Datenobjekte in Shopify Flow

Flow ermöglicht dir den Zugriff auf fast alle Daten in der GraphQL-Admin-API. Das umfasst auch komplexe Datenobjekte wie Listen und Objekte. Es gibt jedoch Einschränkungen dahingehend, was du mit diesen Objekten machen kannst. In diesem Abschnitt werden die Einschränkungen beschrieben und es werden Beispiele bereitgestellt, die zeigen, wie du mit diesen Objekten arbeiten kannst.

Anstatt Listen und Objekte direkt aufzurufen, solltest du eine Schleife auf Liste anwenden und nur die gewünschten Felder einfügen.

Anstatt beispielsweise {{ order.lineItems }} direkt aufzurufen, verwende das folgende Format zum Aufrufen bestimmter Felder. Diese Beispiele umfassen alle Felder, die beim direkten Aufruf der Liste oder des Objekts eingeschlossen werden würden. Kopiere die erforderlichen Felder und füge sie ein.

Text
{% 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 %}
json
{
    "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 %}
    ]
}
Du hast die gesuchten Antworten nicht gefunden? Wir helfen dir gerne weiter.