카탈로그 항목을 커스텀 속성 배열에 매칭
각 사용자가 프로필에 저장된 제품 이름 목록을 보유하고 있을 때, 카탈로그 셀렉션과 Liquid를 사용하여 해당 목록에 포함된 카탈로그 행만 표시할 수 있습니다. 예를 들어, 위시리스트 이메일에 활용할 수 있습니다.
이 예시에 대하여
Flash & Thread는 각 고객이 저장한 제품 이름을 문자열 배열 커스텀 속성(saved_product_names)에 저장합니다. 카탈로그에는 전체 제품 세부 정보(카테고리, 가격, 이미지 URL, 재고)가 들어 있습니다.
카탈로그 선택은 카탈로그 행의 배열 필드를 포함해 카탈로그 열을 정적 값 또는 Liquid 값으로 필터링할 수 있습니다. 하지만 고객 프로필 배열에 저장된 값으로 카탈로그 행을 필터링하지는 않습니다. 사용자 목록을 기반으로 개인화하려면 선택으로 폭넓은 카탈로그 아이템 세트를 반환한 다음, Liquid를 사용해 프로필 배열과 일치하는 행만 남기세요.
이 시나리오는 다음과 같이 진행됩니다.
- 사용자의 배열 커스텀 속성을 Liquid 변수에 할당합니다.
- 사전 필터링된 카탈로그 선택(최대 50개 아이템)에 대해
catalog_selection_items를 호출합니다. 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"]) |
| 카탈로그 | id, category, name, price, inventory, image_url 열이 있는 apparel_products |
| 선택 | 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를 자동으로 생성하려면 개인화 추가 모달(카탈로그 항목 > 선택 사용)을 엽니다. 카탈로그 사용하기를 참조하세요.
3단계: 미리 보기 및 테스트
서로 다른 saved_product_names 값을 가진 프로필로 테스트 메시지를 보냅니다. 일치하는 카탈로그 행만 표시되는지, 그리고 빈 배열일 때 제품 줄이 생성되지 않는지 확인하세요.