Villkor i Shopify Flow

I Shopify Flow används villkor för att bestämma vilken väg som ska följas i ett arbetsflöde, vanligtvis för att kontrollera om en åtgärd utförs. När du ställer in ett villkor väljer du ett datafält som ska kontrolleras (till exempel ett produktnamn), en logisk operator (till exempel equal to) och ett värde att kontrollera mot (Blue jeans).

Exempelvillkor

Kontrollera om minst en artikel i en lista matchar ett villkor

Det här exemplet visar ett vanligt 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 presale. För att skapa detta villkor väljer du order / lineItems / product / tags. Som standard väljer Flow minst en av som logisk operator:

If at least one of order / lineItems:
  If at least one of lineItem_item / product / tags
    tags_item
    is equal to
    presale

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

Kontrollera om ingen av artiklarna i en lista matchar ett villkor

Det här exemplet visar ett vanligt 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:

If none of product / tags:
  tag_item
  is equal to
  foo

Villkoret returnerar true om (1) det inte finns några produkttaggar eller (2) ingen av taggarna är foo. Annars returneras false.

Kontrollera om en artikel i en lista matchar flera villkor

Det här exemplet visar ett vanligt 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 taggats med presale och om dess productType är clothing.

If at least one of order / lineItems:
  If at least one of lineItem_item / product / tags
    tags_item
    is equal to
    presale
  AND
  If lineItem_item / product
    productType
    is equal to
    clothing

För att skapa detta villkor ska du:

  1. Välja order/lineItems/product/tags för det första kriteriet.
  2. Välja att lägga till kriterier för samma objekt på listan lineItems. Obs! Att välja fel listartikel här är ett vanligt misstag.
  3. Välja lineItems_item som toppnivåartikel och sedan product/productType för det andra kriteriet. Obs! Att välja fel artikel här är också ett vanligt misstag.
  4. Välja OCH för att kombinera de två kriterierna.
  5. Ange värdena presale och clothing för de två kriterierna.

Datatyper som används med Flow

Det första värdet i ett Flow-villkor är data som hämtats från din butik och bygger på GraphQL Admin API.

Flow stöder följande typer av data:

  • Flyttal: Flyttalsvärden är nummer med ett decimaltal. Till exempel 4,25.
  • Heltal: Heltalsvärden är heltal som inte har ett decimaltal. 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.
  • Boolean: Boolean-värden är antingen sanna eller falska.
  • Enum: Enum-värden är datauppsättningar som gör det möjligt för en variabel att 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 totalsumma är över ett visst belopp eller om en kund godkänner marknadsföring. Logiska operatorer kan också kontrollera mer komplexa egenskaper.

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

Fältnivåoperatorer

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

Lika med

Lika med jämför värden för att kontrollera om de är likadana. I följande exempel hämtas värdet för order.currentTotalDiscountsSet.shopMoney.amount från dina butiksdata och jämförs med det andra värdet, 50.

Exempel på ett arbetsflöde som använder samma till logisk operator för att annullera en order om hämtad data är lika med 50

Om det första värdet är lika med 50, så stämmer villkoret. Ordern är annullerad.

Inte lika med

Inte lika med jämför värden för att avgöra om de inte är likadana. I följande exempel hämtas värdet för order.currentTotalDiscountsSet.shopMoney.amount från dina butiksdata och jämförs med det andra värdet, 50.

Exempel på ett arbetsflöde som använder den logiska operatorn inte lika med för att annullera en order om hämtad data inte är lika med 50

Om det första värdet är lika med 93, så stämmer villkoret. Ordern är annullerad.

Större än och Större än eller lika med

Större än och Större än eller lika med jämför värden för att se om det första värdet är större än, eller större än eller lika med, det andra värdet. I följande exempel hämtas värdet för order.currentTotalDiscountsSet.shopMoney.amount från dina butiksdata och jämförs med det andra värdet, 50.

Exempel på ett arbetsflöde som använder den logiska operatorn större än för att annullera en order om hämtad data är större än 50

Om värdet som hämtats från din butik är 137, så stämmer villkoret, eftersom 137 är större än 50. Ordern är annullerad.

Mindre än och Mindre än eller lika med

Mindre än och Mindre än eller lika med jämför värden för att se om det första värdet är mindre än, eller mindre än eller lika med, det andra värdet. I följande exempel hämtas värdet för order.currentTotalDiscountsSet.shopMoney.amount från dina butiksdata och jämförs med det andra värdet, 50.

Exempel på ett arbetsflöde som använder mindre än eller samma till logisk operator för att annullera en order om hämtad data är mindre än eller lika med 50

Om värdet som hämtas från din butik är 47 är villkoret sant, eftersom 47 är mindre än eller lika med 50. Ordern annulleras.

Minst en av

