Villkor i Shopify Flow

Villkor fortsätter ett arbetsflöde när vissa regler är uppfyllda, till exempel i början av en om-då-sats. När du anger ett villkor väljer du kriterier från fält i GraphQL Admin API (t.ex. product.title), en logisk operator (t.ex. equal to) och ett värde att kontrollera mot (t.ex. Blå jeans). När ett arbetsflöde utvärderar ett villkor kontrollerar Flow värdet som definieras i arbetsflödet mot värdet som returneras för din butik och visar sedan resultaten i arbetsflödeskörningen. Lär dig hur du förhandsgranskar butiksdata för att få en bättre förståelse för de fält och värden som är tillgängliga för att definiera villkor.

Mer information om grunderna för villkor.

Datatyper som används med Flow

När du anger ett villkor väljer du ett kriterium från de fält som är tillgängliga i Admin API och Flow utvärderar det mot det värde som returneras för din butik.

Flow har stöd för följande typer av data:

  • Flyttal: Flyttalsvärden är tal med decimaler. Till exempel 4,25.
  • Heltal: Heltalsvärden är heltal som inte har några decimaler. Till exempel 42.
  • Datum: Datumvärden är en numerisk representation av datumet. Till exempel 01012021.
  • Sträng: Strängvärden är text. Jämförelser med strängvärden är inte skiftlägeskänsliga.
  • Boolesk: Booleska värden är antingen sanna eller falska.
  • Enum: Enum-värden är datauppsättningar som gör att en variabel kan vara en uppsättning fördefinierade konstanter.

Logiska operatorer

Logiska operatorer definierar hur ditt villkor tillämpas. Villkor kan kontrollera enkla egenskaper, till exempel om en orders totalbelopp är över ett visst belopp, eller om en kund godkänner marknadsföring. Logiska operatorer kan även kontrollera mer komplexa egenskaper.

Operatorer kan antingen vara operatorer på fältnivå, såsom lika med eller inte lika med, eller listoperatorer, såsom minst en av eller ingen av.

Operatorer på fältnivå

Operatorer på fältnivå används för att jämföra två värden. Flow kan använda följande operatorer:

Lista över operatorer på fältnivå som är tillgängliga i Shopify Flow.
OperatorBeskrivningExempel
Lika med Jämför värden för att kontrollera om de är samma. Värdet för order.currentTotalDiscountsSet.shopMoney.amount hämtas från dina butiksdata och jämförs med det andra värdet, 50.

Om orderns totala rabatter är exakt 50 så är villkoret sant.
Inte lika med Jämför värden för att kontrollera om de inte är samma. Värdet för order.currentTotalDiscountsSet.shopMoney.amount hämtas från dina butiksdata och jämförs med det andra värdet, 50.

Om orderns totala rabatter inte är exakt 50 så är villkoret sant.
Större än och Större än eller lika med Jämför värden för att kontrollera om det första värdet är större än, eller större än eller lika med, det andra värdet. Värdet för order.currentTotalDiscountsSet.shopMoney.amount hämtas från dina butiksdata och jämförs med det andra värdet, 50.

Om värdet för orderns totala rabatter är 137 så är villkoret sant, eftersom 137 är större än 50.
Mindre än och Mindre än eller lika med Jämför värden för att kontrollera om det första värdet är mindre än, eller mindre än eller lika med, det andra värdet. Värdet för order.currentTotalDiscountsSet.shopMoney.amount hämtas från dina butiksdata och jämförs med det andra värdet, 50.

Om orderns totala rabatter är 47 så är villkoret sant, eftersom 47 är mindre än eller lika med 50.
Minst en av Kontrollerar om fältet är lika med något värde i den angivna listan. Värdena måste anges individuellt och följas av returtangenten (liknande taggar). Om du använder en tom matris blir utvärderingen falsk. Värdet för order.lineitem.product.title jämförs med: pineapple, guava, kiwi.

Om produktnamnet för posten är guava så är villkoret sant, eftersom ”guava” ingår i den lista som du har angett.
Ingen av Kontrollerar om fältet inte är lika med något av värdena i den angivna listan. Värdet för order.lineitem.product.title jämförs med: pineapple, guava, kiwi.

Om produktnamnet för posten är raspberry så är villkoret sant, eftersom ”raspberry” inte ingår i den lista som du har angett.
Innehåller Jämför värden för att kontrollera om det första värdet innehåller data från det andra värdet. Värdet för order.lineitem.product.title jämförs med: berry.

Om produktnamnet för posten är strawberry så är villkoret sant, eftersom ”berry” ingår i ”strawberry”.
Innehåller inte Jämför värden för att kontrollera om det första värdet inte innehåller data från det andra värdet. Värdet för order.lineitem.product.title jämförs med: berry.

