Voorwaarden in Shopify Flow

Voorwaarden zetten een workflow voort wanneer aan bepaalde regels is voldaan, zoals het begin van een als-dan-instructie. Wanneer je een voorwaarde instelt, kies je criteria uit velden in de GraphQL Admin API (zoals product.title), een logische operator (zoals gelijk aan) en een waarde om mee te vergelijken (zoals Blauwe spijkerbroek). Wanneer een workflow een voorwaarde evalueert, controleert Flow de waarde die in de workflow is gedefinieerd met de waarde die door je winkel wordt geretourneerd. Vervolgens worden de resultaten weergegeven in de uitvoering van de workflow. Voor een beter begrip van de velden en waarden die beschikbaar zijn voor het definiëren van voorwaarden, lees je hoe je een voorbeeld van winkelgegevens kunt bekijken.

Meer informatie over de basisprincipes van voorwaarden.

Gegevenstypen die met Flow worden gebruikt

Wanneer je een voorwaarde instelt, kies je een criterium uit de velden die beschikbaar zijn in de Admin API en Flow evalueert dit ten opzichte van de waarde die door je winkel wordt geretourneerd.

Flow ondersteunt de volgende soorten gegevens:

  • Float: Floatwaarden zijn getallen met decimalen. Bijvoorbeeld 4,25.
  • Integer: Integerwaarden zijn hele getallen zonder decimalen. Bijvoorbeeld 42.
  • Datum: Datumwaarden zijn een numerieke weergave van de datum. Bijvoorbeeld 01012021.
  • Tekenreeks: Tekenreeksen zijn tekst. Vergelijkingen met tekenreeksen zijn niet hoofdlettergevoelig.
  • Booleaans: Booleaanse waarden zijn 'waar' of 'onwaar'.
  • Enum: Enum-waarden zijn gegevenssets waarmee een variabele een set vooraf gedefinieerde constanten kan zijn.

Logische operators

Logische operators bepalen hoe je voorwaarde wordt toegepast. Voorwaarden kunnen eenvoudige eigenschappen controleren, bijvoorbeeld of het totaalbedrag van een bestelling boven een bepaald bedrag ligt, of dat een klant marketing accepteert. Logische operators kunnen ook complexere eigenschappen controleren.

Operators kunnen ofwel operators op veldniveau zijn, zoals gelijk aan of niet gelijk aan, of lijstoperators, zoals ten minste een van of geen van.

Operators op veldniveau

Operators op veldniveau worden gebruikt om twee waarden te vergelijken. Flow kan de volgende operators gebruiken:

Lijst met operators op veldniveau die beschikbaar zijn in Shopify Flow.
OperatorBeschrijvingVoorbeeld
Gelijk aan Vergelijkt waarden om te controleren of ze hetzelfde zijn. De waarde voor order.currentTotalDiscountsSet.shopMoney.amount wordt opgehaald uit je winkelgegevens en vergeleken met de tweede waarde, 50.

Als de totale korting van de bestelling precies gelijk is aan 50, dan is de voorwaarde waar.
Niet gelijk aan Vergelijkt waarden om te controleren of ze niet hetzelfde zijn. De waarde voor order.currentTotalDiscountsSet.shopMoney.amount wordt opgehaald uit je winkelgegevens en vergeleken met de tweede waarde, 50.

Als de totale korting van de bestelling niet precies gelijk is aan 50, dan is de voorwaarde waar.
Groter dan en Groter dan of gelijk aan Vergelijkt waarden om te controleren of de eerste waarde groter is dan, of groter dan of gelijk is aan, de tweede waarde. De waarde voor order.currentTotalDiscountsSet.shopMoney.amount wordt opgehaald uit je winkelgegevens en vergeleken met de tweede waarde, 50.

Als de totale korting van de bestelling 137 is, dan is de voorwaarde waar, omdat 137 groter is dan 50.
Kleiner dan en Kleiner dan of gelijk aan Vergelijkt waarden om te controleren of de eerste waarde kleiner is dan, of kleiner dan of gelijk is aan, de tweede waarde. De waarde voor order.currentTotalDiscountsSet.shopMoney.amount wordt opgehaald uit je winkelgegevens en vergeleken met de tweede waarde, 50.

