Skip to content

지원되는 개인화 태그

이 참조 문서에서는 지원되는 Liquid 개인화 태그의 전체 목록을 다룹니다.

지원되는 태그 요약

편의를 위해 지원되는 개인화 태그의 요약을 제공합니다. 각 태그 유형과 모범 사례에 대한 자세한 내용은 계속 읽어보세요.

지원되는 속성

캠페인, 카드, 캔버스 속성은 해당하는 메시징 템플릿에서만 지원됩니다(예: dispatch_id는 인앱 메시지 캠페인에서 사용할 수 없습니다).

Braze에서 소스에 따라 이러한 속성 중 일부가 어떻게 다른지 자세히 알아보려면 이 도움말 문서를 참조하세요.

캔버스와 캠페인 태그 차이점

다음 태그의 동작은 캔버스와 캠페인 간에 다릅니다:

  • dispatch_id 동작이 다릅니다. Braze는 캔버스 단계를 트리거된 이벤트로 처리하기 때문입니다. “스케줄”된 경우에도 마찬가지입니다(진입 단계는 스케줄할 수 있으므로 제외). 자세한 내용은 Dispatch ID 동작을 참조하세요.
  • 캔버스에서 {{campaign.${name}}} 태그를 사용하면 캔버스 구성요소 이름이 표시됩니다. 캠페인에서 이 태그를 사용하면 캠페인 이름이 표시됩니다.

가장 최근에 사용한 기기 정보

모든 플랫폼에서 사용자의 가장 최근 기기에 대해 다음 속성을 템플릿으로 사용할 수 있습니다. 사용자가 애플리케이션을 사용한 적이 없는 경우(예: REST API를 통해 사용자를 가져온 경우), 이 값은 모두 null입니다.

기기 통신사, 모델명, 운영체제의 범위가 매우 넓기 때문에, 이러한 값에 조건부로 의존하는 Liquid를 철저히 테스트하는 것을 권장합니다. 특정 기기에서 사용할 수 없는 경우 이 값은 null입니다.

타겟 앱 정보

인앱 메시지의 경우, Liquid 내에서 다음 앱 속성을 사용할 수 있습니다. 값은 앱이 메시징을 요청하는 데 사용하는 SDK API 키를 기반으로 합니다.

예를 들어, 이 Liquid 코드는 요청하는 앱이 목록에 있는 두 개의 API 키 중 하나가 아닌 경우 메시지를 중단합니다:

1
2
3
4
5
6
{% assign allowed_api_keys = 'sdk_api_key_1,sdk_api_key_2' | split: ',' %}
{% if allowed_api_keys contains {{app.${api_id}}} %}
User is in list of apps
{% else %}
{% abort_message("User not in list of apps") %}
{% endif %}

타겟 기기 정보

푸시 알림, 인앱 메시지, 배너의 경우, 메시지를 수신하는 기기에 대해 다음 속성을 템플릿으로 사용할 수 있습니다. 푸시 알림, 인앱 메시지 또는 배너에는 사용자가 메시지를 읽는 기기의 속성이 포함될 수 있습니다. 이러한 속성은 콘텐츠 카드나 이메일에서는 작동하지 않습니다. 이메일의 경우, 메시지는 발송 전에 렌더링되므로 사용자가 이메일을 여는 기기는 그 시점에 알 수 없습니다.

기기 통신사, 모델명, 운영체제의 범위가 매우 넓기 때문에, 이러한 값에 조건부로 의존하는 로직을 철저히 테스트하는 것을 권장합니다. 특정 기기에서 사용할 수 없는 경우 이 값은 null입니다.

또한 푸시 알림의 경우, 푸시 토큰이 API를 통해 가져온 경우와 같은 특정 상황에서 Braze가 푸시 알림에 연결된 기기를 식별하지 못할 수 있으며, 이로 인해 해당 메시지의 값이 null이 될 수 있습니다.

푸시 메시지에서 이름 변수를 사용할 때 기본값으로 "there"를 사용하는 예시.

기본값 대신 조건 로직 사용

경우에 따라 기본값을 설정하는 대신 조건 로직을 사용할 수 있습니다. 조건 로직을 사용하면 커스텀 속성의 값에 따라 다른 메시지를 보낼 수 있습니다. 또한 조건 로직을 사용하여 null 또는 빈 속성 값을 가진 고객에게 메시지를 중단할 수 있습니다.

사용 사례

예를 들어, 고객에게 리워드 잔액 알림을 보내고 있다고 가정해 보겠습니다. 기본값을 사용하여 잔액이 낮거나 null인 고객을 적절히 처리하기 어렵습니다.