Om postens produktnamn är apple är villkoret sant, eftersom ”berry” inte ingår i ”apple”.
Börjar med Jämför värden för att kontrollera om det första värdet börjar med det andra. Värdet för order.shippingAddress.country jämförs med: United.

Om landet för orderns leveransadress är United Kingdom är villkoret sant, eftersom ”United Kingdom” börjar med ”United”.
Börjar inte med Jämför värden för att kontrollera om det första värdet inte börjar med det andra. Värdet för order.shippingAddress.country jämförs med: United.

Om landet för orderns leveransadress är Canada är villkoret sant, eftersom ”United Kingdom” inte börjar med ”Canada”.
Slutar med Jämför värden för att kontrollera om det första värdet slutar med det andra. Värdet för order.lineitems.product.title jämförs med: pie.

Om postens produktnamn är key lime pie är villkoret sant, eftersom ”key lime pie” slutar på ”pie”.
Slutar inte med Jämför värden för att kontrollera om det första värdet inte slutar med det andra. Värdet för order.lineitems.product.title jämförs med: pie.

Om postens produktnamn är chocolate cake är villkoret sant, eftersom ”chocolate cake” inte slutar på ”pie”.

Null- eller tomma operatorer

Lista över null- och tomma operatorer i Shopify Flow-villkor.
OperatorBeskrivningSant/falskt-villkor
Tom eller finns inteKontrollerar om ett fält är tomt (saknar värde) eller inte finns (är null). Returnerar sant när fältet är tomt eller null och falskt om det finns.
Inte tom och finnsKontrollerar om ett fält finns och inte är tomt eller null. Returnerar sant när fältet inte är tomt och finns, och falskt när det är tomt.

Listoperatorer

Listoperatorer kombineras med operatorer på fältnivå så att du kan kontrollera villkor för data som ingår i listor.

Precis som i exemplet ”minst en” kanske du vill kontrollera om en order innehåller en specifik produkt (finns i order.lineItems) med en specifik tagg (en lista under order.lineItems.product.tags). I båda fallen används listoperatorn minst en av i exemplet.

Flow tillhandahåller tre operatorer för att arbeta med listor: Minst en av, Ingen av och Alla.

Tabell över listoperatorer i Shopify Flow-villkor.
OperatorBeskrivningExempel på användning
Minst en avKontrollerar om något objekt i listan matchar det angivna villkoret.

Returnerar true om något objekt i listan matchar. Om listan är tom eller inget objekt matchar returneras false.
Kontrollera om en order innehåller en produkt med en specifik tagg med hjälp av Minst en av orderposters produkttaggar är lika med taggnamn.
Ingen avKontrollerar att inget av objekten i listan matchar det angivna villkoret.

Returnerar true om inget av objekten matchar villkoret. Om listan är tom returneras true.
Kontrollera om en produkt saknar taggen presale genom att använda None of product tags is equal to presale.

Ett vanligt misstag är att försöka negera operatorn genom att använda is not equal to. Att använda denna dubbla negation, None of product tags is not equal to presale, gör villkoret både svårt att förstå och ogiltigt.
AllaKontrollerar att alla objekt i listan matchar det angivna villkoret.

Returnerar true om varje objekt i listan matchar villkoret.
Kontrollera om alla artiklar i en order har en specifik produktsäljare som heter Acme med hjälp av Alla orderposter har en produkt.säljare lika med Acme.

Villkorsordning

Du kan skapa arbetsflöden som har flera villkor, där vart och ett kan resultera i olika åtgärder. Villkorens ordningsföljd är viktig. Kontrollen av villkor startar i början av arbetsflödet och fortsätter systematiskt genom varje villkor. Kontrollen avbryts när ett villkor uppfylls.

I det här exemplet används flera villkor för att kontrollera om en kund är kvalificerad för ett lojalitetsprogram baserat på det totala belopp som hen har handlat för i butiken. Villkoren kontrolleras i den ordning som de visas:

  1. Om det totala priset är högre än 1 000 USD och kunden godkänner att ta emot marknadsföring ska du tagga hen med taggen Gold.
  2. Om det totala priset är lägre än 1 000 USD men högre än 500 USD och kunden godkänner att ta emot marknadsföring ska du tagga hen med taggen Silver.
  3. Om det totala priset är lägre än 500 USD men högre än 200 USD och kunden godkänner att ta emot marknadsföring ska du tagga hen med taggen Bronze.

Exempel på ett arbetsflöde som kontrollerar en kunds totala spenderade belopp och lägger till taggar

Kombinera flera kriterier i ett villkor

När du skapar ett villkor kan du ange flera kriterier. Du kan välja hur dessa separata kriterier ska kombineras för att avgöra om det övergripande villkoret är sant eller falskt.