Als de totale korting van de bestelling 47 is, dan is de voorwaarde waar, omdat 47 kleiner is dan of gelijk is aan 50.
Ten minste een van Controleert of het veld gelijk is aan een waarde in de opgegeven lijst. De waarden moeten afzonderlijk worden ingevoerd en worden gevolgd door de Enter-toets (vergelijkbaar met tags). Gebruik op een lege array resulteert in een onware evaluatie. De waarde voor order.lineitem.product.title wordt vergeleken met: pineapple, guava, kiwi.

Als de producttitel van de orderregel guava is, dan is de voorwaarde waar, omdat ‘guava’ voorkomt in de lijst die je hebt opgegeven.
Geen van Controleert of het veld niet gelijk is aan een van de waarden in de opgegeven lijst. De waarde voor order.lineitem.product.title wordt vergeleken met: pineapple, guava, kiwi.

Als de producttitel van de orderregel raspberry is, dan is de voorwaarde waar, omdat ‘raspberry’ niet voorkomt in de lijst die je hebt opgegeven.
Bevat Vergelijkt waarden om te controleren of de eerste waarde de tweede waarde bevat. De waarde voor order.lineitem.product.title wordt vergeleken met: berry.

Als de producttitel van de orderregel strawberry is, dan is de voorwaarde waar, omdat ‘berry’ voorkomt in ‘strawberry’.
Bevat niet Vergelijkt waarden om te controleren of de eerste waarde de tweede waarde niet bevat. De waarde voor order.lineitem.product.title wordt vergeleken met: bes.

Als de producttitel van de orderregel appel is, is de voorwaarde waar, omdat 'bes' niet voorkomt in 'appel'.
Begint met Vergelijkt waarden om te controleren of de eerste waarde begint met de gegevens in de tweede waarde. De waarde voor order.shippingAddress.country wordt vergeleken met: Verenigd.

Als het land voor het bezorgadres van de bestelling Verenigd Koninkrijk is, is de voorwaarde waar, omdat 'Verenigd Koninkrijk' met 'Verenigd' begint.
Begint niet met Vergelijkt waarden om te controleren of de eerste waarde niet begint met de gegevens in de tweede waarde. De waarde voor order.shippingAddress.country wordt vergeleken met: Verenigd.

Als het land voor het bezorgadres van de bestelling Canada is, is de voorwaarde waar, omdat 'Verenigd Koninkrijk' niet met 'Canada' begint.
Eindigt met Vergelijkt waarden om te controleren of de eerste waarde eindigt met de gegevens in de tweede waarde. De waarde voor order.lineitems.product.title wordt vergeleken met: taart.

Als de producttitel van de orderregel limoentaart is, is de voorwaarde waar, omdat 'limoentaart' op 'taart' eindigt.
Eindigt niet met Vergelijkt waarden om te controleren of de eerste waarde niet eindigt met de gegevens in de tweede waarde. De waarde voor order.lineitems.product.title wordt vergeleken met: taart.

Als de producttitel van de orderregel chocoladecake is, is de voorwaarde waar, omdat 'chocoladecake' niet op 'taart' eindigt.

Null- of lege operators

Lijst met null- en lege operators in Shopify Flow-voorwaarden.
OperatorBeschrijvingWaar/onwaar-voorwaarde
Leeg of bestaat nietControleert of een veld leeg is (geen waarde heeft) of niet bestaat (null is). Retourneert waar als het veld leeg of null is en onwaar als het veld een waarde bevat.
Niet leeg en bestaatControleert of een veld aanwezig is en niet leeg of null is. Retourneert waar als het veld niet leeg is en bestaat, en onwaar als het leeg is.

Lijstoperators

Lijstoperators worden gecombineerd met operators op veldniveau, zodat je voorwaarden kunt controleren voor gegevens in lijsten.

Net als in het voorbeeld ‘ten minste één van’, wil je misschien controleren of een bestelling een specifiek product bevat (in order.lineItems) met een specifieke tag (een lijst onder order.lineItems.product.tags). In beide gevallen wordt in het voorbeeld de lijstoperator ten minste één van gebruikt.

Flow biedt 3 operators om met lijsten te werken: Ten minste één van, Geen van en Alle.