이 경우 기본값을 설정하는 것보다 더 나은 두 가지 옵션이 있습니다:

  1. 잔액이 낮거나 null이거나 빈 고객에 대해 메시지를 중단합니다.

    1
    2
    3
    4
    5
    
    {% if {{custom_attribute.${balance}}} > 0 %}
    Your rewards balance is {{custom_attribute.${balance}}}
    {% else %}
    {% abort_message() %}
    {% endif %}
    
  2. 이러한 고객에게 완전히 다른 메시지를 보냅니다. 예를 들어:

    1
    2
    3
    4
    5
    
    {% if ${first_name} != blank and ${first_name} != null %}
    Hello {{${first_name} | default: 'there'}}, thanks for downloading!
    {% else %}
    Thanks for downloading!
    {% endif %}
    

이 사용 사례에서 이름이 빈 값이거나 null인 사용자는 “Thanks for downloading!” 메시지를 받습니다. 실수가 발생했을 때 고객에게 Liquid가 그대로 표시되지 않도록 이름에 기본값을 포함하는 것을 권장합니다.

변수 태그

assign 태그를 사용하여 메시지 작성기에서 변수를 생성할 수 있습니다. 변수에 고유한 이름을 사용하는 것을 권장합니다. 지원되는 개인화 태그와 유사한 이름(예: language)으로 변수를 생성하면 메시징 로직에 영향을 줄 수 있습니다.

변수를 생성한 후에는 메시징 로직이나 메시지에서 해당 변수를 참조할 수 있습니다. 이 태그는 연결된 콘텐츠 기능에서 반환된 콘텐츠를 다시 포맷하려는 경우에 유용합니다. Shopify의 변수 태그 설명서에서 자세한 내용을 확인할 수 있습니다.

사용 사례

고객이 100 리워드 포인트를 적립한 후 리워드 포인트를 상품으로 교환할 수 있도록 허용한다고 가정해 보겠습니다. 따라서 추가 구매를 했을 때 포인트 잔액이 100 이상이 되는 고객에게만 메시지를 보내려고 합니다:

1
2
3
4
5
6
{% assign new_points_balance = {{custom_attribute.${current_rewards_balance} | plus: 50}} %}
{% if new_points_balance >= 100 %}
Make a purchase to bring your rewards points to {{new_points_balance}} and cash in today!
{% else %}
{% abort_message('not enough points') %}
{% endif %}

반복 태그

반복 태그를 사용하여 코드 블록을 반복적으로 실행할 수 있습니다. 아래 사용 사례에서는 for 태그를 사용합니다.

사용 사례

Nike 운동화 세일을 진행 중이고 Nike에 관심을 표현한 고객에게 메시지를 보내려고 한다고 가정해 보겠습니다. 각 고객의 프로필에 조회한 제품 브랜드 배열이 있습니다. 이 배열에는 최대 25개의 제품 브랜드가 포함될 수 있지만, 가장 최근 5개의 제품 조회 중 Nike 제품을 조회한 고객에게만 메시지를 보내려고 합니다.

1
2
3
4
5
6
7
8
9
10
{% for items in {{custom_attribute.${Brands Viewed}}} limit:5 %}
{% if {{items}} contains 'Converse' %}
{% assign converse_viewer = true %}
{% endif %}
{% endfor %}
{% if converse_viewer == true %}
Sale on Converse!
{% else %}
{% abort_message() %}
{% endif %}

이 사용 사례에서는 운동화 브랜드 조회 배열의 처음 5개 항목을 확인합니다. 해당 항목 중 하나가 converse이면 converse_viewer 변수를 생성하고 true로 설정합니다.

그런 다음 converse_viewer가 true일 때 세일 메시지를 보냅니다. 그렇지 않으면 메시지를 중단합니다.

이것은 Braze 메시지 작성기에서 반복 태그를 사용하는 간단한 예시입니다. Shopify의 반복 태그 설명서에서 자세한 정보를 확인할 수 있습니다.

구문 태그

구문 태그를 사용하여 Liquid가 렌더링되는 방식을 제어할 수 있습니다. echo 태그를 사용하여 표현식을 반환할 수 있습니다. 이는 중괄호로 표현식을 감싸는 것과 동일하지만, Liquid 태그 내에서 이 태그를 사용할 수 있습니다. 또한 liquid 태그를 사용하여 각 태그에 구분자 없이 Liquid 블록을 작성할 수 있습니다. liquid 태그를 사용할 때 각 태그는 자체 줄에 있어야 합니다. 자세한 정보와 예시는 Shopify의 구문 태그 설명서를 확인하세요.

