메인 콘텐츠로 건너뛰기
속성(예: 사용자 Tags 및 External ID와 같은 식별자)을 사용하여 Liquid 구문으로 메시지와 전송 페이로드를 개인화하세요. OneSignal은 사용자, 구독, Journey, 메시지, 템플릿, 앱 또는 조직에 이미 저장된 데이터를 사용하여 전송 시점에 Liquid 플레이스홀더를 렌더링합니다. 이 데이터를 사용하여 메시지, Journey 웹훅, Event Streams를 개인화할 수 있습니다.

속성 개인화를 사용하는 시기

OneSignal에 이미 존재하는 데이터(가장 일반적으로 사용자 Tags, External ID, 이메일이나 전화번호와 같은 구독 필드)를 사용하여 전송 시점에 콘텐츠를 렌더링하려면 속성 개인화를 사용하세요. 다음과 같은 경우에 적합합니다:
  • 데이터가 이미 OneSignal에 저장되어 있는 경우
  • 메시지 전송 시 Liquid 플레이스홀더가 자동으로 대체되기를 원하는 경우
  • 전송 시점에 새로운 데이터를 가져오거나 계산할 필요가 없는 경우
전송 시점에 값을 가져오거나 계산해야 하는 경우(예: 실시간 가격이나 재고), Data Feeds 또는 custom_data를 사용하는 API를 사용하세요.사용자가 Journey에 진입하거나 진행하게 만든 이벤트에서 값이 제공되는 경우, Custom Event 개인화를 사용하세요.

채널 지원

각 채널은 특정 속성 유형과 필드를 지원합니다.
다음에서 사용자 및 구독 속성을 지원합니다:
  • 제목, 회신 주소, 프리헤더
  • 메시지 본문
  • HTML 속성(예: <img src="{{ image_url }}" />)
  • 버튼 액션(URL, mailto 등)

속성 개인화 작동 방식

OneSignal은 메시지를 받는 사용자와 구독에 해당하는 속성 값으로 Liquid 플레이스홀더를 대체합니다.
Liquid
Hi {{ first_name | default: "friend" }}!
Congrats on reaching level {{ level | default: "1" }}!
사용자에게 first_name: Jonlevel: 5 Tags가 설정되어 있으면 다음과 같이 표시됩니다:
Text
Hi Jon!
Congrats on reaching level 5!

사용자에게 설정된 Tags가 없으면 대신 기본값이 표시됩니다.

속성 Liquid 객체 참조

이 섹션에서 Liquid에서 사용할 수 있는 정확한 객체와 필드 이름을 확인하세요.

사용자 및 구독 속성

사용자 수준 데이터에는 user를 사용합니다. 이메일 주소나 전화번호와 같은 채널별 값이 필요한 경우 subscription을 사용합니다.
user.tags
사용자의 Tags입니다. 여러 방법으로 Tags를 참조할 수 있습니다:
  • key를 직접 사용하거나 tags 뒤에 키를 배치합니다.
  • 설정된 Tags 예시: first_name: Jon, level: 5
Liquid
Your first name is {{ first_name }}.
Your first name is {{ user.tags.first_name }}.
Your level is {{ level }}.
Your level is {{ user.tags.level }}.
  • for 루프 구문으로 Tags를 반복합니다. 이 예시는 쉼표로 구분된 key:value 쌍을 출력합니다.
Liquid
{% for tag in user.tags %}
{{ tag[0] }}: {{ tag[1] }}
{% unless forloop.last %},
{% endunless %}{% endfor %}
user.external_id
사용자의 External ID입니다.
Liquid
Your user ID is {{ user.external_id }}.
Your user ID is {{ subscription.external_id }}.
user.onesignal_id
사용자의 OneSignal ID입니다.
Liquid
Your OneSignal user ID is {{ user.onesignal_id }}.
subscription.email
메시지를 받는 이메일 구독의 이메일 주소입니다.
Liquid
Thanks for subscribing with email {{ subscription.email }}.
subscription.phone_number
메시지를 받는 SMS 구독의 전화번호입니다.
Liquid
Thanks for subscribing with phone number {{ subscription.phone_number }}.
user.language
사용자의 언어 코드입니다.
Liquid
Preferred language: {{ user.language }}
Preferred language: {{ subscription.language }}
user.subscriptions
사용자의 Subscriptions입니다.
  • for 루프 구문으로 Subscriptions를 반복합니다.
  • 이 예시는 각 구독의 토큰과 ID를 쉼표로 구분하여 출력합니다.
JSON
{
  "subscriptions": "{% for subscription in user.subscriptions %}{% if subscription.subscription_token %}{{ subscription.subscription_token }}: {{ subscription.id }}{% unless forloop.last %}, {% endunless %}{% endif %}{% endfor %}"
}
subscription.unsubscribe_token
토큰으로 이메일 구독 해제 API에 사용되는 토큰입니다.
Unsubscribe: https://your-domain.com/unsubscribe?token={{ subscription.unsubscribe_token }}

Journey 속성

journey 객체를 사용하면 Journey 이름을 참조하거나 Journey의 Custom Event 개인화에 접근할 수 있습니다.
journey.name
Journey의 이름입니다.
JSON
{
  "journey_name": "{{ journey.name }}"
}

메시지 속성