Tabel met lijstoperators in Shopify Flow-voorwaarden.
OperatorBeschrijvingGebruiksvoorbeeld
Ten minste een vanControleert of een willekeurig item in de lijst aan de opgegeven voorwaarde voldoet.

Retourneert true als een willekeurig item in de lijst overeenkomt. Als de lijst leeg is of geen enkel item overeenkomt, wordt false geretourneerd.
Controleer of een bestelling een product met een specifieke tag bevat met Ten minste één van order line items.product.tags is gelijk aan tagnaam.
Geen vanControleert of geen enkel item in de lijst aan de opgegeven voorwaarde voldoet.

Retourneert true als geen van de items aan de voorwaarde voldoet. Als de lijst leeg is, wordt true geretourneerd.
Controleer of een product niet de tag presale heeft via None of product tags is equal to presale.

Een veelgemaakte fout is het proberen te ontkrachten van de operator door is not equal to te gebruiken. Deze dubbele ontkenning, None of product tags is not equal to presale, maakt de voorwaarde lastig te begrijpen en ongeldig.
AlleControleert of alle items in de lijst aan de opgegeven voorwaarde voldoen.

Retourneert true als elk item in de lijst aan de voorwaarde voldoet.
Controleer of alle artikelen in een bestelling een specifieke productverkoper genaamd Acme hebben met Alle orderregels: product.vendor is gelijk aan Acme.

Voorwaarden ordenen

Je kunt workflows aanmaken met meerdere voorwaarden, die elk tot verschillende acties kunnen leiden. De volgorde van de voorwaarden is belangrijk. De controle op voorwaarden begint aan het begin van de workflow en doorloopt systematisch elke voorwaarde. De controle stopt wanneer aan een voorwaarde is voldaan.

In dit voorbeeld worden meerdere voorwaarden gebruikt om te controleren of een klant in aanmerking komt voor een loyaliteitsprogramma op basis van het totale bedrag dat diegene in de winkel heeft uitgegeven. De voorwaarden worden gecontroleerd in de volgorde waarin ze worden weergegeven:

  1. Als de totaalprijs hoger is dan $ 1000 en de klant ermee instemt marketing te accepteren, tag je die met de tag Gold.
  2. Als de totaalprijs lager is dan $ 1000 maar hoger dan $ 500 en de klant ermee instemt marketing te accepteren, tag je die met de tag Silver.
  3. Als de totaalprijs lager is dan $ 500 maar hoger dan $ 200 en de klant ermee instemt marketing te accepteren, tag je die met de tag Bronze.

Voorbeeld van een workflow die het totale bestedingsbedrag van een klant controleert en tags toevoegt

Meerdere criteria in één voorwaarde combineren

Wanneer je een voorwaarde opstelt, kun je verschillende criteria instellen. Je kunt kiezen hoe deze afzonderlijke criteria moeten worden gecombineerd om te bepalen of de algehele voorwaarde waar of onwaar is.

Als aan alle criteria is voldaan

Als je AND selecteert, resulteert dit alleen in een ‘waar’-respons als elk criterium dat je hebt ingesteld, waar is.

Je maakt bijvoorbeeld een workflow aan om klanten te taggen die in Canada zijn gevestigd en meer dan $ 500 besteden aan een enkele bestelling.

Voorbeeld van een workflow die de AND-voorwaarde gebruikt

De workflow tagt de klant alleen als de klant zich in Canada bevindt en meer dan $ 500 uitgeeft voor de bestelling. Als een van deze voorwaarden onjuist is, wordt de klant niet getagd.

Als aan een van de criteria is voldaan

Als je OR selecteert, levert dit een 'true'-respons op als een van de ingestelde criteria waar is.

Je maakt bijvoorbeeld een workflow aan om bestellingen met een risicoaanbeveling van Annuleren of Onderzoeken te taggen. Zolang een van die voorwaarden waar is, wordt de bestelling getagd.

Voorbeeld van een workflow die de OR-voorwaarde gebruikt

Statische en dynamische gegevens in voorwaarden

Normaal gesproken is de tweede waarde in een voorwaarde een statische, handmatig ingevoerde waarde (zoals product.title == 'jouw titel'). Deze waarde blijft hetzelfde elke keer dat de workflow wordt uitgevoerd.

