Braze를 활용한 개인화 메시지 발송
푸시·이메일 등을 고객에게 보내본 적 있는 마케터라면 그 개봉률이 과거에 비해 떨어진다는 것에 공감할 것이다. 고객은 넘쳐흐르는 브랜드의 각종 광고 메시지에 점점 피로도가 높아지는데, 그중 우리 브랜드의 메시지가 고객의 눈길을 끌려면 고객과 관련된 내용을 메시지에 담아 흥미롭게 만들어야 한다. 개인화된 메시지가 중요하다는 이야기가 계속해서 나오는 것도 같은 맥락에서다.
하지만 타겟을 세분화하고, 타겟 별로 메시지를 고민하고, 이 모든 메시지 케이스를 하나씩 셋팅할 시간은 너무나도 부족하다. 결국 타겟이 누구든 ‘00% 할인!’이라는 메시지를 반복해서 발송하는 것이 현실이다. 그럼에도 불구하고 방법은 있으니, 바로 마케팅 자동화 솔루션을 사용해 개인화 메시지를 자동 발송하는 것이다. 이를 통해 마케터는 효율적으로 맞춤형 메시지를 보낼 수 있어 행복하고, 고객은 천편일률적인 메시지가 아닌 자신의 상황에 맞는 메시지를 받을 수 있어 행복하지 않을까 싶다.
* 이 방법은 마케팅 자동화 솔루션인 Braze의 User Attributes와 마크업 언어 Liquid를 활용한다. 아직 자동화 솔루션을 사용하지 않는다면 도입을 검토하는데 참고가 되었으면 한다.
쏘카도 서비스 런칭 초기에는 앱 푸시를 담당자가 고객 별로 일일이 보내느라 몇 시간을 허비하고, 예약 발송을 하지 못하는 등 어려움을 겪었다. 그러나 지금은 급한 푸시 발송 요청이 들어와도 30분이면 작업을 끝내고 다른 업무에 더 집중할 수 있다. 이 변화는 위에서도 언급한 마케팅 자동화 솔루션 브레이즈(Braze)를 도입하며 시작되었다. 전 세계적으로 많은 브랜드에서 사용하고 있는 브레이즈는 인앱 메시지, 푸시, 이메일, SMS, 카카오 친구톡·알림톡 등 멀티채널 플랫폼으로 개인화된 메시지를 보낼 수 있는 서비스이다.
쏘카는 작년 말, 누적 주행거리에 따라 레벨이 올라가는 새로운 멤버십 '쏘카클럽'을 런칭했다. 이제 막 탄생한 멤버십인 만큼 인지도를 높이기 위해 다양한 고객 커뮤니케이션을 시도하고 있는데, 즉각적인 리텐션을 목적으로 하지 않았기 때문에, 할인 강조 메시지보다는 회원들에게 각 레벨마다 효과적으로 기능할 수 있는 메시지를 노출해야 한다고 생각했다.
000 회원이 쏘카와 함께 달린 거리는 몇 km이고 이 거리는 어떤 의미가 있을까?
레벨업을 하기 위해 1,000km를 더 달려야 하는 회원에게 ‘1,000km 더 달리면 레벨업!’이라는 메시지를 노출하면 너무 막연하지 않을까?
이런 고민들을 거쳐 쏘카클럽의 커뮤니케이션은 각 레벨에 속한 회원마다 다른 메시지를 전달하고 있으며, 메시지에 대한 고민은 지금도 진행 중이다.
쏘카클럽의 레벨은 총 8개(레벨1~7과 VIP)다. 레벨업 시점마다 앱 푸시를 하나씩만 보내도 셋팅해야 하는 메시지는 7종이며, 커뮤니케이션 채널을 1개 추가하면 메시지의 종류는 14종으로 늘어난다. 더 나아가 A/B테스트를 진행한다면 20종이 넘는 메시지 케이스가 필요할 수도 있다. 고객 커뮤니케이션 한 번을 위해 이렇게 많은 공수가 들어간다면, 담당자의 의지와는 상관없이 타겟 별로 메시지를 배리에이션하기 두려워진다. 과하게 필요한 노력은 줄이는 게 맞다. 그렇다면 어떻게 이 수많은 메시지 종류를 자동화해서 발송할 수 있을까?
브레이즈로 개인화 메시지를 보내고 싶다면 User attributes와 Event Properties만 이해해도 대부분 구현할 수 있고, 더 응용하고 싶다면 Liquid를 쓰면 된다. Liquid란 글로벌 e커머스인 Shopify에서 사용하고 있는 마크업 언어로, tag를 써서 메시지에 logic(논리 구조)을 만들거나 어떤 메시지를 보여줄지 filter로 조정하는 것 등을 할 수 있다.
예를 들어 고객의 이름은 메시지에 {{${first_name}}}이라는 attribute를 넣으면 되고, 이름이 없는 회원이 있다면 이름 유무에 따라 Liquid로 다른 메시지를 보여줄 수 있다.(이름이 있으면 ‘OOO님’ 이름이 없으면 ‘고객님’이라고 노출되도록!)
또한, 고객 행동에 기반해 발송 방식을 ‘Action-Based Delivery’로 선택하고 Custom Event Properties를 변수로 활용하는 방법도 있다. 이를 통해 쏘카 차량 반납 후 반납 결과를 알려주는 이메일 자동 발송 같은 것들이 가능하다.
이 글에서는 개인화 메시지를 보내기 위한 기본 바탕이 되는 Custom attributes와 Liquid에 대해 소개하려 한다. 이 내용을 이해한 후에 Braze User Guide나 Shopify developers 문서를 참고한다면, 더 복잡한 Liquid나 Custom Event Properties 활용까지 쉽게 할 수 있을 것이다.
Liquid는 {% %}로 코드를 감싸 명령을 내릴 수 있다. 그중 if문의 형태로 조건에 따라 다른 메시지가 나가도록 작성하면, 위에서 봤던 문어발 같은 Canvas step을 1개로 줄일 수 있게 되는 것이다.
1. 조건이 2개 이하인 경우
2. 조건이 3개 이상인 경우
참고로 elsif의 원래 영어 문법은 else if 지만 여기서는 e가 빠진 elsif가 쓰인다.(이것 때문에 계속 변수가 작동하지 않아 고생했던 기억이 있다.)
또한 user attributes의 data type도 확인해야 한다. 숫자라면 대부분 문제가 없지만, 문자 형식(예: varchar)이라면 ‘’ 따옴표를 꼭 붙여줘야 한다.
예시: {% if {{custom_attribute.${club_level}}} == ‘1’ %}레벨1입니다
조건문에 사용하고 싶은 Custom attributes가 없다면 개발 연동을 하면 된다. 하지만 이를 위해 “개발 요청을 하자!”라고 쉽게 말할 수 있는 실무자는 거의 없을 것이다.
쏘카클럽을 예로 들면 회원의 레벨과 누적 주행거리는 변수로 갖고 있지만, 다음 레벨 달성에 필요한 주행거리 값은 없었다. 꿩 대신 닭이라고, 이를 위해서는 Liquid로 속성값을 계산해서 직접 변수를 만들면 된다.
자신이 직접 Liquid statement를 작성했음에도 다음날 보면 기억이 가물가물할 수 있다. 그런데 우리는 썼던 메시지를 다른 데 또 쓰기도 하고, 혹여라도 이슈가 생긴다면 언제든 빠르게 수정할 수 있어야 한다. 그때마다 이를 처음부터 다시 쓸 시간은 없으므로 자주 쓰는 메시지는 미리 변수로 작성해두면 편하다.
예를 들어 쏘카클럽의 혜택은 각 레벨마다 ‘지금 받고 있는 혜택’과 ‘레벨업 시 받는 혜택’을 합해 약 20개 정도이다. 이 변수는 레벨업 알림 외에도 각 레벨별 커뮤니케이션에 자주 활용되며, 혜택이 변경될 가능성도 있어 전부 다 liquid로 변수 지정을 했다. 이렇게 작성한 Liquid statement를 복사 붙여넣기 하면 언제든지 레벨 맞춤형 메시지를 쉽게 쓰고 수정할 수 있다.
1. 조건만 정하고 문구는 직접 쓰는 경우
2. 조건+문구까지 assign 하는 경우
결과적으로 Liquid를 활용해 수십 가지의 메시지를 1~2개의 Canvas step으로 셋팅하고, 이메일의 경우 레벨마다 만들어야 했던 html과 이미지를 1벌만 작업하면 되도록 업무 효율이 개선되었다.
Liquid를 적용한 레벨업 알림 이메일은 대조군 대비 발송 당일 앱 접속 전환율이 약 9.4% 더 높았으며, 레벨에 따라 반응도 다르다는 것을 확인할 수 있었다. 이런 다양한 테스트와 리뷰를 반복하는 것이 수준 높은 개인화 메시지를 만드는 첫 단추가 될 것이라 생각한다.
이렇게 자동화를 도입하면 무언가를 실행하는 데 손이 많이 간다는 부담이 사라진다. 또한 더 다양한 메시지 구성에 대한 가능성이 열리면 생각의 범위도 자연스레 넓어진다. 만약 캠페인의 기획보다 실행 방법을 고민하는데 더 많은 시간을 쓰고 있는 담당자라면, 자동화를 통해 그 부담을 조금이나마 덜고 고민할 시간을 벌었으면 하는 마음이다.
참고자료
Braze User Guide - Conditional Messaging Logic
Shopify developers - Liquid Basics
Written by. CRM팀 유수
이용자와 쏘카가 친밀해지는 경험을 만듭니다.