Shopify Flow의 조건

조건은 if-then 문의 시작과 같이 특정 규칙이 충족될 경우 워크플로를 계속 진행합니다. 조건을 설정할 때는 GraphQL Admin API의 필드(예: product.title)에서 기준, 논리 연산자(예: 같음), 확인할 값(예: Blue jeans)을 선택합니다. 워크플로가 조건을 평가할 때 Flow는 워크플로에 정의된 값과 스토어에서 반환된 값을 비교하여 그 결과를 워크플로 실행에 표시합니다. 조건을 정의하는 데 사용할 수 있는 필드와 값을 더 잘 이해하려면 스토어 데이터 미리 보기 방법을 알아보십시오.

조건의 기본 사항 이해에 대해 자세히 알아보십시오.

Flow에서 사용되는 데이터 유형

조건을 설정할 때는 Admin API에서 사용 가능한 필드의 기준을 선택하며, Flow는 스토어에서 반환된 값과 비교하여 평가합니다.

Flow는 다음 종류의 데이터를 지원합니다.

  • Float: Float 값은 소수점이 있는 숫자입니다. 예: 4.25.
  • 정수: 정수 값은 소수점이 없는 숫자입니다. 예: 42.
  • 날짜: 날짜 값은 날짜를 숫자로 표현한 것입니다. 예: 01012021.
  • 문자열: 문자열 값은 텍스트입니다. 문자열 값을 사용한 비교는 대/소문자를 구분하지 않습니다.
  • 부울: 부울 값은 참(true) 또는 거짓(false)입니다.
  • 열거형: 열거형 값은 변수가 미리 정의된 상수 집합 중 하나가 될 수 있도록 허용하는 데이터 세트입니다.

논리 연산자

논리 연산자는 조건이 적용되는 방식을 정의합니다. 조건을 통해 주문 총액이 특정 금액을 초과하는지, 고객이 마케팅을 수락하는지 등 간단한 속성을 확인할 수 있습니다. 논리 연산자를 사용하여 더 복잡한 속성을 확인할 수도 있습니다.

연산자는 같음 또는 같지 않음과 같은 필드 수준 연산자이거나, 다음 중 하나 이상 또는 다음 중 없음과 같은 목록 연산자일 수 있습니다.

필드 수준 연산자

필드 수준 연산자는 두 개의 값을 비교하는 데 사용됩니다. Flow에서는 다음 연산자를 사용할 수 있습니다.

Shopify Flow에서 사용 가능한 필드 수준 연산자 목록입니다.
연산자설명예시
같음 값이 동일한지 확인하기 위해 비교합니다. 스토어 데이터에서 order.currentTotalDiscountsSet.shopMoney.amount 값을 가져와 두 번째 값인 50과 비교합니다.

주문의 총 할인이 정확히 50인 경우 조건은 참입니다.
같지 않음 값이 다른지 확인하기 위해 비교합니다. 스토어 데이터에서 order.currentTotalDiscountsSet.shopMoney.amount 값을 가져와 두 번째 값인 50과 비교합니다.

주문의 총 할인이 정확히 50이 아닌 경우 조건은 참입니다.
초과이상 첫 번째 값이 두 번째 값보다 크거나 같은지 확인하기 위해 비교합니다. 스토어 데이터에서 order.currentTotalDiscountsSet.shopMoney.amount 값을 가져와 두 번째 값인 50과 비교합니다.

주문의 총 할인 값이 137인 경우 137은 50보다 크므로 조건은 참입니다.
미만이하 첫 번째 값이 두 번째 값보다 작거나 같은지 확인하기 위해 비교합니다. 스토어 데이터에서 order.currentTotalDiscountsSet.shopMoney.amount 값을 가져와 두 번째 값인 50과 비교합니다.

주문의 총 할인이 47인 경우 47은 50보다 작거나 같으므로 조건은 참입니다.
다음 중 하나 이상 필드가 제공된 목록의 값 중 하나와 같은지 확인합니다. 값은 개별적으로 입력하고 Enter 키를 눌러야 합니다(태그와 유사). 비어 있는 배열에 사용하면 거짓으로 평가됩니다. order.lineitem.product.title 값을 pineapple, guava, kiwi와 비교합니다.