Je kunt ook dynamische waarden gebruiken als het veld voor de tweede waarde het pictogram Code bewerken weergeeft. Dynamische waarden worden elke keer dat de workflow wordt uitgevoerd, opgehaald uit je winkelgegevens. Om een dynamische waarde te gebruiken, klik je op het pictogram Code bewerken en selecteer je de waarde waarmee je wilt vergelijken. Dynamische waarden zijn niet voor alle velden beschikbaar.

Je maakt bijvoorbeeld een workflow aan die een bestelling tagt als het land in het factuuradres van de bestelling overeenkomt met het land in het bezorgadres.

Voorbeeld van een workflow die een bestelling tagt met behulp van RHS-gegevens om te controleren of het factuur- en bezorgland van een klant hetzelfde zijn.

In dit voorbeeld worden zowel de eerste als de tweede waarde opgehaald uit de gegevens van je winkel, in plaats van dat er handmatig een statische tekenreeks wordt opgegeven om de tweede waarde mee te vergelijken. Als het land in het factuuradres dat de klant heeft opgegeven hetzelfde is als het land in het bezorgadres, is de voorwaarde 'true' en wordt de bestelling getagd.

Soms moet je misschien dynamische gegevens van het verkeerde type gebruiken. Je moet bijvoorbeeld een getal dat als tekenreeks is opgeslagen, vergelijken met een ander getal. In dit geval kun je de optie Code uitvoeren gebruiken om de gegevens naar het juiste type om te zetten.

Templates

De meeste templates in de templatebibliotheek bevatten een voorwaarde.

Voorbeeldvoorwaarden

Controleren of ten minste één artikel in een lijst aan een voorwaarde voldoet

In dit voorbeeld zie je een typische voorwaarde die controleert of ten minste één artikel in een lijst overeenkomt met een bepaalde waarde.

In dit geval controleert de voorwaarde of een van de producten in een bestelling de tag presale heeft. Om deze voorwaarde samen te stellen, kies je order / lineItems / product / tags. Standaard kiest Flow ten minste één van als de logische operator:

Voorbeeld van het configuratiepaneel van een voorwaarde, waarin een controle voor ten minste één producttag wordt weergegeven.

De onderdelen ten minste één van zijn lijstoperators en worden gebruikt om overeenkomsten tussen meerdere lijstitems af te handelen. Het onderdeel is gelijk aan is een operator op veldniveau dat bepaalt of een enkel lijstitem overeenkomt.

Controleren of geen van de artikelen in een lijst aan een voorwaarde voldoet

In dit voorbeeld zie je een typische voorwaarde die controleert of geen van de artikelen in een lijst overeenkomt met een bepaalde waarde. Een veelvoorkomend probleem om rekening mee te houden, is dat lijsten leeg kunnen zijn. Wanneer een lijst leeg is, wordt de voorwaarde afgehandeld door de lijstoperator (in dit geval geen van).

In dit geval controleert de voorwaarde of geen van de producttags gelijk is aan 'foo':

Voorbeeld van het configuratiepaneel van een voorwaarde, dat een controle weergeeft op de afwezigheid van een producttag.

De voorwaarde retourneert true als (1) er geen producttags zijn of (2) geen van de tags 'foo' is. Anders retourneert deze false.

Controleren of een artikel in een lijst aan meerdere criteria voldoet

In dit voorbeeld zie je een typische voorwaarde die controleert of ten minste één artikel in een lijst overeenkomt met twee afzonderlijke criteria.

In dit geval controleert de voorwaarde of een van de producten in een bestelling de tag presale heeft en of het een productType van clothing heeft.

Voorbeeld van het configuratiepaneel van een voorwaarde, waarin een controle wordt weergegeven voor ten minste één producttag en een productType.

Om deze voorwaarde samen te stellen, moet je het volgende doen:

  1. Kies order / lineItems / product / tags voor het eerste criterium.
  2. Kies Criteria toevoegen voor hetzelfde artikel in de lijst lineItems. Opmerking: het kiezen van het verkeerde lijstitem is een veelgemaakte fout.
  3. Kies lineItems_item als het object op het hoogste niveau en vervolgens product / productType` voor het tweede criterium. Opmerking: het kiezen van het verkeerde object is ook een veelgemaakte fout.
  4. Kies AND om de twee criteria te combineren.
  5. Voer de waarden presale en clothing in voor de twee criteria.