message 객체는 Event Streams에 유용한 메시지 ID, 이름, 템플릿 ID에 대한 접근과 백엔드에서 전송되는 메시지를 개인화하기 위한 custom_data에 대한 접근을 제공합니다.
message.id
OneSignal이 설정한 메시지 ID입니다.
{
  "message_id": "{{ message.id }}"
}
message.name
발신자가 설정한 메시지 이름입니다.
{
  "message_name": "{{ message.name }}"
}
message.template_id
OneSignal이 설정한 템플릿 ID입니다.
{
  "template_id": "{{ message.template_id }}"
}

템플릿 속성

template 객체는 메시지를 보내는 데 사용된 Template의 템플릿 ID와 이름에 대한 접근을 제공합니다. 이는 Event Streams에 유용할 수 있습니다.
template.id
OneSignal이 설정한 템플릿 ID입니다.
{
  "template_id": "{{ template.id }}"
}
template.name
발신자가 설정한 템플릿 이름입니다.
{
  "template_name": "{{ template.name }}"
}

앱 및 조직 속성

apporg 객체는 메시지를 보낸 앱과 조직에 대한 세부 정보를 제공합니다. 이는 Event Streams에 유용할 수 있습니다.
app.id
OneSignal이 설정한 앱 ID입니다.
{
  "app_id": "{{ app.id }}"
}
app.name
앱 소유자가 설정한 앱 이름입니다.
{
  "app_name": "{{ app.name }}"
}
org.id
OneSignal이 설정한 조직 ID입니다.
{
  "org_id": "{{ org.id }}"
}
org.name
조직 소유자가 설정한 조직 이름입니다.
{
  "org_name": "{{ org.name }}"
}

예시: Tags를 사용한 장바구니 이탈

이 예시에서는 사용자 Tags를 사용하여 장바구니 이탈 메시지를 개인화하는 방법을 보여줍니다. 장바구니 이탈 튜토리얼을 기반으로 합니다. 설정된 Tags 예시:
JSON
{
  "cart_updated": "unix_timestamp_seconds",
  "product_image": "https://i.imgur.com/ssPCfbC.png",
  "product_name": "24 Pack of Acorns",
  "product_quantity": "1",
  "product_price": "$12.99",
  "cart_items_count": "4",
  "cart_url": "https://yourdomain.com/cart"
}

이메일 템플릿

1

새 이메일 템플릿 생성

Messages > Templates > New Email Template로 이동하여 드래그 앤 드롭 에디터를 엽니다.
2

레이아웃 구조 추가

5개의 행을 생성합니다:
  • 행 1, 2, 4: Paragraph 블록이 있는 1열
  • 행 3: HTML | Paragraph | Paragraph | Paragraph가 있는 4열
  • 행 5: Button 블록이 있는 1열
3

Paragraph 블록에 Liquid 추가

행 1에 다음을 추가합니다:
Liquid
We're holding onto {{cart_items_count}} items in your cart, but don't wait too long, other squirrels are getting ahead!
행 2에 사용자가 보고 있는 내용에 대한 설명을 추가합니다:
Text
Currently in your cart:
행 4에 추가 CTA를 넣습니다:
Text
Checkout now while supplies last!
4

가장 최근 항목 표시

행 3에서 4개의 열을 구성합니다:열 1 (HTML 블록):
HTML
<img src="{{product_image}}" alt="Image" style="max-width:100%;" />
열 2-4 (텍스트 블록):
  • 열 2: {{product_name}}
  • 열 3: {{product_quantity}}
  • 열 4: {{product_price}}
5

버튼에 장바구니 URL 추가

행 5의 Button 블록에서 액션 URL을 다음으로 설정합니다:
{{cart_url}}
6

템플릿 테스트 및 미리보기

테스트 및 미리보기 버튼을 사용하여 자신에게 테스트 이메일을 보냅니다.
  • 이메일 구독에 Tags가 설정되어 있는지 확인하세요.
7

템플릿 스타일링

성공! 이제 템플릿에 자체 스타일을 적용할 수 있습니다. 드래그 앤 드롭으로 이메일 디자인하기를 참조하세요.

푸시 템플릿

푸시 알림은 공간이 제한되어 있으므로 하나의 항목을 표시하고 총 개수를 언급합니다. 메시지 필드: 조건문을 사용하여 올바른 문법으로 항목과 개수를 표시합니다.
Liquid
{% assign item_count = cart_items_count | plus: 0 %}
{% if item_count == 1 %}
You left {{product_name}} in your cart.
{% endif %}
{% if item_count == 2 %}
You left {{product_name}} and {{item_count | minus: 1}} more item in your cart.
{% endif %}
{% if item_count > 2 %}
You left {{product_name}} and {{item_count | minus: 1}} more items in your cart.
{% endif %}
이미지 필드:
Liquid
{{product_image | default: "https://i.imgur.com/ssPCfbC.png"}}
실행 URL 필드:
{{cart_url | default: "https://yourdomain.com/cart"}}
성공! 이제 더 많은 Templates를 생성하고 장바구니 이탈 Journey에서 사용할 수 있습니다.

관련 페이지

도움이 필요하신가요?지원 팀과 채팅하거나 support@onesignal.com으로 이메일을 보내주세요.다음을 포함해 주세요:
  • 발생한 문제의 세부 정보 및 재현 단계(가능한 경우)
  • OneSignal 앱 ID
  • External ID 또는 Subscription ID(해당하는 경우)
  • OneSignal 대시보드에서 테스트한 메시지의 URL(해당하는 경우)
  • 관련 로그 또는 오류 메시지
기꺼이 도와드리겠습니다!