품목의 제품 이름이 guava인 경우 “guava”가 제공한 목록에 포함되어 있으므로 조건은 참입니다.
다음 중 없음 필드가 제공된 목록의 값 중 어느 것과도 같지 않은지 확인합니다. order.lineitem.product.title 값을 pineapple, guava, kiwi와 비교합니다.

품목의 제품 이름이 raspberry인 경우 “raspberry”가 제공한 목록에 포함되어 있지 않으므로 조건은 참입니다.
포함 첫 번째 값에 두 번째 값의 데이터가 포함되어 있는지 확인하기 위해 비교합니다. order.lineitem.product.title의 값은 berry와 비교됩니다.

품목 제품 이름이 strawberry인 경우 “berry”가 “strawberry”에 포함되어 있으므로 조건은 참입니다.
포함하지 않음 첫 번째 값에 두 번째 값의 데이터가 포함되어 있지 않은지 확인하기 위해 비교합니다. order.lineitem.product.title의 값이 berry와 비교됩니다.

품목 제품 이름이 apple인 경우 “apple”에 “berry”가 포함되지 않으므로 조건은 true입니다.
~으로 시작 첫 번째 값이 두 번째 값으로 시작하는지 확인하기 위해 값을 비교합니다. order.shippingAddress.country의 값이 United와 비교됩니다.

주문의 배송 주소 국가가 United Kingdom인 경우 “United Kingdom”이 “United”로 시작하므로 조건은 true입니다.
~으로 시작하지 않음 첫 번째 값이 두 번째 값으로 시작하지 않는지 확인하기 위해 값을 비교합니다. order.shippingAddress.country의 값이 United와 비교됩니다.

주문의 배송 주소 국가가 Canada인 경우 “United Kingdom”이 “Canada”로 시작하지 않으므로 조건은 true입니다.
~으로 끝남 첫 번째 값이 두 번째 값으로 끝나는지 확인하기 위해 값을 비교합니다. order.lineitems.product.title의 값이 pie와 비교됩니다.

품목 제품 이름이 key lime pie인 경우 “key lime pie”가 “pie”로 끝나므로 조건은 true입니다.
~으로 끝나지 않음 첫 번째 값이 두 번째 값으로 끝나지 않는지 확인하기 위해 값을 비교합니다. order.lineitems.product.title의 값이 pie와 비교됩니다.

품목 제품 이름이 chocolate cake인 경우 “chocolate cake”가 “pie”로 끝나지 않으므로 조건은 true입니다.

Null 또는 비어 있음 연산자

Shopify Flow 조건의 Null 및 비어 있음 연산자 목록입니다.
연산자설명참/거짓 조건
비어 있거나 존재하지 않음필드가 비어 있거나(값이 없음) 존재하지 않는지(null) 확인합니다. 필드가 비어 있거나 null인 경우 true를, 존재하는 경우 false를 반환합니다.
비어 있지 않고 존재함필드가 존재하며 비어 있거나 null이 아닌지 확인합니다. 필드가 비어 있지 않고 존재하는 경우 true를, 비어 있는 경우 false를 반환합니다.

목록 연산자

목록 연산자를 필드 수준 연산자와 결합하면 목록에 포함된 데이터의 조건을 확인할 수 있습니다.

“하나 이상” 예시와 같이, 주문에 특정 태그(order.lineItems.product.tags 아래의 목록)가 있는 특정 제품(order.lineItems에 있음)이 포함되어 있는지 확인할 수 있습니다. 두 경우 모두 예시에서는 다음 중 하나 이상 목록 연산자를 사용합니다.

Flow는 목록 작업을 위한 다음 중 하나 이상, 다음 중 없음, 다음 모두의 세 가지 연산자를 제공합니다.

Shopify Flow 조건의 목록 연산자 표입니다.
연산자설명사용 예시
다음 중 하나 이상목록의 항목 중 지정된 조건과 일치하는 항목이 있는지 확인합니다.