공백 제어를 사용하면 태그 주변의 공백을 제거하여 Liquid 출력의 모양을 더 세밀하게 제어할 수 있습니다.

HTTP 상태 코드

연결된 콘텐츠 호출의 HTTP 상태를 먼저 로컬 변수로 저장한 다음 __http_status_code__ 키를 사용하여 활용할 수 있습니다. 예를 들어:

1
2
3
4
{% connected_content https://example.com/api/endpoint :save connected %}
{% if connected.__http_status_code__ != 200 %}
{% abort_message('Connected Content returned a non-200 status code') %}
{% endif %}

언어, 최근 로케일, 시간대에 따라 메시지 보내기

경우에 따라 특정 로케일에 맞는 메시지를 보내고 싶을 수 있습니다. 예를 들어, 브라질 포르투갈어는 일반적으로 유럽 포르투갈어와 다릅니다.

사용 사례: 최근 로케일에 따라 현지화

다음은 가장 최근 로케일을 사용하여 국제화된 메시지를 추가로 현지화하는 방법에 대한 사용 사례입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{% if ${language} == 'en' %}
Message in English
{% elsif  ${language} == 'fr' %}
Message in French
{% elsif  ${language} == 'ja' %}
Message in Japanese
{% elsif  ${language} == 'ko' %}
Message in Korean
{% elsif  ${language} == 'ru' %}
Message in Russian
{% elsif ${most_recent_locale} == 'pt_BR' %}
Message in Brazilian Portuguese
{% elsif ${most_recent_locale} == 'pt_PT' %}
Message in European Portuguese
{% elsif  ${language} == 'pt' %}
Message in default Portuguese
{% else %}
Message in default language
{% endif %}

이 사용 사례에서 가장 최근 로케일이 pt_BR인 고객은 브라질 포르투갈어로 메시지를 받고, 가장 최근 로케일이 pt_PT인 고객은 유럽 포르투갈어로 메시지를 받습니다. 처음 두 조건을 충족하지 않지만 언어가 포르투갈어로 설정된 고객은 기본 포르투갈어 유형으로 설정한 메시지를 받습니다.

사용 사례: 시간대별 사용자 타겟팅

시간대별로 사용자를 타겟팅할 수도 있습니다. 예를 들어, EST에 있는 사용자에게는 하나의 메시지를, PST에 있는 사용자에게는 다른 메시지를 보냅니다. 이를 위해 현재 시간을 UTC로 저장하고, 사용자의 현재 시간과 if/else 문을 비교하여 올바른 시간대에 맞는 올바른 메시지를 보냅니다. 사용자에게 적절한 시간에 캠페인을 전달하기 위해 사용자의 현지 시간대로 캠페인을 발송하도록 설정해야 합니다.

다음 사용 사례에서는 오후 2시에서 3시 사이에 전달되는 메시지를 각 시간대별로 특정 메시지와 함께 작성하는 방법을 확인하세요.

1
2
3
4
5
6
7
8
{% assign hour_in_utc = 'now' | date: '%H' | plus:0 %}
{% if hour_in_utc >= 19 && hour_in_utc < 20 %}
It is between 2:00:00 pm and 2:59:59 pm ET!
{% elsif hour_in_utc >= 22 && hour_in_utc < 23 %}
It is between 2:00:00 pm and 2:59:59 pm PT!
{% else %}
{% abort_message %}
{% endif %}

랜덤 숫자로 메시지 보내기

{% random %} 태그는 랜덤 숫자를 반환합니다. A/B 스타일 로직, 샘플링 또는 메시지 콘텐츠 변형에 사용할 수 있습니다.

사용 사례: 사용자에게 랜덤 배리언트 보내기

1
2
3
4
5
6
7
{% capture roll_str %}{% random %}{% endcapture %}
{% assign roll = roll_str | plus: 0 %}
{% if roll < 0.5 %}
Show variant A
{% else %}
Show variant B
{% endif %}

eCommerce 장바구니 태그

shopping_cart 태그는 eCommerce 유기한 장바구니유기한 결제 eCommerce 캔버스 사용 사례에서 사용자의 장바구니 내용에 접근합니다. CART_ID를 실제 장바구니 ID 값(예: {{context.${cart_id}}})으로 교체하세요.

1
{% shopping_cart CART_ID :abort_if_not_abandoned false %}

이 예시의 abort_if_not_abandoned 매개변수는 ecommerce.checkout_started 이벤트와 함께 사용할 때 유기한 결제 사용 사례에만 적용됩니다. 유기한 장바구니 사용 사례에는 적용되지 않습니다. 자세한 내용은 abort_if_not_abandoned를 참조하세요.

New Stuff!