Voorwaarden in Shopify Flow
In Shopify Flow worden voorwaarden gebruikt om te bepalen welk traject in een workflow wordt gebruikt, meestal om te beheren of een actie wordt ondernomen. Als je een voorwaarde instelt, kies je een gegevensveld om te na te gaan (zoals een producttitel), een logische operator (zoals equal to
) en een waarde om op te controleren (Blue jeans
).
Op deze pagina
Voorbeelden van voorwaarden
Controleer of ten minste één artikel in een lijst overeenkomt met een voorwaarde
Dit voorbeeld geeft een gebruikelijke voorwaarde weer die controleert of ten minste één artikel in een lijst overeenkomt met een bepaalde waarde.
In dit geval wordt met de voorwaarde gecontroleerd of een van de producten in een bestelling de tag presale
bevat. Kies order / lineItems / product / tags
om deze voorwaarde op te bouwen. Flow kiest standaard ten minste een van als de logische operator:
De onderdelen Ten minste een van zijn lijstoperators en worden gebruikt om overeenkomsten te verwerken in meerdere lijstartikelen. Het onderdeel Is gelijk aan is een operator op veldniveau die bepaalt of één lijstartikel overeenkomt.
Controleer of geen van de artikelen in een lijst overeenkomt met een voorwaarde
In dit voorbeeld wordt een gebruikelijke voorwaarde weergegeven waarin wordt gecontroleerd of geen van de artikelen in een lijst overeenkomt met een bepaalde waarde. Een veelvoorkomend probleem is dat lijsten leeg kunnen zijn. Als een lijst leeg is, wordt de voorwaarde verwerkt door de lijstoperator (in dit geval Geen van).
In dit geval wordt met de voorwaarde gecontroleerd of geen van de producttags gelijk is aan foo:
De voorwaarde retourneert true
als (1) er geen producttags zijn of (2) geen van de tags foo is. Anders retourneert deze false
.
Controleer of een artikel in een lijst aan meerdere criteria voldoet
Dit voorbeeld geeft een gebruikelijke voorwaarde weer 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
en het producttype clothing
bevat.
Je kunt het volgende doen om deze voorwaarde op te bouwen:
- Kies order / lineItems / product / tags als eerste criterium.
- Kies Criteria voor hetzelfde artikel toevoegen voor de lijst lineItems. Opmerking: een veelvoorkomende fout is het kiezen van het verkeerde lijstartikel.
- Kies lineItems_item als het toplevelobject en vervolgens product / productType als tweede criterium. Opmerking: een andere veelvoorkomende fout is het kiezen van het verkeerde object.
- Kies AND om de twee criteria te combineren.
- Voer de waarden
presale
enclothing
voor de twee criteria in.
Gegevenstypen die worden gebruikt met Flow
De eerste waarde in een Flow-voorwaarde is dat gegevens uit je winkel worden afgenomen en afkomstig zijn van GraphQL-admin-API.
Flow ondersteunt de volgende soorten gegevens:
- Float: Float-waarden zijn getallen met een decimaal getal. Bijvoorbeeld 4,25.
- Geheel getal: gehele getallen zijn getallen zonder decimaal getal. Bijvoorbeeld 42.
- Datum: datumwaarden zijn numerieke weergave van de datum. Bijvoorbeeld 01012021.
- Tekenreeks: tekenreekswaarden zijn tekst. Vergelijkingen met tekenreekswaarden zijn niet hoofdlettergevoelig.
- Boolean: Boolean-waarden zijn waar of onwaar.
- Enum: Enum-waarden zijn reeksen gegevens waarmee een variabele een reeks vooraf gedefinieerde constanten kan zijn.
Logische operators
Logische operators definiëren hoe je voorwaarde wordt toegepast. Voorwaarden kunnen eenvoudige eigenschappen controleren, zoals of het totaal van een bestelling hoger is dan een bepaald bedrag of dat een klant marketing accepteert. Logische operators kunnen ook controleren op complexere eigenschappen.
Operators kunnen operators op veldniveau zijn, zoals Gelijk aan of Niet gelijk aan, of lijstoperators, zoals Ten minste een van of Geen operators.
Operators op veldniveau
Operators op veldniveau worden gebruikt om twee waarden te vergelijken. Flow kan de volgende operators gebruiken:
- Gelijk aan
- Niet gelijk aan
- Meer dan en Groter dan of gelijk aan
- Minder dan en Minder dan of gelijk aan
- Minstens een van
- Niet een van
- Bevat
- Bevat geen
- Begint met
- Begint niet met
- Eindigt met
- Eindigt niet met
Gelijk aan
Gelijk aan vergelijkt waarden om te controleren of ze hetzelfde zijn. In het volgende voorbeeld wordt de waarde voor order.currentTotalDiscountsSet.shopMoney.amount
uit je winkelgegevens opgehaald en vergeleken met de tweede waarde, 50.
Als de eerste waarde gelijk is aan 50, dan is de voorwaarde waar. De bestelling is geannuleerd.
Niet gelijk aan
Niet gelijk aan vergelijkt waarden om te zien of ze hetzelfde zijn. In het volgende voorbeeld wordt de waarde voor order.currentTotalDiscountsSet.shopMoney.amount
uit je winkelgegevens opgehaald en vergeleken met de tweede waarde, 50.
Als de eerste waarde gelijk is aan 93, dan is de voorwaarde waar. De bestelling is geannuleerd.
Meer dan en Groter dan of gelijk aan
Groter dan en Groter dan of gelijk aan vergelijken waarden om te zien of de eerste waarde groter is dan, of groter dan of gelijk is aan de tweede waarde. In het volgende voorbeeld wordt de waarde voor order.currentTotalDiscountsSet.shopMoney.amount
uit je winkelgegevens opgehaald en vergeleken met de tweede waarde, 50.
Als de waarde die uit je winkel wordt afgenomen 137 is, dan is de voorwaarde waar, omdat 137 groter is dan 50. De bestelling is geannuleerd.
Minder dan en Minder dan of gelijk aan
Kleiner dan en Kleiner dan of gelijk aan vergelijken waarden om te zien of de eerste waarde kleiner is dan, of kleiner dan of gelijk is aan de tweede waarde. In het volgende voorbeeld wordt de waarde voor order.currentTotalDiscountsSet.shopMoney.amount
uit je winkelgegevens opgehaald en vergeleken met de tweede waarde, 50.
Als de waarde die uit je winkel wordt afgenomen 47 is, is de voorwaarde waar, omdat 47 minder dan of gelijk is aan 50. De bestelling is geannuleerd.
Ten minste een van
Met de operator Ten minste een van wordt gecontroleerd of het veld gelijk is aan de waarde in de opgegeven lijst. De te controleren waarden moet je afzonderlijk invoeren, gevolgd door de enter-toets (zoals bij tags). Als je Ten minste een van met een lege matrix gebruikt, resulteert dit in een onjuiste beoordeling. In het volgende voorbeeld wordt de waarde order.lineitem.product.title
uit je winkelgegevens opgehaald en vergeleken met de tweede reeks waarden: ananas, guava, kiwi.
Als de waarde die uit je winkel wordt afgenomen guave is, is de voorwaarde waar, omdat guava is opgenomen in de array ananas, guava, kiwi. De bestelling wordt geannuleerd.
Geen van deze
De operator Geen van deze controleert of het veld niet gelijk is aan de waarden in de opgegeven lijst. De te controleren waarden moet je afzonderlijk invoeren, gevolgd door de enter-toets (zoals bij tags). In het volgende voorbeeld wordt de waarde order.lineitem.product.title
uit je winkelgegevens opgehaald en vergeleken met de tweede reeks waarden: ananas, guava, kiwi.
Als de waarde die uit je winkel wordt opgehaald framboos is, is de voorwaarde waar, omdat framboos niet is opgenomen in de array ananas, guava, kiwi. De bestelling wordt geannuleerd.
Bevat
Bevat vergelijkt de waarden om te zien of de invoer van de eerste waarde de gegevens in de invoer van de tweede waarde bevat. In het volgende voorbeeld wordt de waarde voor order.lineitem.product.title
uit je winkelgegevens opgehaald en vergeleken met de tweede waarde, krabben.
Als de waarde die je uit je winkelgegevens haalt wolkenkrabber is, dan is de voorwaarde waar, want de exacte string krab is niet opgenomen in de string wolkenkrabber. De bestelling wordt geannuleerd.
Bevat geen
Bevat geen vergelijkt de waarden om te zien of de invoer van de eerste waarde niet de gegevens in de invoer van de tweede waarde bevat. In het volgende voorbeeld wordt de waarde voor order.lineitem.product.title
uit je winkelgegevens opgehaald en vergeleken met de tweede waarde, krabben.
Als de waarde die je uit je winkelgegevens haalt krapper is, dan is de voorwaarde waar, want de exacte tekenreeks 'krab' is niet opgenomen in de tekenreeks krapper. De bestelling wordt geannuleerd.
Begint met
Begint met vergelijkt waarden om te zien of de eerste waarde begint met de gegevens in de tweede waarde. In het volgende voorbeeld wordt de waarde voor order.shippingAddress.country
uit je winkelgegevens opgehaald en vergeleken met de tweede waarde, Verenigd.
Als de waarde die wordt afgenomen uit je winkel Verenigd Koninkrijk is, is de voorwaarde waar, omdat de reeks Verenigd Koninkrijk de tekenreeks Verenigd voorafgaat. De bestelling wordt geannuleerd.
Begint niet met
Begint niet met vergelijkt waarden om te zien of de eerste waarde niet begint met de gegevens in de tweede waarde. In het volgende voorbeeld wordt de waarde voor order.shippingAddress.country
uit je winkelgegevens opgehaald en vergeleken met de tweede waarde, Verenigd.
Als de waarde die wordt afgenomen uit je winkel Canada is, is de voorwaarde waar, omdat de reeks Verenigd Koninkrijk niet wordt voorafgegaan door Canada. De bestelling wordt geannuleerd.
Eindigt met
Eindigt met vergelijkt waarden om te zien of de eerste waarde eindigt met de gegevens in de tweede waarde. In het volgende voorbeeld wordt de waarde voor order.lineitems.product.title
uit je winkelgegevens opgehaald en vergeleken met de tweede waarde, laatst-beschikbaar.
Als de waarde die wordt afgenomen uit je winkel sportsokken laatst-beschikbaar is, is de voorwaarde waar, omdat de tekenreeks sportsokken laatst-beschikbaar eindigt met de tekenreeks laatst-beschikbaar. De bestelling wordt geannuleerd.
Eindigt niet met
Begint niet met vergelijkt waarden om te zien of de eerste waarde niet begint met de gegevens in de tweede waarde. In het volgende voorbeeld wordt de waarde voor order.lineitems.product.title
uit je winkelgegevens opgehaald en vergeleken met de tweede waarde, laatst-beschikbaar.
Als de waarde die uit je winkel is gehaald sportsokken nieuw is, dan is de voorwaarde waar omdat de tekenreeks sportsokken nieuw niet eindigt op de tekenreeks last-available. De bestelling is geannuleerd.
Null- of lege operators
Leeg of bestaat niet
Sommige velden in je gegevens kunnen leeg zijn. Zo retourneert order.cancelReason
bijvoorbeeld null
als een bestelling niet is geannuleerd. Gebruik Leeg of bestaat niet als je true
retour wil als een veld leeg is of null
en false
als een veld aanwezig is.
Niet leeg en bestaat
Sommige velden in je gegevens kunnen leeg zijn. Zo retourneert order.cancelReason
bijvoorbeeld null
als een bestelling niet is geannuleerd. Gebruik Niet leeg en bestaat als je true
retour wil als een veld niet leeg is en false
als een veld leeg is.
Lijstoperators
Lijstoperators worden gecombineerd met operators op veldniveau, zodat je de voorwaarden kunt controleren op gegevens die op lijsten zijn opgenomen.
Net als in het voorbeeld van Ten minste een van kun je controleren of een bestelling een specifiek product bevat (dat zich in order.lineItems
bevindt) via een specifieke tag (een lijst onder order.lineItems.product.tags
). In beide gevallen wordt in het voorbeeld de lijstoperator Ten minste een van gebruikt.
Flow biedt 3 operators voor het werken met lijsten: Ten minste een van, Geen van en Alle.
Ten minste een van
Voor de meeste voorwaarden met lijsten is het handig Ten minste een van te gebruiken. Deze operator retourneert true
als artikelen op de lijst overeenkomen met de voorwaarde. Als je bijvoorbeeld wil controleren of een bestelling een product met een specifieke tag bevat, gebruik je Ten minste een van. Als de lijst leeg is of niet aan de voorwaarde is voldaan, retourneert de voorwaarde false
.
Geen van
In sommige gevallen wil je misschien controleren of een lijst geen artikel bevat. De beste manier om deze voorwaarde op te bouwen, is door de lijstoperator te wijzigen naar Geen van. Deze operator retourneert true
als geen van de artikelen op de lijst overeenkomt met de voorwaarde. Nog belangrijker, als de lijst leeg is, retourneert deze true
. Als je bijvoorbeeld wil controleren of een product niet de tag presale
bevat, gebruik je None of product tags is equal to presale
.
Alle
In beperkte gevallen wil je misschien controleren of alle artikelen in een lijst overeenkomen met een voorwaarde. Je wil misschien controleren of alle artikelen in een bestelling de specifieke productleverancier Acme
hebben. Hiervoor gebruik je All of order line items have a product.vendor equal to Acme
.
Voorwaarden in de juiste volgorde zetten
Je kunt workflows aanmaken met meerdere voorwaarden, die elk verschillende acties kunnen activeren. De volgorde van de voorwaarden is belangrijk. De controle op voorwaarden begint bij het begin van de workflow en gaat systematisch door elke voorwaarde heen. De controle stopt als aan een voorwaarde voldaan is.
Meerdere criteria in één voorwaarde combineren
Bij het opbouwen van een voorwaarde, kun je verschillende criteria instellen. Je kunt kiezen hoe deze afzonderlijke criteria gecombineerd moeten worden.
Als aan alle voorwaarden is voldaan
Het kiezen van Als aan alle voorwaarden is voldaan geeft alleen een waar antwoord als elk criterium dat je instelt waar is. Dit werkt als een AND
-verklaring in programmering.
Je maakt bijvoorbeeld een workflow om klanten in Canada te taggen en meer dan USD 500 uit te geven aan één bestelling.
De workflow tagt de klant alleen als de klant zich in Canada bevindt en diegene meer dan USD 500 aan de bestelling uitgeeft. Als een van deze voorwaarden onjuist is, wordt de klant niet getagd.
Als aan alle voorwaarden wordt voldaan
Als je de resultaten Als aan alle voorwaarden wordt voldaan selecteert, krijg je een waar antwoord als een van de criteria die je instelt waar is. Dit werkt als een OR
-verklaring in programmering.
Je maakt bijvoorbeeld een workflow om bestellingen te taggen die worden beschouwd als hoog of gemiddeld risico.
De workflow tagt de bestelling als het een hoog of gemiddeld risico heeft. Zolang een van die voorwaarden waar is, wordt de bestelling getagd.
Voorwaarden en acties combineren
Je kunt voorwaarden combineren om één grote voorwaarde te maken. Wanneer voorwaarden worden gecombineerd, is de hele voorwaarde alleen waar als aan alle voorwaarden is voldaan. Als niet aan een voorwaarde wordt voldaan, is de hele voorwaarde onwaar. In het volgende voorbeeld moet de klant marketingmateriaal accepteren en moet de totale prijs van de bestelling aan een bepaalde drempel voldoen.
Je kunt acties ook combineren om meerdere acties tegelijk uit te voeren. 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 de klant in de winkel heeft uitgegeven. In het bovenstaande voorbeeld worden de voorwaarden gecontroleerd in de weergeven volgorde:
- Als de totale prijs hoger is dan $ 1000 en de klant marketing accepteert, dan geef je de klant de tag Goud.
- Als de totale prijs lager is dan $ 1000, maar hoger dan $ 500 en de klant marketing accepteert, dan geef je de klant de tag Zilver.
- Als de klant meer dan $ 200 heeft besteed en marketing accepteert, dan geef je deze klant de tag Brons.
Statische en dynamische gegevens onder voorwaarden
Normaal gesproken is de tweede waarde in een waarde een statische, handmatig ingevoerde waarde (zoals product.title == "your title"
). Deze waarde blijft hetzelfde, bij elke uitvoering van de workflow.
Je kunt ook dynamische waarden gebruiken als in het veld voor de tweede waarde een symbool </>
wordt weergegeven. Dynamische waarden worden uit je winkelgegevens gehaald telkens als de workflow wordt uitgevoerd. Als je een dynamische waarde wilt gebruiken, klik je op het symbool </>
en selecteer je de waarde die je wilt controleren. Dynamische waarden zijn niet voor alle velden beschikbaar.
Je maakt bijvoorbeeld een workflow die een bestelling tagt als het land op het factuuradres van de bestelling overeenkomt met het land op het bezorgadres.
In dit voorbeeld zijn zowel de eerste als de tweede waarden afkomstig van de gegevens van je winkel, in plaats van handmatig een statische tekenreeks op te geven om tegen te gaan voor de tweede waarde. Als het land op het factuuradres dat door de klant wordt opgegeven, hetzelfde is als het land dat de klant heeft opgegeven in het bezorgadres, is de voorwaarde waar en wordt de bestelling getagd.
Je moet mogelijk af en toe dynamische gegevens van het verkeerde type gebruiken. Het kan bijvoorbeeld nodig zijn een nummer dat als tekenreeks is opgeslagen te vergelijken met een ander nummer. In dat geval kun je de optie Code uitvoeren gebruiken om de gegevens om te zetten naar het juiste type.