목록에 일치하는 항목이 있으면 true를 반환합니다. 목록이 비어 있거나 일치하는 항목이 없으면 false를 반환합니다.
주문 품목의 product.tags 중 하나 이상이 tagname과 같음을 사용하여 주문에 특정 태그가 있는 제품이 포함되어 있는지 확인합니다.
없음목록의 항목 중 지정된 조건과 일치하는 항목이 없는지 확인합니다.

조건과 일치하는 항목이 없으면 true를 반환합니다. 목록이 비어 있으면 true를 반환합니다.
None of product tags is equal to presale를 사용하여 제품에 presale 태그가 없는지 확인합니다.

일반적인 실수는 is not equal to를 사용하여 연산자를 부정하려는 것입니다. 이러한 이중 부정인 None of product tags is not equal to presale를 사용하면 조건을 이해하기 어렵고 유효하지 않게 됩니다.
모두목록의 모든 항목이 지정된 조건과 일치하는지 확인합니다.

목록의 모든 항목이 조건과 일치하면 true를 반환합니다.
모든 주문 품목의 product.vendor가 Acme와 같음을 사용하여 주문에 포함된 모든 품목의 제품 공급업체가 Acme인지 확인하세요.

조건 순서 지정

여러 조건이 있는 워크플로를 생성할 수 있으며, 각 조건에 따라 다른 작업이 발생할 수 있습니다. 조건의 순서가 중요합니다. 조건 확인은 워크플로의 시작 부분에서 시작하여 각 조건을 순서대로 진행합니다. 조건이 충족되면 확인이 중단됩니다.

이 예에서는 여러 조건을 사용하여 고객이 스토어에서 지출한 총액을 기준으로 로열티 프로그램 자격이 있는지 확인합니다. 조건은 표시된 순서대로 확인됩니다.

  1. 총 가격이 $1000를 초과하고 고객이 마케팅 수신에 동의하면 Gold 태그를 지정합니다.
  2. 총 가격이 $1000 미만이지만 $500를 초과하고 고객이 마케팅 수신에 동의하면 Silver 태그를 지정합니다.
  3. 총 가격이 $500 미만이지만 $200를 초과하고 고객이 마케팅 수신에 동의하면 Bronze 태그를 지정합니다.

고객의 총 지출액을 확인하고 태그를 추가하는 워크플로 예시

하나의 조건에 여러 기준 결합

조건을 구성할 때 여러 기준을 설정할 수 있습니다. 이러한 개별 기준을 결합하여 전체 조건이 참인지 거짓인지 결정하는 방법을 선택할 수 있습니다.

모든 기준이 충족되는 경우

AND를 선택하면 설정한 모든 기준이 참인 경우에만 결과가 참이 됩니다.

예를 들어 캐나다에 거주하고 단일 주문에 $500를 초과하여 지출하는 고객에게 태그를 지정하는 워크플로를 생성할 수 있습니다.

and 조건을 사용하는 워크플로의 예시

워크플로는 고객이 캐나다에 거주하고 주문 금액이 $500를 초과하는 경우에만 고객에게 태그를 지정합니다. 이러한 조건 중 하나라도 거짓이면 고객에게 태그가 지정되지 않습니다.

기준 중 하나라도 충족되는 경우

OR을 선택하면 설정한 기준 중 하나라도 true인 경우 true 응답이 반환됩니다.

예를 들어, 위험 권고가 취소 또는 조사인 주문에 태그를 지정하는 워크플로를 생성할 수 있습니다. 해당 조건 중 하나라도 true이면 주문에 태그가 지정됩니다.

or 조건을 사용하는 워크플로의 예시

조건의 정적 및 동적 데이터

일반적으로 조건의 두 번째 값은 수동으로 입력하는 정적 값입니다(예: product.title == "your title"). 이 값은 워크플로가 실행될 때마다 동일하게 유지됩니다.

두 번째 값 필드에 코드 편집 아이콘이 표시되는 경우 동적 값을 사용할 수도 있습니다. 동적 값은 워크플로가 실행될 때마다 스토어 데이터에서 가져옵니다. 동적 값을 사용하려면 코드 편집 아이콘을 클릭하고 비교 확인할 값을 선택합니다. 모든 필드에서 동적 값을 사용할 수 있는 것은 아닙니다.