Operatorn minst en av kontrollerar om fältet är lika med något värde i den angivna listan. De värden som ska kontrolleras måste anges individuellt och följas av Retur-tangenten (på samma sätt som taggar). Att använda minst en av på en tom matris leder till en felaktig bedömning. I följande exempel hämtas värdet för order.lineitem.product.title från dina butiksdata och jämförs med den andra värdeuppsättningen: ananas, guava, kiwi.

Exempel på ett arbetsflöde som använder den logiska operatorn

Om värdet som hämtas från din butik är guava är villkoret sant, eftersom guava ingår i uppsättningen ananas, guava, kiwi. Ordern annulleras.

Ingen av

Operatorn ingen av kontrollerar om fältet inte är lika med något av värdena i den angivna listan. De värden som ska kontrolleras måste anges individuellt och följas av Retur-tangenten (på samma sätt som taggar). I följande exempel hämtas värdet för order.lineitem.product.title från dina butiksdata och jämförs med den andra värdeuppsättningen: ananas, guava, kiwi.

Exempel på ett arbetsflöde som använder inte någon logisk operator för att annullera en order om hämtad data inte innehåller ananas, guava eller kiwi

Om värdet som hämtas från din butik är hallon är villkoret sant, eftersom hallon inte ingår i uppsättningen ananas, guava, kiwi. Ordern annulleras.

Inkluderar

Inkluderar jämför värden för att avgöra om någon av de första värdeinmatningarna inkluderar data i den andra värdeinmatningen. I följande exempel hämtas värdet för order.lineitem.product.title från dina butiksdata och jämförs med det andra värdet, skrot.

Exempel på ett arbetsflöde som använder den logiska operatorn innehåller för att annullera en order om hämtad data innehåller strängen skrapa

Om värdet som hämtas från din butiksdata är skyskrapa är villkoret sant, eftersom den exakta strängen skrapa ingår i strängen skyskrapa. Ordern annulleras.

Ingår inte

Inkluderar inte jämför värden för att avgöra om någon av de första värdeinmatningarna inte inkluderar data i den andra värdeinmatningen. I följande exempel hämtas värdet för order.lineitem.product.title från dina butiksdata och jämförs med det andra värdet, skrot.

Exempel på ett arbetsflöde som använder innehåller inte logisk operator för att annullera en order om hämtad data inte innehåller strängen skrot

Om värdet som hämtas från dina butiksdata är metallskrot är villkoret sant, eftersom den exakta strängen skrot inte ingår i strängen metallskrot. Ordern annulleras.

Börjar med

Börjar med jämför värden för att se om det första värdet börjar med de data som utgör det andra värdet. I följande exempel hämtas värdet för order.shippingAddress.country från dina butiksdata och jämförs med det andra värdet, Stor.

Exempel på ett arbetsflöde som använder den logiska operatorn börjar med för att annullera en order om hämtad data börjar med strängen Stor

Om värdet som hämtas från din butik är Storbritannien är villkoret sant eftersom strängen Stor inleder strängen Storbritannien. Ordern annulleras.

Börjar inte med

Börjar inte med jämför värden för att se om det första värdet inte börjar med de data som utgör det andra värdet. I följande exempel hämtas värdet för order.shippingAddress.country från dina butiksdata och jämförs med det andra värdet, Stor.

Exempel på ett arbetsflöde som använder börjar inte med logisk operator för att annullera en order om hämtad data inte börjar med strängen United

Om värdet som hämtas från din butik är Kanada är villkoret sant, eftersom strängen Kanada inte inleder strängen Storbritannien. Ordern annulleras.

Slutar med

Slutar med jämför värden för att se om det första värdet slutar med de data som utgör det andra värdet. I följande exempel hämtas värdet för order.lineitems.product.title från dina butiksdata och jämförs med det andra värdet, sista tillgängliga.

Exempel på ett arbetsflöde som använder slutar med logisk operator för att annullera en order om hämtad data slutar med strängen sista tillgängliga

Om värdet som hämtas från din butik är sportsockor sista tillgängliga är villkoret sant, eftersom strängen sportsockor sista tillgängliga slutar med strängen sista tillgängliga. Ordern annulleras.

Slutar inte med

Slutar inte med jämför värden för att se om det första värdet inte slutar med de data som utgör det andra värdet. I följande exempel hämtas värdet för order.lineitems.product.title från dina butiksdata och jämförs med det andra värdet, sista tillgängliga.

Exempel på ett arbetsflöde som använder den logiska operatorn slutar inte med för att annullera en order om hämtad data inte slutar med strängen sista tillgängliga

Om värdet som hämtas från din butik är "sportsockor nya" är villkoret sant, eftersom strängen "sportsockor nya" inte slutar med strängen "sista tillgängliga". Ordern annulleras.

Inga eller tomma operatorer

Tomt eller finns inte

Vissa fält i dina data kan vara tomma. Exempel: order.cancelReason returnerar null om en order inte avbryts. Använd tomt eller finns inte om du vill returnera true när ett fält är tomt eller null och false om det finns.

Inte tomt och finns

