카탈로그 항목을 커스텀 속성 배열에 매칭
각 사용자가 프로필에 저장된 제품 이름 목록을 보유하고 있을 때, 카탈로그 셀렉션과 Liquid를 사용하여 해당 목록에 포함된 카탈로그 행만 표시할 수 있습니다. 예를 들어, 위시리스트 이메일에 활용할 수 있습니다.
이 예제에 대해
Flash & Thread는 각 고객의 저장된 제품 이름을 문자열 배열 커스텀 속성(saved_product_names)에 저장합니다. 카탈로그에는 전체 제품 상세 정보(카테고리, 가격, 이미지 URL, 재고)가 포함되어 있습니다.
카탈로그 셀렉션은 카탈로그 열을 정적 값이나 Liquid 값(카탈로그 행의 배열 필드 포함)과 비교하여 필터링할 수 있습니다. 하지만 고객 프로필 배열에 저장된 값을 기준으로 카탈로그 행을 필터링하지는 않습니다. 사용자의 목록에서 개인화하려면, 셀렉션을 사용하여 광범위한 카탈로그 항목 집합을 반환한 다음, Liquid를 사용하여 프로필 배열과 일치하는 행만 유지합니다.
이 패턴은 다음과 같습니다:
- 사용자의 배열 커스텀 속성을 Liquid 변수에 할당합니다.
- 사전 필터링된 카탈로그 셀렉션에 대해
catalog_selection_items를 호출합니다(최대 50개 항목). items를 순회하며contains를 사용하여 각 카탈로그 필드(예:name또는id)를 배열과 비교합니다.

이 패턴은 셀렉션의 결과 집합(최대 50개 카탈로그 행)이 각 사용자의 저장된 항목을 포함할 수 있는 경우에만 작동합니다. 예를 들어, 소규모 카탈로그이거나, 필터가 셀렉션을 충분히 좁혀서 일반적인 목록을 커버할 수 있는 카탈로그가 해당됩니다. 사용자의 저장된 항목이 반환된 50개 행에 포함되지 않으면, 루프에서 일치 항목을 찾지 못하고 해당 항목에 대해 메시지가 아무것도 렌더링하지 않습니다. 셀렉션이 사용자의 프로필 배열과 비교할 수 없기 때문에, 일반적인 경우에는 이를 해결할 수 있는 필터가 없습니다.
고려 사항
- 고객에게 발송하기 전에 스테이징 워크스페이스에서 Liquid 및 카탈로그 데이터를 테스트하세요.
- 선택 결과는 최대 50개의 카탈로그 행을 반환하므로, 각 사용자의 저장된 항목이 해당 결과 집합 내에 포함되도록 필터(예: 재고 있음, 활성 카테고리, 가격대)를 추가하세요.
- 이 예제에서는 고객 프로필의 문자열 배열을 사용합니다.
- 객체 배열의 경우, 각 객체 내부의 속성정보(예:
product_id)를 기준으로 매칭하고contains검사를 조정하거나 객체에 대해for루프를 사용하세요. 객체 배열을 참조하세요. contains동작은 속성 유형에 따라 다릅니다. 배열의 경우==대신contains를 사용하세요. 조건 로직을 참조하세요.- 제품 이름이 변경되거나 중복될 수 있으므로 안정적인 식별자(예: 카탈로그
id)를 기준으로 매칭하세요. - 이 문서의 Liquid 스니펫은 예제입니다. 채널(이메일 HTML, 푸시 등)에서 렌더링을 검증하세요.
설정
이 예시에서는 다음을 전제로 합니다:
| 에셋 | 세부 사항 |
|---|---|
| 커스텀 속성 | saved_product_names — 문자열 배열 (예: ["linen_shirt", "trail_jacket", "canvas_tote"]) |
| 카탈로그 | apparel_products — id, category, name, price, inventory, image_url 열 포함 |
| 셀렉션 | apparel_products의 in_stock_apparel, 결과 한도 50, 관련 없는 행을 제외하는 필터 포함 (예: inventory가 0보다 큰 경우) |
1단계: 카탈로그 및 셀렉션 만들기
apparel_products라는 카탈로그에 제품 행을 가져오거나 동기화합니다.- 50개 항목 한도 내에서 필요한 만큼의 관련 행을 반환하는 셀렉션(예:
in_stock_apparel)을 만듭니다. - 메시지에 표시하지 않을 행(재고 없음, 잘못된 카테고리 등)을 제외하는 셀렉션 필터를 추가합니다.
셀렉션 설정 방법은 셀렉션을 참조하세요.
2단계: 메시지에 Liquid 추가하기
프로필 배열을 할당하고, 셀렉션을 로드한 다음, contains를 사용하여 반복합니다:
{% assign saved_product_names = custom_attribute.${saved_product_names} %}
{% catalog_selection_items apparel_products in_stock_apparel %}
{% for item in items %}
{% if saved_product_names contains item.name %}
Product: {{ item.name }}
Category: {{ item.category }}
Price: ${{ item.price }}
Image: {{ item.image_url }}
{% endif %}
{% endfor %}
배열에 표시 이름 대신 ID를 저장하는 경우 item.name을 item.id(또는 다른 열)로 교체합니다. 채널에 맞게 필드 사이에 간격이나 HTML을 추가하세요. ${{ item.price }}에서 $는 Liquid 출력 앞에 출력되는 리터럴 통화 기호이며, Braze의 ${} 개인화 구문의 일부가 아닙니다.
이 Liquid를 자동으로 생성하려면 개인화 추가 Modal(Catalog Items > Use a selection)을 여세요. 카탈로그 사용하기를 참조하세요.
3단계: 미리보기 및 테스트
다양한 saved_product_names 값을 가진 프로필로 테스트 메시지를 보냅니다. 일치하는 카탈로그 행만 표시되는지, 그리고 빈 배열일 경우 제품 라인이 표시되지 않는지 확인합니다.