예를 들어, 주문의 청구 주소에 있는 국가가 배송 주소에 있는 국가와 일치하는 경우 주문에 태그를 지정하는 워크플로를 생성할 수 있습니다.

RHS 데이터를 사용하여 고객의 청구 및 배송 국가가 동일한지 확인하고 주문에 태그를 지정하는 워크플로의 예시

이 예에서는 두 번째 값에 대해 비교 확인할 정적 문자열을 수동으로 지정하는 대신 첫 번째 값과 두 번째 값이 모두 스토어 데이터에서 가져옵니다. 고객이 제공한 청구 주소의 국가가 고객이 제공한 배송 주소의 국가와 동일한 경우 조건은 true가 되고 주문에 태그가 지정됩니다.

경우에 따라 잘못된 유형의 동적 데이터를 사용해야 할 수도 있습니다. 예를 들어, 문자열로 저장된 숫자를 다른 숫자와 비교해야 할 수 있습니다. 이 경우 코드 실행 옵션을 사용하여 데이터를 올바른 유형으로 전환할 수 있습니다.

템플릿

템플릿 라이브러리의 대부분의 템플릿에는 조건이 포함되어 있습니다.

조건 예시

목록의 품목 중 하나 이상이 조건과 일치하는지 확인

이 예시는 목록의 품목 중 하나 이상이 특정 값과 일치하는지 확인하는 일반적인 조건을 보여줍니다.

이 경우 조건은 주문의 제품 중 하나에 presale 태그가 있는지 확인합니다. 이 조건을 작성하려면 order / lineItems / product / tags를 선택합니다. 기본적으로 Flow는 논리 연산자로 at least one of를 선택합니다.

제품 태그가 하나 이상 있는지 확인하는 것을 표시하는 조건 구성 패널의 예시

at least one of 부분은 목록 연산자이며 여러 목록 품목 간의 일치를 처리하는 데 사용됩니다. is equal to 부분은 단일 목록 품목이 일치하는지 여부를 결정하는 필드 수준 연산자입니다.

목록의 품목 중 조건과 일치하는 것이 없는지 확인

이 예시는 목록의 품목 중 특정 값과 일치하는 것이 없는지 확인하는 일반적인 조건을 보여줍니다. 고려해야 할 한 가지 일반적인 문제는 목록이 비어 있을 수 있다는 점입니다. 목록이 비어 있으면 조건은 목록 연산자(이 경우 none of)에 의해 처리됩니다.

이 경우 조건은 제품 태그 중 foo와 동일한 것이 없는지 확인합니다.

제품 태그가 없는지 확인하는 것을 표시하는 조건 구성 패널의 예시

(1) 제품 태그가 없거나 (2) foo인 태그가 없는 경우 조건은 true를 반환합니다. 그렇지 않으면 false를 반환합니다.

목록의 품목이 여러 기준과 일치하는지 확인

이 예시는 목록의 품목 중 하나 이상이 두 개의 개별 기준과 일치하는지 확인하는 일반적인 조건을 보여줍니다.

이 경우 조건은 주문의 제품 중 하나에 presale 태그가 있고 productType이 clothing인지 확인합니다.

제품 태그가 하나 이상 있고 productType이 있는지 확인하는 것을 표시하는 조건 구성 패널의 예시

이 조건을 작성하려면 다음을 수행해야 합니다.

  1. 첫 번째 기준으로 order / lineItems / product / tags를 선택합니다.
  2. lineItems 목록에서 동일 품목에 대한 기준 추가를 선택합니다. 참고: 여기서 잘못된 목록 품목을 선택하는 것은 흔히 발생하는 실수입니다.
  3. 최상위 개체로 lineItems_item을 선택한 다음 두 번째 기준으로 product / productType`을 선택합니다. 참고: 여기서 잘못된 개체를 선택하는 것 또한 흔히 발생하는 실수입니다.
  4. AND를 선택하여 두 기준을 결합합니다.
  5. 두 기준에 대해 값 presaleclothing을 입력합니다.