Vissa fält i dina data kan vara tomma. Exempel: order.cancelReason returnerar null om en order inte avbryts. Använd Inte tomt och finns om du vill returnera true när ett fält inte är tomt och false när det är tomt.

Listoperatorer

Listoperatorer kombineras med fältnivåoperatorer för att du ska kunna kontrollera villkoren för data som ingår i listor.

Precis som i exemplet med "minst en" kanske du vill kontrollera om en order innehåller en viss 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.

Flow tillhandahåller tre operatorer för att arbeta med listor: minst en av, ingen av och alla.

Minst en av

För de flesta villkor med listor används minst en av. Operatorn returnerar true om någon av artiklarna i listan matchar villkoret. Om du till exempel vill kontrollera om en order innehåller en produkt med en specifik tagg, använder du minst en av. När listan är tom, eller när villkoret inte uppfylls, returnerar villkoret false.

Ingen av

I vissa fall kanske du vill kontrollera om en lista inte innehåller en artikel. Det bästa sättet att skapa detta villkor är att ändra listoperatorn till ingen av. Operatorn returnerar true om ingen av artiklarna i listan matchar villkoret. Om listan är tom returneras även true. Om du till exempel vill kontrollera om en produkt inte innehåller taggen presale, använder du None of product tags is equal to presale.

Alla

I begränsade fall kanske du vill kontrollera om alla artiklar i en lista matchar ett villkor. Du kanske till exempel vill kontrollera om alla artiklar i en order har en specifik produktsäljare med namnet Acme. För detta använder du All of order line items have a product.vendor equal to Acme.

Ordna villkor

Du kan skapa arbetsflöden som har flera villkor, som vart och ett kan resultera i olika åtgärder. Ordningen på villkoren är viktig. Kontrollen av villkoren börjar i början av arbetsflödet och fortsätter systematiskt genom varje villkor. Kontrollen stoppas när ett villkor är uppfyllt.

Kombinera flera kriterier till ett villkor

När du skapar ett villkor kan du ange flera kriterier. Du kan välja hur dessa separata kriterier ska kombineras.

Om alla villkor uppfylls

Om du väljer Om alla villkor är uppfyllda får du svaret "sant" endast om varje kriterium som du ställer in är sant. Det är som en AND-sats i programmering.

Du skapar till exempel ett arbetsflöde för att tagga kunder som befinner sig i Kanada och spenderar mer än 500 USD på en enda order.

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

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

Om något av villkoren uppfylls

Om du väljer Om något av villkoren uppfylls får du svaret "sant" om något av de kriterier du ställer in är sant. Det är som en OR-sats i programmering.

Du skapar till exempel ett arbetsflöde för att tagga ordrar som anses ha hög eller medelhög risk.

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

Arbetsflödet taggar ordern om den har hög eller medelhög risk. Så länge ett av dessa villkor är sant taggas ordern.

Kombinera villkor och åtgärder

Du kan sätta samman villkor för att göra ett stort villkor. När villkoren är sammanslagna måste alla villkor vara uppfyllda för att hela villkoret ska gälla. Om ett villkor inte uppfylls är hela villkoret falskt. I följande exempel måste kunden acceptera marknadsföringsmaterial och det totala priset för ordern måste uppnå ett visst tröskelvärde.

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

På samma sätt kan du kombinera åtgärder så att flera åtgärder kan köras. I följande exempel används flera villkor för att kontrollera om en kund är berättigad till ett lojalitetsprogram baserat på det totala belopp som har spenderats i butiken. I exemplet ovan kontrolleras följande villkor i den ordning som de visas:

  1. Om det totala priset är högre än 1 000 USD och kunden går med på att acceptera marknadsföring, så taggar du dem med Guld-taggen.
  2. Om det totala priset är mindre än 1 000 USD men mer än 500 USD och kunden går med på att acceptera marknadsföring, så taggar du dem med Silver-taggen.
  3. Om kunden har spenderat mer än 200 USD och kunden går med på att acceptera marknadsföring, så taggar du dem med Brons-taggen.

Statiska och dynamiska data i villkor

Vanligtvis är det andra värdet i ett villkor ett statiskt, manuellt angivet värde (till exempel product.title == "your title"). Detta värde 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 </>-symbol. Dynamiska värden hämtas från din butiksdata varje gång arbetsflödet körs. För att använda ett dynamiskt värde klickar du på </>-symbolen och väljer det värde du vill kontrollera mot. Dynamiska värden är inte tillgängliga för alla fält.

Du skapar till exempel 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 RHS-data för att kontrollera att en kunds fakturerings- och leveransland är detsamma.

I det här exemplet hämtas både det första och det andra värdet från din butiksdata istället för att en statisk sträng anges manuellt och kontrolleras mot det andra värdet. Om landet i faktureringsadressen som angavs av kunden är detsamma som landet som kunden angav i leveransadressen är villkoret sant och ordern taggas.

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

Är du redo att börja sälja med Shopify?

Prova gratis