Om alla kriterier är uppfyllda

Valet OCH ger ett sant resultat endast om alla kriterier du anger är sanna.

Till exempel skapar du ett arbetsflöde för att tagga kunder som befinner sig i Kanada och spenderar mer än 500 $ på en enskild order.

Exempel på ett arbetsflöde som använder och-villkoret

Arbetsflödet taggar kunden endast om kunden befinner sig i Kanada och hen spenderar mer än 500 USD på ordern. Om något av dessa villkor är falskt taggas kunden inte.

Om några kriterier uppfylls

Om du väljer ELLER blir resultatet sant om något av de kriterier du anger är sant.

Du kan till exempel skapa ett arbetsflöde för att tagga ordrar med en riskrekommendation på Annullera eller Utred. Så länge ett av dessa villkor är sant, taggas ordern.

Exempel på ett arbetsflöde som använder eller-villkoret

Statisk och dynamisk data i villkor

Vanligtvis är det andra värdet i ett villkor ett statiskt, manuellt angett värde (till exempel product.title == ”din rubrik”). Det här värdet förblir detsamma varje gång arbetsflödet körs.

Du kan även använda dynamiska värden om fältet för det andra värdet visar en Redigera kod-ikon. Dynamiska värden hämtas från din butiksdata varje gång arbetsflödet körs. Om du vill använda ett dynamiskt värde klickar du på Redigera kod-ikonen och väljer det värde du vill jämföra med. Dynamiska värden är inte tillgängliga för alla fält.

Du kan till exempel skapa ett arbetsflöde som taggar en order om landet i orderns faktureringsadress matchar landet i dess leveransadress.

Exempel på ett arbetsflöde som taggar en order med hjälp av data från högerledet för att kontrollera att en kunds fakturerings- och leveransland är samma.

I det här exemplet hämtas både det första och det andra värdet från din butiksdata, snarare än att du manuellt anger en statisk sträng som det andra värdet ska jämföras med. Om landet i kundens faktureringsadress är detsamma som i leveransadressen är villkoret sant och ordern taggas.

Du kan ibland behöva använda dynamisk data som är av fel typ. Du kan till exempel behöva jämföra ett tal som lagrats som en sträng med ett annat tal. I det här fallet kan du använda alternativet Kör kod för att konvertera data till rätt typ.

Mallar

De flesta mallarna i mallbiblioteket innehåller ett villkor.

Exempelvillkor

Kontrollera om minst en artikel i en lista matchar ett villkor

Det här exemplet visar ett typiskt villkor som kontrollerar om minst en artikel i en lista matchar ett visst värde.

I det här fallet kontrollerar villkoret om en av produkterna i en order har taggen förköp. För att skapa det här villkoret väljer du order / lineItems / product / tags. Som standard väljer Flow minst en av som logisk operator:

Exempel på konfigurationspanelen för ett villkor, som visar en kontroll av minst en produkttagg.

Delarna minst en av är listoperatorer och används för att hantera matchning över flera listobjekt. Delen är lika med är en operator på fältnivå som avgör om ett enskilt listobjekt matchar.

Kontrollera om ingen av artiklarna i en lista matchar ett villkor

Det här exemplet visar ett typiskt villkor som kontrollerar om ingen av artiklarna i en lista matchar ett visst värde. Ett vanligt problem att tänka på är att listor kan vara tomma. När en lista är tom hanteras villkoret av listoperatorn (i det här fallet ingen av).

I det här fallet kontrollerar villkoret om ingen av produkttaggarna är lika med foo:

Exempel på ett villkors konfigurationspanel som visar en kontroll för avsaknad av en produkttagg.

Villkoret returnerar sant om (1) det inte finns några produkttaggar eller (2) ingen av taggarna är foo. I annat fall returneras falskt.

Kontrollera om en artikel i en lista matchar flera kriterier

Det här exemplet visar ett typiskt villkor som kontrollerar om minst en artikel i en lista matchar två separata kriterier.

I det här fallet kontrollerar villkoret om en av produkterna i en order har taggen förköp och en productType som är kläder.

Exempel på konfigurationspanelen för ett villkor, som visar en kontroll av minst en produkttagg och en productType.

Så här bygger du det här villkoret:

  1. Välj order / lineItems / product / tags för det första kriteriet.
  2. Välj Lägg till kriterier för samma artikel i listan lineItems. Obs! Det är ett vanligt misstag att välja fel listobjekt här.
  3. Välj lineItems_item som objekt på den översta nivån och sedan product / productType` för det andra kriteriet. Obs! Att välja fel objekt här är också ett vanligt misstag.
  4. Välj OCH för att kombinera de två kriterierna.
  5. Ange värdena förköp och kläder för de två kriterierna.