OneSignal은 대규모로 메시지 콘텐츠를 개인화하는 여러 방법을 제공합니다. 이 가이드는 푸시, 이메일 및 SMS용 OneSignal 대시보드에 있는 CSV 업로드 기능을 갖춘 동적 콘텐츠 사용에 중점을 둡니다.
주요 이점:
- CSV를 사용하여 대규모로 개인화 – 하나의 메시지, 모두를 위한 맞춤형 경험
- 다국어 지원 – 사용자별로 자동 언어 전환
- 동적 세그먼테이션 – 사용자 속성(언어, 지역, 캠페인 ID)에 따라 콘텐츠 조정
- 팀 협업 – 비기술 사용자가 CSV 파일에서 콘텐츠 편집
- 크로스 채널 호환성 – 채널 전반에서 CSV 로직 재사용
일반적인 사용 사례:
- 다국어 온보딩 또는 마케팅
- 지역별 프로모션
- 위치별 이벤트 공지
- 캠페인 기반 개인화
CSV를 사용한 동적 콘텐츠 설정 단계
빠른 참조:
- 콘텐츠 변형이 포함된 CSV 파일을 만듭니다.
- Liquid 구문의
dynamic_content 속성을 사용하여 CSV 데이터를 메시지에 매핑합니다.
- OneSignal 대시보드에서 새 메시지 또는 템플릿을 만듭니다.
- 동적 콘텐츠 또는 개인화 버튼을 선택합니다.
- CSV 파일을 업로드하고 메시지를 전송합니다.
CSV 요구 사항 및 설정
- 파일 크기: 200 KB 미만
- 열 헤더:
- 태그 키를 위해 첫 번째 열 헤더를 예약하거나 섹션을 참조하기 위해 비워 둡니다
- 영숫자 문자 및 밑줄만
- 공백 대신 밑줄(
_) 사용
- 인코딩: UTF-8
빈 CSV로 시작하거나 제공된 템플릿을 사용합니다. 메시지 및 템플릿 편집기에서 동적 콘텐츠 또는 개인화 버튼을 선택하면 템플릿이 제공됩니다.
사용 가능한 템플릿:
- 다국어 – 언어별로 콘텐츠 현지화
- 콘텐츠 개인화 – 데이터 태그별로 콘텐츠 사용자 지정
CSV 예제
이 가이드는 다음 CSV 데이터 예제를 사용합니다.
다국어 템플릿 예제
콘텐츠 개인화 템플릿 예제
- 열 헤더를 지원되는 언어 코드에 매핑합니다.
- 각 언어 코드에 대해 각 행에 번역을 추가합니다.
- 여러 섹션(예: 이메일)이 있는 경우 첫 번째 열을 섹션 이름으로 지정합니다.
이 예에서:
- 3개의 언어가 있습니다: 영어, 스페인어, 프랑스어.
- 2개의 섹션이 있습니다: “section_1” 및 “section_2”.
- 첫 번째 열 헤더를 태그 키에 매핑하고 기본 행을 참조하려는 값에 매핑합니다. 사용자에게 태그를 추가하는 방법에 대한 자세한 내용은 태그를 참조하세요.
- 나머지 열 헤더를 개인화하려는 섹션 또는 구성 요소에 매핑합니다.
이 예에서:
- 태그 키:
campaign_id가 있으며 가능한 값은 A와 B입니다.
- 2개의 섹션 또는 구성 요소가 있습니다: “title”, “message”, “url”.
중요: CSV 헤더에서 공백과 영숫자가 아닌 문자를 제거하거나
Liquid에서 해시 표기법을 사용하세요.
CSV 데이터를 메시지 콘텐츠에 매핑
Liquid 구문을 사용하여 dynamic_content 속성을 사용하여 메시지에서 CSV 데이터를 참조합니다:
{{dynamic_content.file_name.message_component[user_property]}}
또는
{{dynamic_content.file_name[user_property].message_component}}
매개변수:
dynamic_content – CSV 데이터를 참조하는 데 사용되는 속성 이름
file_name – CSV 파일 이름(.csv 확장자 제외)
message_component – 개인화하려는 특정 메시지 구성 요소. CSV 열 헤더 또는 첫 번째 행의 정적 텍스트입니다.
user_property – 참조하려는 사용자 속성.
대체 콘텐츠:
CSV 조회 또는 동적 콘텐츠가 실패할 경우 메시지가 렌더링되도록 항상 하드코딩된 문자열 default 대체를 사용하세요.
{{ dynamic_content.my_template.header[user.language] | default: "최신 업데이트에 오신 것을 환영합니다" }}
이것은 CSV 조회 또는 동적 콘텐츠가 실패하면 메시지가 대체 텍스트 "최신 업데이트에 오신 것을 환영합니다"를 렌더링한다는 것을 의미합니다.
이것은 다음을 보장합니다:
- 사용 가능한 경우 동적 콘텐츠가 사용됩니다
- 동적 콘텐츠가 실패하면 하드코딩된 메시지가 나타납니다
- 사용자가 빈 콘텐츠를 받지 않습니다
다국어 메시지 예제
콘텐츠 개인화 메시지 예제
,en,es,fr
section_1,Hello,Hola,Bonjour
section_2,Thanks for shopping with us...,Gracias por comprar con nosotros...,Merci pour votre achat avec nous...
file_name은 translations.csv입니다.
message_component는 첫 번째 열의 행 section_1과 section_2에 있습니다.
user_property는 언어 코드와 일치하는 열 헤더입니다. user.language 속성을 사용하여 사용자에서 이를 참조할 수 있습니다.
{{dynamic_content.translations.section_1[user.language]}}
{{dynamic_content.translations.section_2[user.language]}}
(권장) 기본 대체가 있는 다국어 메시지를 위한 Liquid 구문
{% assign supported_langs = "en,es,fr,de" | split: "," %}
{% assign lang = user.language | default: "en" %}
{% unless supported_langs contains lang %}
{% assign lang = "en" %}
{% endunless %}
{{ dynamic_content.translations.section_1[lang] | default: "Hello" }}
{{ dynamic_content.translations.section_2[lang] | default: "Thanks for shopping with us..." }}
content_personalization_template.csv
campaign_id,title,message,url
campaign_123,Flash deal for you,Tap to claim,https://example.com/flash
campaign_456,Weekend picks are here,See what's trending,https://example.com/weekend
default,Our latest offers,See what's new,https://example.com
file_name은 content_personalization_template.csv입니다.
user_property는 태그 키: campaign_id에 매핑됩니다.
message_component는 개인화하려는 메시지 섹션에 매핑된 열 헤더입니다(title, message 또는 url).
콘텐츠 개인화 메시지를 위한 Liquid 구문
{{ dynamic_content.content_personalization_template[campaign_id].title }}
{{ dynamic_content.content_personalization_template[campaign_id].message }}
{{ dynamic_content.content_personalization_template[campaign_id].url }}
(권장) 기본 대체가 있는 콘텐츠 개인화 메시지를 위한 Liquid 구문
{% assign cid = campaign_id | default: "default" %}
{% unless dynamic_content.content_personalization_template[cid] %}
{% assign cid = "default" %}
{% endunless %}
{{ dynamic_content.content_personalization_template[cid].title | default: "최신 제안" }}
{{ dynamic_content.content_personalization_template[cid].message | default: "새로운 것을 보세요" }}
{{ dynamic_content.content_personalization_template[cid].url | default: "https://example.com" }}
default 대체가 있는 Liquid을 사용하여 제목 줄, 프리헤더, 버튼
레이블 및 URL을 업데이트하세요.
사용 고려 사항
CSV를 사용한 동적 콘텐츠를 테스트하는 방법은?
메시지의 여러 변형을 테스트하려면 이메일 사용을 권장합니다.
- 이메일에서
+ 주소 지정을 사용하여 여러 변형을 테스트할 수 있습니다: username+test@example.com
- 위의 다국어 및 콘텐츠 개인화 예제에 따라 태그를 설정하세요.
- 여러 사용자 및 데이터 태그 업로드에 대한 자세한 내용은 Import를 참조하세요.
CSV를 사용한 동적 콘텐츠와 다른 개인화 옵션을 언제 사용하나요
- 대시보드에서 메시지를 보내고 CSV 파일로 사용자 데이터에 액세스할 수 있는 경우 CSV를 사용한 동적 콘텐츠를 사용하세요.
- 메시지에 동적 콘텐츠를 추가하는 다른 옵션은 메시지 개인화 또는 다국어 메시징 옵션을 참조하세요.
템플릿 업데이트
대시보드를 통해 CSV를 다시 업로드하거나 템플릿 업데이트 API dynamic_content 속성을 사용하세요.
키의 특수 문자
해시 표기법(영숫자가 아닌 키의 경우):
{{ dynamic_content.file_name["!the_row!"]["&the_column&"] }}
점 표기법(표준 키의 경우):
{{ dynamic_content.file_name.the_row.the_column }}
관련 문서