Popular

Recommend

Recent

recent_thumbnail
GROWTH

퍼포먼스 마케팅이란?

September 9, 2024

전 보통 평일 아침에 운동을 하는데, 끝나고 나면 다른 멤버분들과 이야기를 나누게 됩니다. 아무래도 출근 시간이다보니 스몰톡이 직업 쪽으로 흘러갔습니다. [마케팅]을 하고 계신다고 하시더라고요.

반가운 마음에 전 그로스마케팅을 한다 말해더니 모르는 눈치십니다. [퍼포먼스마케팅]을 하시는 거냐 물었더니 그렇다고 합니다. 어떤 매체를 주로 운영하시냐 했더니 말끝을 흐리십니다.

얘기해보니 그 분의 업무는 <인스타그램 계정 육성> 이었습니다. 특정 부문의 콘텐츠만 게재하는 다수의 계정을 생성해서 ~N만의 팔로워를 가진 계정으로 키우고 광고를 받으며 수익화를 하는죠. 즉 [SNS마케팅]이자 [콘텐츠마케팅]이자 [인플루언서 마케팅]입니다. 저 또한 헷갈렸습니다. 이 또한 퍼포먼스 마케팅일까...?


퍼포먼스 마케팅이란? 정의와 뜻

퍼포먼스 마케팅이란 성과를 측정할 수 있는 마케팅

퍼포먼스는 마케팅은 퍼포먼스(Performance)의 실적, 성과라는 뜻에서 파생됩니다. 즉 퍼포먼스 마케팅이란 성과를 확인할 수 있는 마케팅입니다. 성과란 일의 결과를 뜻하고요.

시험을 보고 성적표를 받듯, 마케팅을 하고 이 일에 대한 성적표를 만들 수 있는 것이 퍼포먼스 마케팅입니다. 어떤 요소에서 얼마나 잘했는지에 대해서 수치 기반의 정량적인 기준으로 평가할 수 있는 거죠.

마케팅에 점수를 매길 수 있는 퍼포먼스 마케팅 표지
마케팅에 점수를 매길 수 있는 퍼포먼스 마케팅

왜 퍼포먼스 마케팅이 생겨났을까요?
마케팅의 성과는 어떻게 확인할 수 있을까요?


퍼포먼스 마케팅 이전에 전통적인 마케팅

전통적인 마케팅은 주로 ATL (Above The Line)에 속하는 전통적인 매체를 통한 것을 말합니다. TV, 라디오, 옥외 광고, 신문 등이 있겠죠.

이러한 매체들은 몇 명에게 노출되었는지까지는 대략 추산할 수 있지만 실제로 그 중에 몇 명이 어느 정도로 관심을 보였는지를 알 수 없습니다.

전통적인 마케팅 ATL 매체 중 TV
전통적인 마케팅 ATL 매체 중 TV

즉 TV가 틀어져있는 가구수는 셀 수 있겠지만, 그 가구 내에서 몇 명의 인원이 영상을 보고 있었는지, 다른 일을 하면서 보고 있었는지 아니면 TV 영상에만 집중하고 있었는지, 그래서 TV 광고에 나온 상품을 인지하게 되었는지 상호 작용이 불가능하므로 알기 어렵습니다.

라디오나 옥외광고도 마찬가지로, 라디오가 청취수는 알겠으나 청취수는 청취자수와 일치하지 않고 옥외광고의 경우 그 앞을 지나간 사람들을 추산할 수 있을 뿐입니다. 그러므로 전통적인 마케팅에서의 ATL 매체는 성과를 정확하게 측정하기가 어렵습니다.


퍼포먼스 마케팅의 중요성

마케팅에 돈을 쓴 만큼 얼마나 벌었는지 알고 싶겠죠?

그래서 비즈니스에서는 ROI를 묻습니다. 투자금 대비 이익률이죠. (이익-마케팅 비용)/(마케팅 비용)의 수식으로 비용 대비 매출이 아닌 [이익]의 수준을 봅니다.

마케팅에서는 주로 ROAS를 봅니다. (마케팅에 의한 매출)/(마케팅 비용)의 수식입니다. 여기서 주목할 점은 <마케팅에 의한 매출>입니다.

Text Color and Bold Change 전체 매출 중 마케팅이 기여한 매출은 얼마일까요?

마케팅에 의한 매출 = 마케팅에 의한 성과, 이를 알고 싶었기 때문에 성과(매출)을 측정할 수 있는 퍼포먼스 마케팅이 중요해졌다고 볼 수 있습니다.


퍼포먼스 마케팅의 주요 지표

CPM (Cost Per Mile), CPC (Cost Per Click), CTR (Click-Through Rate), CVR (Conversion Rate), CPA (Cost Per Action)

  • CPM (Cost Per Mile) 노출 1,000회당 비용
  • CPC (Cost Per Click) 클릭당 비용
  • CTR (Click-Through Rate) 클릭률
  • CVR (Conversion Rate) 환율
  • CPA (Cost Per Action) 목표 행동당 비용 *여기서의 목표 행동은 가입, 구매 등으로 협의 하에 정의할 수 있습니다.

메타 페이스북 광고 관리자 캠페인 대시보드 화면
페이스북 광고관리자에서의 퍼포먼스 마케팅 지표


퍼포먼스 마케팅 전략

#1 사용자 관점의 타겟팅 및 세분화

특정 브랜드에서 마케팅을 운영한다고 할 때, 사용자는 신규와 기존으로 나눌 수 있습니다. 신규는 우리를 모르는 사람들, 기존은 우리를 아는 사람들로 정의할 수 있겠으나 [안다/모른다]의 상태를 명확하게 구별해줄 수 있는 변인이 필요합니다.

대개 이 상태를 [가입] 행동으로 구분합니다. 즉 이미 우리 브랜드의 회원인 사용자는 기존, 비회원인 사용자는 신규가 되는 것이죠. 이와 같이 신규 사용자를 대상으로 하는 마케팅을 사용자 획득: UA (User Acquisition) 이라고 합니다.

Text Color Change

마켓컬리의 가입하면 990원 또는 배달의 민족의 배민 처음이라면~ N만원 할인 등의 프로모션을 주 내용으로 신규 회원을 유치하는 마케팅하는 것이 UA 마케팅입니다.

Image Row
마켓컬리 추천 프로모션 페이지 화면 배달의 민족 첫이용자 100원 프로모션 화면

#2 매체 관점의 광고 플랫폼 운영

인지도 증대 및 관심 유도에 유효한 [배너 광고]

  • YouTube 광고: 높은 도달률과 시각적 임팩트를 통해 브랜드 인지도 향상
  • Facebook/Instagram 광고: 다양한 타겟팅 옵션과 시각적 콘텐츠로 인지도 상승
  • Naver 디스플레이 광고: 한국 최대 포털 사이트를 통한 높은 도달률
  • Tiktok 광고: 젊은 층 대상 바이럴 효과와 인지도 상승
  • Google 디스플레이 네트워크 (GDN): 관련 사이트에서 배너 광고를 통해 관심 유발
  • Kakao 광고: 카카오톡과 다음을 통한 개인 맞춤형 광고

배너 광고 매체들은 마케터가 아니어도 익숙한 이름들입니다. 말 그대로 '배너'가 노출되어야 하기 때문에 많은 수의 사용자를 확보하고 있는 플랫폼이어야 경쟁력이 있기 때문이죠.

Text Color and Bold Change 이에 유튜브, 페이스북/인스타그램, 네이버, 틱톡, 구글, 카카오 등이 주요 광고 매체로 여겨집니다.

의사결정 및 구매 전환에 유효한 [검색 광고]

  • Google 검색 광고 (Google Ads): 특정 키워드 검색 시 상위 노출로 구매 의사결정 유도
  • Naver 검색 광고: 한국에서 높은 검색 트래픽을 통해 직접적인 전환 유도

Text Color and Bold Change 배너 광고에 의해서 상품이나 브랜드, 플랫폼을 인지하고 관심을 갖게 된 유저는 이후 전환 행동 전에 '검색'이라는 행동을 하게 됩니다. 이 때 검색 광고가 노출됩니다. 사용자 여정 내에서는 전환에 가까운 단계이기도 하고 사용자가 이미 구매 의도를 가지고 있다고 볼 수 있기에 검색 광고는 배너 광고 대비 전환율이 높은 것이 특징적입니다.

Image Row with Caption
네이버 마케팅 검색 시 파워링크 노출 화면 네이버 퍼포먼스 마케팅 검색 시 스폰서 노출 화면
네이버의 파워링크 및 구글의 스폰서 (검색 광고)

#3 A/B 테스트와 최적화

A/B 테스트는 원칙적으로 대조군(Control Group)과 실험군(Experimental Group)을 나누어 다른 모든 환경이 동일하다고 할 때, 한 가지의 변인을 다르게 하여 그 변인의 영향도를 실험하는 것입니다.

광고 집행 시, 모든 외부 요인을 통제할 수 없기 때문에 그 부분을 감안하고 광고 셋팅(타겟팅 등)이나 소재를 A/B 테스트 해볼 수 있습니다. 특정 상품의 경우 소재에서 어떤 내용을 강조할지가 주요 테스트 내용이 됩니다. 1. 개발스토리 2. 리뷰 3. USP 4. 가격 등 강조할 수 있을만한 것들을 제일 메인 요소로 활용해보는 것입니다. A/B 테스트는 매우 큰 개념으로 마케팅에서도 매체, 세팅/타겟팅, 소재 기획/제작 등에서 다양하게 적용될 수 있습니다.

소재에서 강조할 내용 4가지: 개발스토리, 리뷰, USP, 가격


퍼포먼스 마케팅 목표

목표(KPI: Key Performance Index)에 따라 다른 캠페인 셋팅

1. 인지도 증대 (Awareness)

'트래픽' 캠페인으로도 불립니다. 불특정 다수(오픈타겟, 논타겟)에게 최대한 많은 도달/노출을 이루어 제품의 인지도 향상과 클릭에 의한 유입, 트래픽을 의도합니다.

2. 관심 유도 (Interest)

타겟 세팅 시 관심사를 설정하여, 다른 행동으로 특정 관심사를 가진 것으로 추론되는 사용자들에게 소재를 노출할 수 있습니다. 혹은 관련도가 높은 웹사이트로 노출 위치를 설정할 수 있습니다.

3. 의사 결정 및 구매 전환 (Decision & Action)

구매 의도 있는 상태에서 특정 키워드를 검색했을 시 광고가 노출되거나, 이전에 방문했던 사용자를 대상으로 재방문 등을 유도할 수 있습니다.

Image Row
페이스북 광고 캠페인 목표 선택 화면 캠페인 세팅 내 타겟 정의 예시 화면


퍼포먼스 마케팅 도구 및 성과 측정

측정을 위해 필요한 UTM Builder와 Google Analytics

배너 광고든 검색 광고든 각 매체를 통해서 광고가 운영이 되면 관심을 가진 사람들이 클릭하여 설정해둔 페이지로 유입됩니다.

이 때, 페이지에 유입된 사용자가 100명이라고 할 때 (이 100명을 정확하게 구분하는 것도 꽤 어려운 일입니다...) 100명이 [배너 광고]를 보고 왔을지 [검색 광고]를 보고 왔을지 [배너 광고]도 보고 [검색 광고]도 보고 왔을지, [배너 광고]만 보고 10일 후에 페이지 주소를 입력해서 들어왔을지...

유입 경로 파악이 필요합니다.

어떤 채널, 어떤 매체로 들어왔을지 유입 경로를 알고 싶다면 매체에 광고를 세팅할 때 URL에 UTM이라는 변수를 붙여준 후 이를 Google Analytics로 측정해야 합니다.

Text Color and Bold Change UTM의 소스, 매체에 입력한 값에 따라 GA에서는 유입 성과를 구분하여 보여줍니다.

URL Builder의 소스(source) 및 매체(medium) 설정 화면 | 구글 애널리틱스 URL Builder 웹사이트
URL Builder의 소스(source) 및 매체(medium)
구글 애널리틱스 사용자 획득 내 트래픽 획득: 세션 소스/매체 확인 페이지
GA 내 [소스/매체]로 성과 보기

유상 광고의 경우 모든 광고 매체에서 관리자(Admin) 페이지를 지원하며 성과를 측정하여 보여주는데 굳이 구글 애널리틱스를 봐야하는 이유가 뭘까요?

Text Color and Bold Change 매체 별 광고 관리자에서는 성과를 자기 매체만 고려하여 측정하기 때문입니다. 대부분의 퍼포먼스마케팅은 한 개의 광고매체만 쓰지 않고 적어도 2개, 많개는 열댓개의 광고 매체를 쓰게 되는데요. 그렇다 보면 성과 측정에 대한 문제가 발생합니다.

성과 집계의 중복

자사몰에서의 단 한 건의 성과가 메타에서도 성과로 집계하고, 네이버에서도 성과로 집계하고, 구글에서도 성과로 집계될 수 있습니다. 자사몰 데이터 기준 전환 1건이, 광고 관리자 기준 전환 3건이 될 수 있는 것이죠. 그렇기에 매체 별 광고관리자만을 사용해서 성과를 측정하지 않고 웹으로 랜딩되는 경우 구글 애널리틱스(Google Analytics)를 주로 사용하는 것입니다.

사용자의 첫 행동인 유입 분석 설명 이미지
기여기간 7일 동안, 페북>카카오>구글>페북 광고 순으로 클릭했다면?

기여 기간 및 기여 모델

광고 매체가 전환에 기여한 기준은 기간과 방식에 따라 달라질 수 있습니다. 기여 기간을 1일로 설정한다면 3일 전 클릭한 성과는 인정되지 않을 수 있습니다. 기여 모델은 라스트 터치, 퍼스트 터치, 멀티 터치 등으로 구분되고 약 일주일 간 광고를 운영했을 때 (메타, 네이버, 구글 등)

- 사용자가 구매하기 전 마지막으로 누른 광고 매체가 가장 크게 기여했다고 한다면 > 라스트 터치 (Last touch) 모델,

- 사용자가 구매하기 전 처음으로 누른 광고 매체가 가장 크게 기여했다고 한다면 > 퍼스트 터치 (First touch) 모델입니다.

Boxed Text
Case 1. 랜딩 페이지가 Web 이라면
Boxed Text
Case 2. Web으로 랜딩 후 App 설치를 유도한다면
Boxed Text
Case 3. 앱스토어로 랜딩 후 App 설치를 유도한다면

Text Color and Bold Change 마케팅 집행 이후 랜딩페이지의 플랫폼 (Web, App)에 따라 유입 경로를 파악하여 성과를 측정하는 것은 점차 난이도가 높아집니다. Web까지는 url에 붙어있는 utm 파라미터로 파악이 된다면, 앱스토어부터는 정보값이 유실되기 때문입니다

그에 따라 MMP(Mobile Measurement Partner)로 통칭되는 Appsflyer, Airbridge, Adjust와 같은 SDK를 붙이는 등의 추가 tracker가 필요합니다.

앱 캠페인 성과 분석을 위한 수많은 MMP 솔루션 모음 이미지

보통은 이 부분에서 가장 많은 어려움을 겪습니다. GA와 MMP, 여기서 CRM 솔루션(Braze, Insider 등) 이나 PA(Product Analytics: Amplitude, Mixpanel 등) 솔루션까지 쓴다면 솔루션 내의 데이터 정합성을 맞추는 것 등의 관리가 복잡해지기 때문입니다.


퍼포먼스 마케팅 성과 측정

솔루션(Google Analytics, Appsflyer, Amplitude, Airbridge) 및 태블로(Tableau), 루커(Looker) 스튜디오, 구글 스프레드 시트 등

마케팅 웹(Web) 캠페인의 성과는 웹페이지로 랜딩되기에 GA만으로도 측정이 수월합니다. 문제는 앱설치를 목표로 앱스토어로 랜딩시키면서 시작됩니다. 그래서 보통 앱 성과 데이터를 측정하기 위핸 MMP (앱스플라이어/Appsflyer, 에어브릿지/Airbridge, 애드저스트/Adjust 등)을 도입하는데요.

Text Color and Bold Change 광고 매체를 개별 관리자에서 보면 데이터 정합성에 문제가 생겼듯이, 해당 솔루션들의 데이터 또한 결국 통합적으로 모아 활용해야합니다.

데이터 파이프라인 예시
데이터파이프라인 예시

위의 데이터파이프라인 예시처럼, 구글 애널리틱스의 웹 데이터 앱스플라이어의 앱 데이터, 기타 광고 매체들의 광고 데이터를 모아 구글 빅쿼리에 적재하고 이를 태블로를 통해서 대시보드로 제작합니다.

광고의, 매출의, 배너의 성과를 한 판에 볼 수 있는 대시보드 예시
광고의, 매출의, 배너의 성과를 한 판에 볼 수 있습니다.

다양한 시각적 형태로, 다양한 성과를, 다양한 차원으로 볼 수 있습니다. 커머스의 배너 성과를 볼 수도 있고, 상품/카테고리/브랜드의 매출 성과를 볼 수 도 있고, 광고 성과를 볼 수도 있습니다. 유입된 광고 매체에 따라 유저들의 LTV로 대변되는 충성도가 다른지도 확인할 수 있고요.


가장 중요한 것은 <측정> 입니다.

처음의 의문으로 돌아가자면, 인스타그램 계정 키우기도 어떤 측면에서는 퍼포먼스 마케팅으로 볼 수 있겠습니다. '측정'이 가능하기 때문입니다. 콘텐츠를 올리면서 올라가는 팔로워수, 피드의 좋아요수 및 댓글수 그리고 릴스의 조회수 등으로 계정의 성장을 숫자로 '측정'할 수 있습니다.

최근 읽은 '순서 파괴'라는 책에서 인상 깊게 읽은 부분이 있습니다. 아마존의 주요 구성원들이 아마존의 일하기 방식에 대해서 쓴 책입니다.

아마존에서는 목표를 설정할 때 아래 다섯 개 요소를 반영한다고 합니다.

  • 구체적이면서 (Specific)
  • 측정 가능하고 (Measurable)
  • 달성할 수 있으며 (Attainable)
  • 의미가 있고 (Relevant)
  • 시기가 분명해야 한다 (Timely)

이 중 저에게 가장 와닿았던 것은 측정에 관한 것이었습니다.

Text Color and Bold Change [측정] Measure
Text Color and Bold Change 데이터를 수집하고 유용한 포맷으로 이를 제시하는 일에 집중해야 한다. 원하는 데이터가 종종 서로 다른 시스템에 산재해 있을 수 있고, 데이터를 엮고 종합하여 올바르게 나타나기 위해서는 소프트웨어의 사용이 필요할 수도 있다. 이때 타협은 금물이다. 투자가 필요하다. 이 단계에서 투자하지 않으면 중요한 비즈니스를 그저 '감'에 의존해 위태롭게 이끌어갈 수 있다.

recent_thumbnail
FULL FUNNEL

Automation 활용한 DB 자동화 하기

September 5, 2024

데이터를 다루면서 고객의 업무 효율을 높이는 것을 도와드리고 있지만, 정작 저의 일에서는 데이터 정리와 효율화는 잘 못하고 있더라고요. 그래서 요즘은 Make와 Zapier를 통해 최대한 많은 일들을 자동화 하면서 좀 더 저의 자유(?) 시간을 만들어가고 있습니다.

👉 Make 자동화 : https://www.make.com/en

그런데 어느순간 Make 자동화가 많아지면서 제가 만들고 운영중인 자동화가 뭔지 헷갈리기 시작했습니다. Make 자동화로 업무효율화를 만들었지만 그럴수록 자동화 솔루션이 정리가 되지 않는 아이러니...

Make에서는 하나의 자동화 과정을 시나리오라고 해서 각 시나리오를 Json 형식으로 저장해서 관리할 수 있습니다. 이러한 Make의 특징을 활용해서 Make에서 시나리오가 새롭게 만들어지거나 업데이트가 되면 각각 구글 드라이브와 노션에 저장 & 업데이트 되는 자동화를 만들어봤습니다.

<DB 자동화를 위한 솔루션>

- 자동화 솔루션 : Make

- DB : Notion, Make DB

- 자료 정리 : 구글 드라이브

<이미지>

메이크(Make) 자동화 사나리오 DB 만들기 예시 이미지
메이크(Make) 자동화 설계 화면 예시 이미지
노션(Notion)에 저장된 최종 자동화 프로세스 모습

1️. Make 어드민의 다양한 시나리오들입니다. 카테고리를 만들 수 있긴하지만 그것만으로는 한번에 어떤게 있는지 확인이 쉽지 않습니다.

2️. Make 자동화 설계 화면 입니다.

3️. Notion에 저장된 최종적인 모습입니다.

👉 업무를 하다보면 고객 리드, 업무 파일, 데일리 보고 등 DB화 & 자료를 정리해야하는 업무들이 빈번하게 있습니다. 해당 시나리오처럼 매번 생산되는 자료를 구글 드라이브와 노션에 자동으로 기록한다면 생각보다 많은 업무를 효율화 할 수 있습니다.

recent_thumbnail
GROWTH

GA4에선 세션 지표 이해하고 사용하셔야 합니다.

September 4, 2024

Google Analytics를 사용해 보셨다면 ‘세션’이라는 용어에 익숙하실 것입니다. Universal Analytics(GA3)에서는 세션 단위로 데이터를 수집하여 지표를 측정했지만, GA4에서는 데이터 수집 방식이 달라져 주의가 필요합니다. GA4의 세션 관련 지표는 혼란을 일으킬 수 있습니다.

이번 글에서는 세션의 개념을 자세히 살펴보고, GA4에서의 세션이 어떻게 다른지 알아보겠습니다.

세션이란?

세션 관련해서 구글 가이드 문서에 따르면

- 세션은 사용자가 웹사이트 또는 앱과 상호작용하는 기간입니다.
- 세션은 사용자가 앱을 포그라운드에서 열거나 페이지나 화면을 보고 현재 활성화된 세션이 없는 경우 시작됩니다.
- 세션 수 : 고유 세션 ID 수를 추정하여 사이트나 앱에서 발생하는 세션 수를 계산합니다.

예를 들어 유저가 브라우저 탭에서 페이지를 열고 이메일을 확인하거나 다른 일을 하다가 2시간 뒤에 다시 돌아와서 브라우징을 할 수 있겠죠? GA4에서는 이를 페이지 뷰가 있는 세션으로 보고 2시간 뒤에 사용자 참여로 간주하고 새로운 세션으로 기록합니다.

1. 첫 번째 세션:

  • 사용자가 오전 9시에 웹사이트의 특정 페이지를 엽니다.
  • 페이지 조회(page view) 이벤트가 발생하여 세션이 시작됩니다.

2. 두 번째 세션:

  • 사용자가 같은 페이지를 오후 2시에 다시 돌아와 사이트를 탐색합니다

이때 새로운 세션이 시작되지만 페이지 조회 이벤트는 기록되지 않습니다.→ 두 번째 세션이 사용자 참여로만 기록됩니다

빅쿼리로 실제 어떤 케이스인지 특정 유저의 로그를 한 번 확인 해보겠습니다.

빅쿼리 조회 결과 - 페이지뷰가 없는 세션
빅쿼리 조회 결과 - 페이지뷰가 없는 세션

이렇게 페이지뷰 이벤트가 없는 두 번째 세션이 생기며, 이는 참여율(Engagement Rate) 지표로 나타납니다.

참여율 = 참여 세션 수 / 총 세션 수

Boxed Text
참여 세션의 정의
  • 10초 이상 머문 경우 (GA4 설정 : 10~60초로 조정 가능)
  • 페이지뷰가 2회 이상 발생한 경우
  • 10초 이내로 머물러도 전환 이벤트를 발생시킨 경우

GA4 인터페이스 예시 화면
GA4 인터페이스

이런 유저가 많아지면 세션 기반의 지표(예: 세션당 페이지뷰, 세션당 평균 참여시간)가 낮아집니다.

세션당 페이지뷰 수 계산 예시:

페이지뷰 수 / 세션 수 = 10 / 1 = 10

위와 같은 유저의 행동이 늘어나면:

페이지뷰 수 / 세션 수 = 10 / 2 = 5

페이지뷰 이벤트가 포함되지 않은 세션이 발생하니 지표가 감소하게 됩니다.(분모가 커지므로)

따라서 GA3에서 사용하던 세션 기반의 지표는 주의해서 사용해야 하며, 이벤트나 참여 관련 지표(참여 세션)를 보는 것이 좋습니다.

(GA4와 GA3의 데이터 수집 방식도 다릅니다)

자.. 그리고 또 있습니다.

세션 데이터의 현실.. 빅쿼리를 열어보면 .. 더 조심해야겠구나 라는 생각이 들겁니다.

일단 절대 세션수 ≠ session_start 이벤트의 수 가 아닙니다.

왜그런지 직접 조회해보죠!

session_start 이벤트가 없는 세션이 있다?

아래 특정 유저의 세션을 특정해서 조회해봤습니다.

event_name 컬럼에 session_start 이벤트는 없고 다른 이벤트만 있죠?

쿼리 결과 화면 - session_start 이벤트가 없는 세션 ID
session_start 이벤트가 없는 세션 ID

하나의 세션에 session_start 이벤트가 2개?

이런 상황은 빈번하지 않지만 발생할 수 있습니다. 하나의 세션에 두 개의 세션 이벤트가 발생했고, 심지어 사용자 아이디도 다릅니다.

GA4 인터페이스에서는 당연히 단일 세션으로 계산하지 않을 것 같지만 빅쿼리에서는 이런 케이스 때문에 user_pseudo_id와 ga_session_id를 조합해서 각 세션에 대한 고유 식별자를 만들어서 session 을 카운팅 해야됩니다. 

concat(user_pseudo_id, (select value.int_value from unnest(event_params) where key = 'ga_session_id')) as session_id,

쿼리 결과 화면 - 하나의 세션에 session_start가 두개
하나의 세션에 session_start가 두개

 

하나의 세션에 2개 이상의 소스?

GA3에서는 세션 윈도우(30분)가 지나면 완전히 새로운 세션이 시작되지만, GA4에서는 기존 세션이 계속 되기 때문에 이렇게 소스가 1개 이상 발생할 수 있습니다.

쿼리 결과 화면 - 하나의 세션에 2개 이상의 소스
하나의 세션에 2개 이상의 소스

 

GA에서 세션은 어떻게 계산될까?

 

결론

 

구글 애널리틱스에서도 세션수를 집계할 때 추정값을 사용합니다.

실제로 빅쿼리에 count(distinct ga_sesssion_id) 를 집계하면 성능에 영향을 줍니다..

그런데 전 세계에서 이걸 조회하는데 이걸 진짜 집계를 ?? 불가능하죠

그래서 HyperLogLog ++ (가이드 링크)라는 알고리즘을 적용해서 추산한 값을 보여줍니다.

구글 애널리틱스의 고유 개수 근사값 가이드 북마크

실제로 성능을 눈으로 확인해보죠

 

ga_session_id를 고유하게 카운팅 해보는 쿼리로 비교를 해보겠습니다.

COUNT(DISTINCT ga_session_id)

ga_session_id를 고유하게 카운팅 하는 쿼리1

HLL_COUNT.EXTRACT(HLL_COUNT.INIT(ga_session_id, 14))

 

ga_session_id를 고유하게 카운팅 하는 쿼리2

차이가 보이시나요? (참고로 데이터 하루치만 조회했고 쿼리 결과는 같습니다)

 

모든면에서 더 효율적인 처리를 하고 있음을 알 수 있습니다.

 

사실 GA4에서는 세션이라는 개념은 더 이상 의미가 없고 지금까지 위의 예시를 통해 확인할 수 있었습니다.

 

그럼에도 세션 지표를 무조건 써야된다면 참여 세션지표를 사용하는게 좋습니다.

 

이제 이걸 통해서 다음 글에서는 GA4의 꽃 세그먼트 분석에 대해서 알아보겠습니다.

(세그먼트 기능을 쓰려면 세션에 대한 이해가 꼭 필요하기 때문에 이번 글부터 시작하게 되었습니다.)

recent_thumbnail
GROWTH

디지털 전환(DX)의 정의와 사례

September 2, 2024

1. 디지털 전환의 정의

✅ 디지털 전환의 개념 및 필요성

디지털 전환이란 무엇일까요? DT 또는 DX로도 불리는 디지털 전환은 Digital Transformation에서 유래했습니다. 여기서 Transformation, 전환은 상태의 변화를 말합니다. 즉 디지털이 아니던 것이 디지털 상태로 변화하는 것입니다.

Text Color Change 디지털의 반대를 생각하면 아날로그를 떠올리게 되는데요. 사전적 의미로 '아날로그'는 어떤 수치를 길이, 각도, 전류 등 연속된 물리량으로 나타내는 일이며 '디지털'은 0과 1의 조합으로 바꾸는 과정이자 그 결과라고 합니다. 여기서 디지털 신호를 구성하는 비트가 컴퓨터를 움직이는 기본 단위이기에 디지털 = 컴퓨터 = 온라인으로 통용되는 것이겠죠.

디지털 전환 (Digital Transformation) DT/DX 표지

✅ 온라인 B2C 비즈니스에서의 디지털 전환

디지털 전환, 어쩐지 거창합니다. 마티니의 그로스팀에서 큰 규모의 회사를 방문했을 때 주로 DX실, DT실이 명함에 기재된 경우가 많더라고요. 즉 큰 곳에서 시도하는 경우가 많다는 것이겠죠.

Text Color Change 대다수의 회사들은 너무나도 당연히 컴퓨터를 사용해서 온라인으로 비즈니스를 운영하고 온라인으로 일합니다. (Excel, PPT, Word, Google Slide, Spread sheet, Docs, Mail, Slack, Zira, Notion...)

온라인 비즈니스 툴 및 솔루션 모음 이미지

Text Color Change

*디지털 전환, 오프라인에서 온라인으로?

온라인 비즈니스는 진행 중입니다. 오프라인을 온라인으로 전환시키는 DX와 DT는 상당수 진척되었습니다. 평범한 일상만 생각해 봐도 그렇습니다.

  • 버스가 언제 올지 정류장(오프라인)에 가서 확인하지 않아도 됩니다.
  • [지도 어플]을 통해 온라인으로 버스의 도착 예정 시간을 알 수 있습니다.

  • 커피를 마실 때 카페(오프라인)에 가서 주문하지 않아도 됩니다.
  • [카페 어플]을 통해 온라인으로 주문할 수 있습니다.

  • 점심을 배달시킬 때 가게에 전화하지 않아도 됩니다.
  • [배달 어플]을 통해 온라인으로 주문할 수 있습니다.

즉 현재의 디지털 트랜스포메이션, 디지털 전환(DT, DX)의 주요 과제는 오프라인의 온라인 전환은 아닌 듯합니다.

오프라인에서 온라인으로 전환

Text Color Change

*디지털 전환, 수동에서 자동으로!

Text Formatting

개인적으로는 온라인 비즈니스의 '자동화'가 디지털 전환의 주요 요소라고 생각합니다. 특히 마케팅에 있어서는 더욱 그렇습니다.

우리 프로덕트의 사용자가 10명, 100명, 1,000명일 때는 수기가 가능할 수 있습니다. 10명에게는 매일 전화를 할 수도 있을 것이고, 100명에게는 문자를 보낼 수 있을 것이고, 1,000명까지는 어떻게 수기로 그룹화를 해서 카카오톡을 보낼 수도 있겠죠.

하지만 [10,000명] 에게는요? [100,000명] 에게는요? 예를 들어보겠습니다.

사례 1. CRM 마케팅에서 메시지 수신자를 추출할 때

CRM 마케팅에서 메시지 수신 과정 이미지

[CRM마케팅/수동]

#1 보유한 데이터베이스(DB)에 접근하여

#2 조건에 맞는 쿼리문을 작성하여#3 '고정된 시점'의 사용자 데이터를 추출함

#4 성과 분석 시, 동일 프로세스를 거쳐 특정 시점의 사용자 데이터를 재추출함

#5 엑셀 등을 활용하여 수기로 데이터 값을 비교함

[CRM마케팅/자동] *솔루션 활용

#1 보유한 데이터베이스(DB)를 CRM 솔루션의 클라우드에 연동하고

#2 CRM 솔루션의 어드민에서 변수를 조절하여 (클릭!)

#3 '실시간'으로 사용자 데이터를 추출함

#4 성과 분석 시 어드민에서 변수를 조절하여 (클릭!)

#4 솔루션에서 제공하는 대시보드/그래프 형태로 데이터 값을 비교

CRM 마케팅 수동과 자동 차이 비교 표
CRM 마케팅 수동/자동

사례 2. 퍼포먼스마케팅의 성과를 측정할 때

[퍼포먼스마케팅/수동]

#1 광고 매체 별 광고관리자에서 성과를 엑셀로 다운로드 후

#2 보고용으로 맞춰둔 엑셀 형식에 맞춰 복붙 합니다. (ctrl+C, ctrl+V)

*매체 A, 매체 B, 매체 C, 매체 D.... 매체를 많이 쓸수록 이 절차는 많아집니다.

**혹시 글로벌이라면? 국가별로도 쪼개줘야 합니다.

***신규 사용자와 기존 사용자의 리타겟팅을 나눈다고요? 이것도 쪼개서...

#3 매체 성과와 자사 내부 DB 성과의 숫자가 맞지 않습니다.

기여 모델 및 기여 기간의 설정이 다르거나...

Text Formatting "그냥 추이로 보시죠, 정합성은 못 맞춰요."

[퍼포먼스마케팅/자동]

#1 광고 매체 별 데이터를 연동합니다.

#2 광고 매체와 MMP, CRM 솔루션의 데이터를 통합합니다. (DW)

Text Formatting #3 태블로, 루커 스튜디오 등의 BI를 활용하여 광고 성과 대시보드를 한 판에 그립니다.

솔루션들의 데이터 파이프라인 이미지
광고 성과 측정 자동화를 위한 데이터 파이프라인
광고 성과 측정 자동화가 가능한 대시보드 사례
광고 성과 측정 자동화가 가능한 대시보드 사례

마케팅 업무 자동화, 마케팅 오토메이션(Automation)의 효율에 대해서 이야기를 종종 하게 되는데요. 업무 효율성을 높이는 것이 수익 상승에 기여하지는 않는단 의견을 종종 듣습니다.

Text Formatting 책을 읽으면 삶의 해상도가 높아진다는 말이 있습니다. 비슷하다고 봅니다. 업무 자동화를 통해서 데이터와 가까워지고, 데이터 리터러시(literacy, 읽고 쓰는 능력)가 높아지면 비즈니스 상황에 대한 해상도 또한 높아집니다. 문제 정의와 해결 방안 제시가 보다 빠르고 명확해집니다.

문제 정의와 해결 방안 제시 및 대응. 문제 해결자(problem-solver)라는 직무도 존재하는 것처럼 사실 모든 직업은 분야와 내용과 형식이 다를 뿐, 어떠한 문제를 해결하는 것 아닐까요?

2. 디지털 전환(DX)의 전략적 접근

✅ 고객 경험 중심의 접근

위의 사례로 들었던 CRM 메시지 수신자 추출도, 퍼포먼스마케팅 성과 분석도 고객(사용자)이 아닌 실무자에게 필요한 디지털 전환, 즉 마케팅 자동화의 일환인데요.

Text Color and Bold Change

하지만 CRM 마케팅의 자동화는 실시간 행동 추적을 기반으로 하기에, 고객 경험에 맞춰 CRM 메시지의 내용과 시점, 노출 위치를 최적화할 수 있습니다.

✅ 데이터 중심의 의사 결정

Text Color and Bold Change ~한 것 같아요. ~일 것 같아요. 전 ~라고 생각해요. 근거 없는 추론과 의견으로는 의사 결정을 하기 어렵죠. 정확한 수치 기반의 데이터를 근거로 얘기할 때, 모든 구성원의 동의를 쉽게 이끌어낼 수 있습니다.

의문에 대한 추론 예시 이미지
~것 같다는 추론은 이제 그만.
의문에 대한 수치 기반의 데이터 확인 예시 이미지
수치 기반의 데이터로 원인을 파악하고 개선안까지!

3. 디지털 전환(DX)의 실제 사례

Text Color Change

*디지털 전환, 측정이 가능하도록!

Text Color and Bold Change 여러 기업들의 디지털 전환을 도우면서 가장 기본적이지만 가장 중요했던 것은 바로 '측정'입니다. 웹과 앱에서의 성과 측정을 위해 필수적인 것, 바로 UTM입니다.

여러 기업들의 디지털 전환을 도우면서 가장 기본적이지만 가장 중요했던 것은 바로 '측정'입니다. 웹과 앱에서의 성과 측정을 위해 필수적인 것, 바로 UTM입니다.

웹페이지의 주소인 URL에 UTM 파라미터를 넣어 유입된 사용자들이 어떤 경로로 들어왔는지 파악할 수 있습니다.

구글 URL UTM 생성 웹사이트 페이지 화면
Google URL Builder!

보통 퍼포먼스 광고를 운영할 때 페이스북 광고관리자의 구성에 맞추어 캠페인/그룹/소재 단으로 구성하는 경우도 있습니다.

UTM 구조 짜기 (캠페인, 그룹, 소재 등) 예시 이미지
UTM 구조 짜기 (캠페인, 그룹, 소재 등)

유상 광고(paid media)를 운영하는 퍼포먼스마케팅 외에, 인플루언서 마케팅(earned media)이나 유튜브/인스타그램/블로그 등에 자체 콘텐츠(owned media)를 게재할 때도 UTM을 삽입한 URL을 활용하면 좋습니다!

UTM 구조 짜기 (실제 사례) 예시 화면
UTM 구조 짜기 (실제 사례)

5. 디지털 전환(DX)에 필요한 주요 기술

AI 및 머신러닝

개인화 추천 시스템: 고객의 과거 구매 내역 및 검색 기록을 바탕으로 맞춤형 제품 추천

챗봇 및 가상 어시스턴트: 고객 문의 및 지원을 자동화하여 실시간으로 대응

그루비 AI 알고리즘 기반 상품 추천 페이지
출처: 그루비

채널톡 챗봇 문의 페이지
출처: 채널톡

빅데이터 분석

고객 세그멘테이션: 고객 데이터를 분석하여 세분화된 마케팅 전략 수립

실시간 데이터 분석: 판매, 트래픽, 재고 등의 데이터를 실시간으로 분석하여 빠른 의사 결정 지원

UTM 별 트래픽의 실시간 추이 (Amplitude) 확인 화면
UTM 별 트래픽의 실시간 추이 (Amplitude)

클라우드 컴퓨팅

스케일러블 인프라: 트래픽 변동에 유연하게 대응할 수 있는 클라우드 기반 인프라.

클라우드 기반 CRM: 고객 관계 관리 시스템을 클라우드에서 운영하여 언제 어디서나 접근 가능.

마테크 솔루션 모음 이미지 | 브레이즈의 연동성 *출처:AB180
브레이즈의 연동성 *출처:AB180

모바일 기술

모바일 최적화 웹사이트 및 앱: 모바일 사용자를 위한 최적화된 사용자 경험 제공.

모바일 결제 시스템: 다양한 모바일 결제 옵션 지원.

옴니채널 통합

온라인 및 오프라인 데이터 통합: 고객의 온/오프라인 행동 데이터를 통합하여 일관된 경험 제공.

클릭 앤드 콜렉트: 온라인 주문 후 오프라인 매장에서 상품 수령.

클라우드 컴퓨팅, 증강 현실 (AR),  사물 인터넷 (IoT), 결제 기술, 로봇 프로세스 자동화 (RPA) 등이 디지털 전환에 필요한 주요 기술로 여겨집니다.

마치며

디지털 전환을 마케팅 관점으로 좁혀서

디지털 전환을 검색하면 정말 방대한 의미의 내용들이 나옵니다. 클라우드 컴퓨팅, 인공지능(AI)과 머신러닝(ML), 빅데이터 분석, 사물인터넷(IoT), 블록체인, 사이버 보안 등이 대표되는 단어죠.

Text Color and Bold Change 다만 제가 컨설팅을 하며 만나본 회사들의 니즈는 이보다는 뾰족한 경우가 많았습니다. 인플루언서 마케팅의 성과를 측정하고 싶다거나, 메시지를 자동으로 발송하고 싶다거나, 고객들을 특정 행동 기준으로 그룹화하고 싶다거나, 배너의 성과를 보고 싶다거나...

생각해 보면 그로스 컨설팅이라고 꼭 디지털 전환이 완료된 상황에서만 될 수 있는 것은 아닙니다. 어느 영역의 디지털 전환이 그로스 컨설팅의 실행 방안이 될 수도 있는 것이죠.

Chat GPT가 생활화되고 AI에 대한 기사가 쏟아지는 요즘이지만, UTM을 잘 쓰는 것도 생각보다 어렵습니다. 디지털 전환을 위해 AI 도입보다 먼저인 것들이 있지 않을까요?

recent_thumbnail
FULL FUNNEL

AI & Automation : 프롬프트 자동 생성기

September 2, 2024

업무적으로 GPT를 비롯한 다양한 생성형 AI를 활용하고 있습니다. 이러한 생성형 AI를 다룰 때는 좋은 답변을 얻기 위한 좋은 질문 (프롬프트)을 던지는 게 중요합니다.

다만 매번 프롬프트를 새롭게 만들고 역할을 부여하는 게 여간 귀찮은 게 아닙니다. 물론 GPTs로 자주 사용하는 프롬프트는 앱을 만들어서 활용할 수 있지만, 가끔 등장하는 팝업식 질문마다 적절한 프롬프트 명령어를 주는 게 힘들더라고요.

이를 자동화하는 과정을 소개해보려고 합니다.

Make로 GPT, Claude, Perplexity에게 모두 동일한 질문을 하고 각각의 답변을 취합하여 최종적인 요약을 GPT에게 맡기는 자동화

1️. 만들고 싶은 프롬프트를 GPT에게 물어보면 생각보다 상세한 프롬프트를 얻을 수 있습니다. 그래서 최근까지는 필요한 상황마다 GPT에게 물어보고 프롬프트를 뽑아내는 방식으로 했습니다.

2️. 그런데 최근 트렌드를 포함하는 부분에서는 GPT보다 Claude나 Perplexity가 더 좋은 답변을 주는 경우가 많았습니다. 그래서 3개의 생성형 AI를 모두 활용하면서 좋은 프롬프트 조합을 적절히 만들어 썼는데 이것도 역시나 조합에 많은 시간이 들었습니다.

3️. 그래서 3개의 AI에게 각각 동일한 프롬프트 생성을 요구하고 각 AI 답변의 장점을 모아서 하나의 프롬프트를 만들면 좋겠다 싶었습니다. Make로 GPT, Claude, Perplexity에게 모두 동일한 질문을 하고 각각의 답변을 취합하여 최종적인 요약을 GPT에게 맡기는 자동화를 만들어 봤습니다.

👉 확실히 생성형 AI의 활용은 상상력이 가장 큰 허들인것 같습니다.

👉 좋은 질문을 만드는 여러분들만의 노하우가 있으신가요?! 같이 공유해보시죠!

recent_thumbnail
GROWTH

[코호트분석] 올바른 코호트 분석 방법

August 30, 2024

이 글을 읽고 계시다면 코호트 분석을 이미 하고 계실 건데 측정 기준에 대해서 의문이 생기신 분이 보실 것 같네요

구글에 '코호트 분석 SQL' 라고 검색하면 정말 많은 글들이 많습니다.

글에서 소개하는 쿼리 예시는 대부분 datediff함수를 활용해서 Date Granularity를  계산합니다.

이해하기 쉽게 예를 들어보겠습니다. 

유저 1 : 23:30 에 회원가입 후 다음날 다시 들어왔습니다. 

유저 2 : 13:30에 회원가입 후 다음날 다시 들어왔습니다.

day 단위로 계산을 하면 유저 1 은 우리 서비스를 30분 경험하고 다음날 재방문했다고 계산됩니다. 

유저 2는 약 10시간 30분 서비스를 경험하고 재방문을 했다고 계산됩니다. 

동일한 조건일까요? 그렇지 않죠? 

만일 시간 단위로 계산을 하게 되면 특정 행동을 수행한 시간부터 다음 행동까지의 Time window를 24시간 뒤로 하면 이 유저는 다음날이 아닌 모레 재방문했다고 계산되겠죠? 

DATEDIFF( [first_event_dt], [second_event], DAY )

DATEDIFF( [first_event_dt], [second_event], HOUR ) / 24 )

 

월단위로 계산할 때도 마찬가지입니다.

 

월별 일자수가 모두 다릅니다. 1월(31일), 2월(28일), 4월(30일)... 

 

월 단위로 측정할 때도 30일로 모두 통일해줍니다. 

DATEDIFF( [first_event_dt], [second_event], HOUR ) / 24  * 30)

 

이렇게 계산되면 유저별로 경과 시간은 모두 통일 되었습니다!!

 

실제로 Amplitude(앰플리튜드)의 코호트 분석 기능에는 이런 기능들이 존재합니다.  만약 안 쓰고 계시다면 직접 쿼리를 날려서... 

 

여기 가이드를 보시면 앰플리튜드가 24시간 단위로 경과 시간을 측청 하는 방식을 설명해 두었습니다. 

Amplitude 24시간 단위 경과 시간 측정 방식 유저 가이드 북마크 이밎

 

앰플리튜드 24시간 단위 경과 시간 설정 화면
앰플리튜드 화면 캡쳐

 

24시간 윈도우 기준, 캘린더 기준으로 경과 시간(t)을 측정하는 옵션이 있죠? 

 

얼마나 차이를 보였는지 가상의 데이터로 확인을 해보았습니다. 

 

(참고로 더미 데이터는 kaggle 이나 Mockaroo 에서 생성하실 수 있습니다)

 

참고로 해당 데이터 계산 기준은 월별 첫 구매 기준 재구매율입니다. 

 

월별 첫 구매 기준 재구매율 기준 리텐션 비교

 

t = 1 지점부터 차이를 보이기 시작하는데 t = 0 이 100%라서 차이가 잘 안 보입니다. 로그 스케일을 통해 다시 확인해 보면 

 

월별 첫 구매 기준 재구매율 기준 리텐션 비교, 로그 스케일로 확인한 그래프

 

확실히 달력 기준의 리텐션율이 조금 더 높아 보이네요 

 

얼마나 차이 나는지 두 기준의 리텐션율을 나눠 보겠습니다 최대  1.27배까지 납니다. (아래 차트에서는 0은 무시합니다. t = 0 은 100%이기 때문에)

 

t = 1 : 1.15배

t = 22 : 1.27배

 

달력(day) 기준과 24시간 기준 리텐션율

 

데이터에 따라서 차이가 달라지겠지만 

 

코호트의 기준이 만일 회원가입일 기준의 재구매율이거나 회원가입일 기준 재방문율을 측정한다면 더 많은 차이를 보일 수 있을 걸로 예상됩니다. 

 

제가 사용한 쿼리는 아래와 같습니다.

WITH tb_pay_first AS (
        SELECT country
                ,user_id
                ,min(pay_datetime_id) first_pay_datetime_id
        FROM order
        GROUP BY 1,2

)

, tb_base_ AS (SELECT  st0.*
                    , FLOOR(TIMESTAMPDIFF(HOUR, st1.first_pay_datetime_id, st0.pay_datetime_id) / 24) AS days_since_first_pay
                    , FLOOR(TIMESTAMPDIFF(HOUR, st1.first_pay_datetime_id, st0.pay_datetime_id) / (24 * 30)) AS months_since_first_pay_period_24h
                    , (YEAR(pay_datetime_id) - YEAR(first_pay_datetime_id)) * 12 + (MONTH(pay_datetime_id) - MONTH(first_pay_datetime_id)) AS months_since_first_pay_period_day
                    , st1.first_pay_datetime_id
            FROM order st0
            LEFT JOIN tb_pay_first st1
                ON st0.user_id = st1.user_id
                AND st0.country = st1.country
            WHERE 1 = 1

)

, tb_base_24h AS (
                SELECT time_id_
                        , country
                        , since_time_period_24h
                        , CASE 
                            WHEN 'acc' = 'normal' THEN SUM(SUM(IF(since_time_period_24h = max_since_time_period_24h, repurchase_user_cnt, 0))) OVER 
                                (PARTITION BY time_id_, country ORDER BY since_time_period_24h DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
                            ELSE SUM(repurchase_user_cnt)
                            END AS repurchase_user_cnt
                        , count(1) pay_user_cnt
                        , sum(sales) AS sales

                FROM   (SELECT *
                                , CASE WHEN since_time_period_24h = 0 AND pay_cnt > 1 THEN 1
                                        WHEN since_time_period_24h = 0 AND pay_cnt <= 1 THEN 0
                                        ELSE 1 
                                    END AS repurchase_user_cnt
                                , MAX(since_time_period_24h) OVER (PARTITION BY country, user_id) as max_since_time_period_24h
                        FROM
                                (SELECT tmp0.time_id_
                                        , tmp0.country
                                        , tmp0.since_time_period_24h 
                                        , tmp0.user_id
                                        , SUM(tmp0.pay_cnt) AS pay_cnt
                                        , SUM(tmp0.sales) AS sales
                                FROM 
                                        (SELECT DATE_FORMAT(first_pay_datetime_id ,'%Y-%m-01') time_id_
                                                , country
                                                -- , months_since_first_pay_period_day AS since_time_period_day
                                                , months_since_first_pay_period_24h AS since_time_period_24h
                                                , user_id
                                                , COUNT(distinct order_id) AS pay_cnt
                                                , SUM(sales) as sales
                                        FROM tb_base_
                                        -- WHERE DATE_FORMAT(first_pay_datetime_id ,'%Y-%m-01') >= '2023-01-01'
                                        GROUP BY 1,2,3,4) tmp0
                                GROUP BY tmp0.time_id_
                                        , tmp0.country
                                        , tmp0.since_time_period_24h 
                                        , tmp0.user_id
                                ) tmp
                                    ) tmp1
                GROUP BY time_id_ 
                        , country
                        , since_time_period_24h
)

, tb_base_day AS (
                SELECT time_id_
                        , country
                        , since_time_period_day
                        , CASE 
                            WHEN 'acc' = 'normal'  THEN SUM(SUM(IF(since_time_period_day = max_since_time_period_day, repurchase_user_cnt, 0))) OVER 
                                (PARTITION BY time_id_, country ORDER BY since_time_period_day DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
                            ELSE SUM(repurchase_user_cnt)
                            END AS repurchase_user_cnt
                        , count(1) pay_user_cnt
                        , sum(sales) AS sales
                FROM   (SELECT *
                                , CASE WHEN since_time_period_day = 0 AND pay_cnt > 1 THEN 1
                                        WHEN since_time_period_day = 0 AND pay_cnt <= 1 THEN 0
                                        ELSE 1 
                                    END AS repurchase_user_cnt
                                , MAX(since_time_period_day) OVER (PARTITION BY country, user_id) as max_since_time_period_day
                        FROM
                                (SELECT tmp0.time_id_
                                        , tmp0.country
                                        , tmp0.since_time_period_day 
                                        , tmp0.user_id
                                        , SUM(tmp0.pay_cnt) AS pay_cnt
                                        , SUM(tmp0.sales) AS sales
                                FROM 
                                        (SELECT DATE_FORMAT(first_pay_datetime_id ,'%Y-%m-01') time_id_
                                                , country
                                                , months_since_first_pay_period_day AS since_time_period_day
                                                -- , months_since_first_pay_period_24h AS since_time_period_24h
                                                , user_id
                                                , COUNT(distinct order_id) AS pay_cnt
                                                , SUM(sales) as sales
                                        FROM tb_base_
                                        GROUP BY 1,2,3,4) tmp0
                                GROUP BY tmp0.time_id_
                                        , tmp0.country
                                        , tmp0.since_time_period_day 
                                        , tmp0.user_id
                                ) tmp
                                    ) tmp1
                GROUP BY time_id_ 
                        , country
                        , since_time_period_day
)


, cohort_base_24h AS 
                (SELECT time_id_
                    , country 
                    , since_time_period_24h
                    , repurchase_user_cnt
                    , pay_user_cnt
                    , sales
                    , SUM(sales) OVER w AS acc_sales
                    , FIRST_VALUE(pay_user_cnt) OVER w AS cohort_user_cnt
                    , COUNT(1) OVER (PARTITION BY country) AS cohort_cnt
                FROM tb_base_24h
                WINDOW w AS (PARTITION BY time_id_, country ORDER BY since_time_period_24h RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
                )
)

, cohort_base_day AS 
                (SELECT time_id_
                    , country 
                    , since_time_period_day
                    , repurchase_user_cnt
                    , pay_user_cnt
                    , sales
                    , SUM(sales) OVER w AS acc_sales
                    , FIRST_VALUE(pay_user_cnt) OVER w AS cohort_user_cnt
                    , COUNT(1) OVER (PARTITION BY country) AS cohort_cnt
                FROM tb_base_day
                WINDOW w AS (PARTITION BY time_id_, country ORDER BY since_time_period_day RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
                )
)


SELECT *
    , (pay_user_cnt * 100) / cohort_user_cnt AS retention_rate
FROM
            (SELECT 1 AS time_id
                    , country
                    , since_time_period_24h
                    , SUM(repurchase_user_cnt) AS repurchase_user_cnt
                    , SUM(pay_user_cnt) AS pay_user_cnt
                    , FIRST_VALUE(sum(cohort_user_cnt)) OVER(PARTITION BY country RANGE BETWEEN UNBOUNDED PRECEDING and CURRENT ROW) as cohort_user_cnt
            FROM cohort_base_24h
            GROUP BY 1
                    , country
                    , since_time_period_24h) tmp3

정리해 보면!

분석의 기준은 굉장히 중요합니다. 어떤 기준으로 분석하느냐에 따라서 의사결정 방향이 달라질 수 있겠죠? 

 

코호트 분석은 시간을 계산해서 집계하는 분석인만큼 시간의 기준을 제대로 설정하는 게 중요합니다. 

 

Text Color Change 달력 단위의 코호트 측정이 조금 더 실제로 과대 평가되기 때문에 유저별로 통일된 24시간 기준 으로 계산하여 코호트를 측정하는 것이 올바른 방법이라고 생각이 됩니다. 

 

저도 실제로 분석해 보면서 분석 기준의 중요성을 다시 한번 깨달을 수 있었습니다.

 

혹시 지금 day 단위로 코호트 활용해 재구매율을 측정하고 계신다면 24시간 단위로 계산해 보시면 어떨까요? 

 

 

Reference

https://medium.com/@paul.levchuk/how-to-build-user-cohort-properly-b70a74e5e1c8

recent_thumbnail
FULL FUNNEL

AI 와 Automation 솔루션을 활용한 리드 마케팅 자동화 하기

August 30, 2024

B2B 비즈니스를 하다보면 고객 리드를 확보하는 마케팅을 많이합니다. 특히 블로그를 통해 자사 비즈니스의 관심과 이해를 높이면서 자연스럽게 리드를 확보하는 전략을 잘 활용합니다. 마티니도 마찬가지로 다양한 자료들을 블로그와 링크드인 등을 통해 공유 하면서 고객 리드를 자연스럽게 확보하고 있습니다.

처음에는 자료도 많지 않고 리드 인입도 드물어서 고객 리드에 대한 대응이 큰 문제가 없었습니다. 아마 대부분의 B2B 회사처럼 정보성 자료로 고객 리드를 확보하는 경우, 리드가 들어온 것을 확인(인지) 하고 리드의 정보를 확인하고(리드 확인) 고객 세일즈 메일(메일 발송)을 보내면서 자사의 서비스를 알리는 단계를 진행하였습니다.

문제는 리드 수집을 위한 정보성 자료의 수와 경로가 서서히 많아지면서 발생합니다. 어느 수준 이상이되면 고객 리드를 잘 확인하는 것도 쉽지 않습니다. Typeform이나 Googleform을 통해 수집하는 경우 스프레드시트와 Slack으로 리드 수집 현황을 보내주긴 하지만 담당자가 부재하거나 다른일을 하는 경우에는 리드 인지 자체를 놓치는 경우도 존재합니다.

실제로 저희도 리드가 많아지면서 리드 담당자의 업무 부하가 늘고 이에따라 리드 피드백이 늦어지면서 대응이 누락되는 경우가 종종 발생하였습니다.

현재는 해당 과정을 모두 자동화해서 리드 인입부터 리드 고객 정리, 리드 정보 요약, 메일 발송까지 모두 자동화 했습니다.

<B2B 리드 마케팅 자동화를 위한 솔루션>

- 리드 수집 : Featpaper

- 리드 알람 : Slack

- 리드 정보 요약 : Chat GPT

- 리드 DB 정리 : Spreadsheet

- 리드 메일 보내기 : Gmail

- 업무 자동화 : Zapier

 B2B 리드 마케팅 프로세스로 마티니의 As-is / To-be 모습

1️. 이미지는 B2B 리드 마케팅 프로세스로 마티니의 As-is / To-be 모습입니다. 빨간색 블럭이 자동화된 영역입니다.

자피어(Zapier) 리드 수집 - 메일 발송 자동화 프로세스 화면

2️. Zapier 자동화 설계 화면 입니다.

자피어(Zapier) 및 챗GPT를 통산 정보 요약 및 크롤링 후 슬랙으로의 자동화 예시 화면

3️. 리드 획득 후 해당 회사의 정보를 찾아보고 정리하는 것도 생각보다 시간이 많이 듭니다. 해당 프로세스를 Chat GPT를 이용해서 일부 도움을 받을 수 있었습니다. 다만, GPT의 정보 최신정 문제와 정보 신뢰도 문제가 있습니다. 프롬프트 엔지니어링을 통해 정보를 못 찾는 경우 정보가 없다는 결과값을 뱉어낼 수 있게 하였습니다.

🙋♂️ 더 해볼 것 : GPT가 정보를 잘 못 찾는 문제는 Perplexity 같은 URL과 검색 기반으로 정보를 수집하는 AI 솔루션으로 대체하면 어느정도 해결이 가능합니다. 아쉽게도 zapier의 연동 app 목록에는 현재 없어서 추후 Make를 통해 구현할까 생각 중입니다. 더 써보면서 자동화 가능 영역을 찾아 업무 생산성을 높이는 고민을 계속 해보려고 합니다.

👉 자동화 너무 재밌네요. 여러분도 AI와 Automation 사용해서 업무 생산성 높여보세요!

recent_thumbnail
GROWTH

MGS로 보는 2024 디지털 마케팅 트렌드

August 29, 2024

MGS란?

Modern Growth Stack, 모던 그로스 스택으로 디지털 마케팅 솔루션 에어브릿지(Airbridge)와 브레이즈(Braze), 앰플리튜드(Amplitdue) 등을 다루는 AB180이 개최하는 디지털 마케팅 세미나입니다.

https://www.moderngrowthstack.com/speaker

모던 그로스 스택 2024 MGS 스피커 확인페이지 북마크

이번 MGS 2024는 'FUTURE OF GROWTH'라는 주제로 2024.07.31 (수) 9시부터 18시까지 서울 코엑스 1층 그랜드볼룸 & 2층 아셈볼룸에서 진행됩니다.

디지털 마케팅 세미나

디지털 마케팅 분야에서 MGS만큼 큰 규모로 개최되는 세미나는 3개+ 정도 있습니다.

1. MGS: Modern Growth Stack by AB180

2. The Maxonomy by CJ Maxonomy

3. MAX Summit by 모비데이즈(MOBIDAYS)

2022년에는 맥스서밋에서 발표를 했었고("온택트 시대, 푸드 테크 기업의 新 마케팅 전략"), 2023년에는 The Maxonomy에서 마티니의 발표 자료("마케팅하는데 개발이 왜 문제일까?")를 만들었고 2024년은 MGS에 마티니의 일원으로 참가하는데요.

MGS와 같은 대형 세미나를 가면 보통 한 장소에 홀이 여러 개 (main, sub1, sub2...) 있고 세션이 나눠서 진행됩니다. 관심사에 맞는 세션을 들으러 시간마다 자리를 이동하곤 하고요.

MGS 2023, Breakout Hall 2의 오프라인 타임테이블
MGS 2023, Breakout Hall 2의 타임테이블

MGS 2023 세션 현장 모습
MGS 2023 세션 중

MGS 2024 주제 및 연사진 소개 이미지
MGS 2024 주제 및 연사진 소개

세션은 다양합니다.

인하우스(브랜드나 플랫폼)에서 마케팅 전략 및 실행안에 대한 인사이트를 나눌 때도 있고 솔루션사(Amplitude, Braze, Airbridge 등 PA, CRM, MMP Soltuion)에서 솔루션의 이점에 대해서 말하기도 하고요. 광고 플랫폼이나 대행사, 컨설팅사 등 주제와 연사도 다양하고 그에 따라 내용과 난이도도 다채롭습니다.

2024년 연사진만 슬쩍 봐도 구글(Google), 메타(Meta), X(엑스: 구 트위터 twitter), 커니(Kearny) 등의 광고 플랫폼들과 컨설팅사 및 29CM 등의 인하우스 눈에 띄네요.

2024 디지털 마케팅 트렌드

디지털 마케팅 분야에서 유명한 AB180, CJ Maxonomy, 모비데이즈가 개최하는 세미나들인 만큼 운영하는 세션의 주제만으로도 트렌드를 파악하기 충분합니다. 오늘은 MGS 2024의 세션을 통해 최근의 마케팅 트렌드가 무엇인지 알아보려고 합니다.

우선 AB180측에서 분류해 둔 키워드는 #글로벌, #애드테크·마테크, #트렌드 #프라이버시 #게임 #제품분석 #AI #MMP #UA #크리에이티브 #풀퍼널마케팅 #CRM #수익화 등입니다.

MGS 2024 마케팅 트렌드 키워드 분류 이미지

키워드가 좀 많다 보니, 세션들을 확인하고 좀 더 포괄적으로 공통되는 주제로 분류하자면 아래 4개의 카테고리 정도입니다. 관련 주제에 어떤 세션들이 준비되어 있는지 짚어봅니다.

*파란 글씨는 개인 의견입니다.

1. AI와 데이터 분석

2. 고객 관계 관리 (CRM)

3. 광고 기술 (AdTech) 및 마케팅 기술 (MarTech)

4. 성장(Growth) 전략, 트렌드 및 혁신

1. AI와 데이터 분석

디지털 마케팅에서 이제 인공지능(AI)이 빠질 수 없겠죠. AI로 마케팅에 들어가던 인풋을 줄여주거나 성과를 개선하거나 데이터를 활용하는 내용 위주인 듯합니다.

✅ AI 시대의 마케팅 성과 극대화를 위한 측정 및 운영 전략

이주원 Meta | Head of Marketing Science, Korea

*광고 플랫폼으로 '배너 광고하면 Meta'는 정말 견고하죠. 배너 광고하면 Meta를 빼고 갈 수는 없으니까요. 메타 광고를 세팅하면 노출 등의 효율 최적화를 위해 머신러닝이 도는 시간이 필요하다는 이야기를 많이 했는데, 새로운 측정 및 운영 전략이 나올지 궁금합니다...!

https://ko-kr.facebook.com/business/ads

Meta 메타 광고 설명 페이지 - 페이스북 메타 북마크

✅ ‘초개인화’ 광고 시대, AI 시대 기업들의 선택과 집중은?

안재균 Moloco | 한국 지사장

*몰로코 또한 광고 플랫폼입니다. 퍼포먼스 광고 및 광고 수익화 솔루션을 제공합니다.

https://www.moloco.com/ko

몰로코 Moloco 홈페이지 북마크

✅ Automating App Store Optimization with Generative AI

Andy Carvell Phiture | CEO

*그로스 컨설팅사/대행사입니다. 생성형 인공지능(Generative AI)을 통해 앱스토어 최적화 (ASO)를 자동화하는 방식에 대해 설명하는 세션인 듯합니다. 웹에서 트래픽을 만드는 데 SEO가 필수적인 것처럼, 앱에서의 ASO도 마찬가지로 중요하죠.

https://phiture.com/

모바일 그로스 컨설팅 에이전시 Phiture 홈페이지 북마크

✅ '감'이 아닌 '데이터'로 : Snowflake로 데이터 기반 인사이트 발견하기

이수현, Snowflake | 테크 에반젤리스트

*데이터 클라우드를 다루는 스노우플레이크의 세션입니다.

https://www.snowflake.com/ko/

데이터 클라우드 | 스노우 플레이크 Snowflake Korea 홈페이지 북마크

✅ Supercharge Market Conversions Through AI

Adrien Kwong, Xtend | Chief Commercial Officer

✅ 트위터에서 X로의 진화

신창섭 X 코리아 | 대표

*일론머스크가 파랑새 트위터를 인수하여 X로 바꾸고, 유료화를 진행한다는 소식 외에도 팔로워 N명 이상인 인플루언서들에게 수익을 배분하는 등의 새로운 기능을 도입하였는데 이에 대한 이야기일까 궁금하네요.

2. CRM 마케팅, 고객관계관리

CRM: Customer Relationship Management 고객관계관리라는 아주 넓은 의미의 단어로 통용되고 있는 CRM 마케팅은 사용자와 닿는 메시지(팝업 배너, 앱푸시, 카카오톡, 문자, 이메일 등) 위주인데요.

퍼포먼스 마케팅보다는 비용 효율적이고(ex. 광고 소재 클릭당비용 보다는 카톡 발송 비용이 더 저렴한 경우), 웹/앱에서 사용자 행동 기반 개인화가 가능해 그로스해킹/그로스마케팅의 방법론으로도 많이 활용됩니다.

✅ 2024’s Breakthrough Trends & strategies for Customer Engagement

고주연, Braze | Area Vice President of Korea

*브레이즈 한국에서 CRM 솔루션으로 가장 인지도 높은 툴이죠. 한 개의 CRM 캠페인 내에서 여러 갈래의 시나리오로 쪼개어 맞춤형 메시지를 발송할 수 있다는 장점이 큽니다.

✅ "우리 잘하고 있는 건가?": CRM 마케터들이 궁금해하는 고민과 해결방안

이건희, 마티니 | 팀장

*마티니에서 수많은 회사들을 만나며 다수가 공통되게 CRM에 관련하여 고민했던 부분들을 모아서 설명하신다고 해요.

✅ 데이터를 성과로 바꾸는 그로스마케팅 - 실험과 개인화를 중심으로

조형구/강하은, 29CM | Growth Marketer

*특정 브랜드/카테고리의 매출을 개선시키기 위한 크로스 채널 전략과 마케팅 퍼널 관점에서의 개인화 캠페인 사례, 데이터 대시보드를 활용한 분석과 기획 등이 위주로 개인화 캠페인이 CRM 관련 사례일 듯합니다.

✅ 버거킹도 Amplitude를 쓴다고? 어떻게 쓰는데?

최동훈, Amplitude | Senior Korea Partner Sales Manager

이재철, 마티니 | 팀장, 이형일, BKR | 이사

*마티니와 버거킹이 앰플리튜드를 도입하고 고도화해 고객의 행동(구매 등) 패턴을 분석하고 이를 브레이즈 기반의 CRM 캠페인으로 풀어나가는 과정에 대한 세션입니다.

✅ 전체론적 마케팅의 부상: Everything Matters운영을 넘어 통합 마케팅 전략으로 고객 성공을 이끌다

조경상, NNT | CEO

*퍼포먼스 마케팅과 CRM, 데이터 엔지니어링, 크리에이티브 테스트 등 다양한 마케팅 수단을 다뤄주실 듯합니다.

✅ 게임회사에서 A-Z 그로스로 론칭하기

민병철, PIEDPIXELS | 사업 이사

✅ 실시간 데이터로 고객을 사로잡는 풀퍼널 마케팅 전략

오담인, 윤정묵, 장소영, 김형준, AB180 & Airbridge | Customer Success Team

3. 애드테크(Adtech)와 마테크(Martech)

애드테크는 Advertisement+Tech, 마테크는 Marketing+Tech로 광고와 마케팅에 있어 기술을 접목한 형태를 말합니다. 웹이나 앱에서의 성과 측정 및 사용자 행동 분석 등에 필요하죠.

✅ 좋은 MMP가 주는 좋은 경험

정헌재, AB180 & Airbridge | CPO

*MMP는 Mobile Measurement Partners로 모바일, 앱(App)으로 전환되는 성과 측정을 도와주는 툴입니다. 앱스플라이어(Appsflyer), 에어브릿지(Airbridge), 애드저스트(Adjust) 등이 있습니다.

✅ 1P Data의 시대, 지금 토스애즈에 주목해야 하는 이유

김형빈, Viva Republica (Toss) | 부문장

*웹에서의 사용자 행동을 추적할 수 있었던 쿠키(Cookie)가 사라지면서 쿠키리스 시대 = 1p, 1st party가 중요해지는 시대가 왔습니다. 토스의 경우 엄청난 사용자 모수와 함께 그들이 '결제 데이터'를 가지고 있으므로 타겟팅에 유리할 수밖에 없겠죠?

✅ Shaping Android’s Privacy Sandbox

Pan Katsukis, Remerge | Co-Founder & CEO

✅ 프로덕트 애널리틱스를 활용한 비즈니스 성장 가속화 전략

호명규, Amplitude | 한국영업총괄

진겸, 당근 | 팀장

원하윤, Liner | PM

✅ 현대카드 광고 미디어믹스 최적화 모델 : 광고비, 어디에 얼마를 투자해야 하는가?

김동훈, 도소희, 현대카드 | Online Marketing

*현대카드의 미디어믹스는 얼마나, 어떻게 다를까요? 예산을 최적화하는 AI모델링 시스템을 구축한 일련의 과정을 소개한다고 하여 기대 중입니다!

✅ 딜라이트룸과의 파이어사이드 챗: 모바일 수익화 성과를 높이는 방법

Bob Wang, PubMatic | Country Manager, Greater China & Korea

이승제, 딜라이트룸 | Product Owner, BD Lead

✅ Data for Everyone: 모두가 함께하는 데이터 마케팅

김나은, AB180 & Airbridge | VP of Growth

최동훈, Amplitude | 한국비즈니스총괄

최준호, Braze | Partner Sales Director

이수현, Snowflake | Tech Evangelist

✅ 앱 스토어 데이터 마이닝을 통한 우리 사용자 행동 분석

윤가비, Apptweak | 한국 지사장

*웹에서 SEO가 중요한 만큼 앱에서는 ASO 또한 중요한데요. (App Store Optimization) 앱트위크는 앱스토어 최적화를 위해 현황을 점검하고 키워드를 찾는 등 필요 요소들을 모두 확인하기 좋더라고요.

4. 성장(Growth) 전략, 5. 트렌드 및 혁신

#글로벌, #애드테크·마테크, #트렌드 #프라이버시 #게임 #제품분석 #AI #MMP #UA #크리에이티브 #풀퍼널마케팅 #CRM #수익화

그로스마케팅, 그로스해킹, 그로스전략은 아직까지도 유효한 트렌드인 듯합니다. 그렇지만 결국 그로스를 이뤄내기 위해서는 조금 더 세부적인 부문의 실행 방안들이 필요합니다.

실행방안 #풀퍼널 #제품분석 #UA #크리에이티브 #CRM #수익화

사용자 여정의 풀퍼널(Full-Funnel)과 제품을 분석했을 때 프로덕트의 상황에 따라 UA(User Acquisitio, 신규 사용자 획득)에 초점을 맞춰야 할 수도 있고, 크리에이티브를 다변화하며 소재 A/B테스트를 운영해야 할 수도 있고, CRM을 통해서 사용자들에게 다음 단계 혹은 리텐션을 유도해야 할 수도 있고, '구매 전환'을 통한 수익화를 최우선으로 해야 할 수도 있습니다.

.

.

.

Text Formatting

2024 디지털 마케팅의 트렌드는 AI 및 애드테크, 마테크의 기술적 고도화에 의한 업무 및 성과 효율의 개선이라고도 볼 수 있겠으나 사실 가장 중요한 것은 '우리 회사는 무엇이 문제가 되는 상황이고, 어떤 단계인지'를 데이터 기반으로 객관적으로 판단하는 것이라 생각합니다.

2024 디지털 마케팅 트렌드
AI와 애드테크/마테크의 고도화

남들이 말하는 트렌드보다는 우리의 문제에 집중하기!

최근에 작은 브랜드를 운영하시는 대표님을 만나 뵌 적이 있었는데, 정말 열심히 하는 분이었습니다. 주말이면 온갖 웨비나와 세미나를 섭렵하시고 책도 읽고 강의도 들으시더라고요. 마케팅이 아닌 다른 부문에서 한평생 일하시다가 중장년의 나이에 공부를 하다 보니 따라가고 싶어 노력하신다 하셨어요.

이런저런 이야기를 하다가 저는 대표님께, 이제는 그만 듣고 또 공부하고 그냥 해야 할 때라고 말씀드렸습니다. 지금 수능 보고 낮은 점수받기 싫어서 계속 인터넷 강의 듣는 N수생 같다고요.

할 때는 해야 합니다. 다만 남들이 이미 풀어본 문제를 어떻게 푸는지 알고 가면 좋겠죠. 그 방식이 꼭 나에게도 맞을 거라는 보장은 없지만, 그래도 참고하면 방향성을 잡기에는 훨씬 수월하니까요. 그래서 디지털 마케팅 세미나들이 꽤 유용하지 않나 싶습니다.

recent_thumbnail
EVENT

브레이즈 개인화 마스터 클래스 어드밴스 Review

August 28, 2024

마티니와 함께 Braze 개인화 기능 정복하기

행사명 : Braze Personalization Master Class Advanced 세미나

장소: 서울 서초구 서초대로38길 12 마제스타시티 타워2 12F

일시: 2024년 8월 26일 월요일 오후 7시

어떻게 진행하였나요?

이번 세미나의 경우 심도 있는 개인화 기능 활용 실습을 위해 신청해주신 이메일로 Braze 데모 계정 발급을 통해 실습해보실 수 있게 하였고 실습 시간 비중을 늘려 개인화 Liquid 및 Connected Content 기능을 충분히 활용해보실 수 있게 준비했습니다.

어떤 것들을 배웠나요?

Liquid A to Z

지난 개인화 클래스는 전반적인 개념과 기능의 일부를 학습하고 활용해보았다면 이번 클래스는 Braze Liquid가 어떻게 작동하는지 문법을 상세하게 하나하나 배울 수 있는 시간이었습니다.

변수의 지정과 호출, 지정한 변수들의 수식을 적용하는 방법과 더불어 문구, 계산, 날짜 관련 Filter를 살펴보며 익혔습니다. ‍if, for, case when 3가지 태그도 수식과 함께 확인하며 사용하는 시점을 배워보았습니다.

실습의 경우 Nike 제품을 구매한 이력이 있는 유저에게만 보낼 개인화 메시지를 구현해보았습니다.

사례로 배우는 Connected Content

Connected Content는 Liquid의 활용 시점과 차이점을 비교해보며 어느 상황에서 활용할지 살펴보았습니다.

심화 사례로 쿠폰 만료 D-1 넛지 자동화, 날씨 기반 마케팅 사례를 통해 어떻게 적용할 수 있는지 배웠고 유저가 위치한 도시별로 Connected Content를 활용하여 푸쉬 제목, 바디, 이미지까지 개인화해보는 실습 시간을 가졌습니다.

CRM 커뮤니티에서 편하게 질문하자!

마티니가 CRM 마케팅을 하면서 생기는 궁금증과 Braze 활용에 있어 어려운 부분을 해소해드리고 CRM 인사이트를 공유하며 소통하기 위한 공간을 마련하였으니 많은 신청 바랍니다.

👉지금 바로 신청하기!

11월에는 Braze Automation & Data Analytics / Utilization 세미나로 CRM 캠페인 자동화와 더불어 데이터 분석 및 활용해보는 시간을 가질 예정이오니 마티니 블로그 사전등록 페이지를 통해 많은 관심으로 참여 부탁드리겠습니다!

마티니가 여러분의 CRM 성공을 위해 함께 합니다.

recent_thumbnail
FULL FUNNEL

Looker Studio에서 토글 스위치로 선형 및 막대 차트 전환하기

August 27, 2024

Looker Studio에서 토글 스위치로 선형 및 막대 차트 전환하기

최근 데이터 시각화 및 분석 도구들이 발전하면서 사용자 친화적인 인터페이스가 중요해지고 있습니다. Google Looker Studio는 이러한 요구에 맞춰 다양한 기능을 제공하며, 그 중 하나가 선형(Line) 차트와 막대(Bar) 차트를 전환할 수 있는 토글 스위치 기능입니다. 물론 기본적인 제공 기능 아니지만 루커스튜디오의 기능을 활용하면 간단하게 구현 가능합니다.

토글 스위치 기능의 필요성

데이터를 분석하는 과정에서 서로 다른 유형의 차트를 사용하면 데이터를 다양한 각도에서 시각화할 수 있습니다. 예를 들어, 막대 차트는 특정 시점의 데이터를 비교하는 데 유용하며, 선형 차트는 시간에 따른 변화를 나타내는 데 적합합니다. 이러한 차트들을 손쉽게 전환할 수 있는 기능이 있으면, 사용자는 더 쉽게 다양한 인사이트를 얻을 수 있습니다.

Looker Studio에서 토글 스위치 구현하기

차트 생성

  • Google Data Studio를 열고 새로운 보고서를 생성합니다.
  • 데이터를 불러오고, 선형 차트와 막대 차트를 각각 생성합니다.

토글 스위치 추가

  • 보고서에 '매개변수'를 추가합니다.
  • 매개변수 설정에서 토글 스위치를 만들고, '선형 차트 = 1'와 '막대 차트 = 2' 옵션을 추가합니다.

💡스위치 필터 사용 시 매개변수는 숫자형만 반응. 따라서 텍스트가 아닌 데이터 유형을 숫자로 설정하여 매핑.

Looker Studio에서 토글 스위치로 선형 및 막대 차트 전환하기
Looker Studio에서 토글 스위치로 선형 및 막대 차트 전환하기

슬라이더 컨트롤

  • 컨트롤 필터 중 슬라이더를 선택하여 앞서 만든 차트 타입 매개변수를 세팅
  • 스타일
    • 테두리 둥글게
    • 배경 밝은 색상
    • 테두리 강한 색상

Looker Studio에서 토글 스위치로 선형 및 막대 차트 전환하기
Looker Studio에서 토글 스위치로 선형 및 막대 차트 전환하기

차트 생성

  • 차트 종류
    • 콤보 차트
  • 데이터 탭
    • 측정기준 : 날짜
    • 측정항목 : Bar, Line을 아래의 식을 활용하여 설정

💡Bar
IF(차트 타입 = 1, Revenue, null)

💡Line
IF(차트 타입 = 2, Revenue, null)

  • 스타일 탭
    • Bar는 막대 형태로 데이터 레이블을 표시합니다.
    • Line은 선으로 표시되며 포인트를 표시합니다.
    • 누락된 데이터에 대한 줄 바꿈

Looker Studio에서 토글 스위치로 선형 및 막대 차트 전환하기
Looker Studio에서 토글 스위치로 선형 및 막대 차트 전환하기

마무리

이러한 토글 스위치 기능은 사용자에게 더 나은 데이터 시각화 경험을 제공합니다. 사용자는 필요에 따라 차트를 전환하며 데이터를 더 직관적으로 이해할 수 있습니다. 이는 데이터 분석의 효율성을 높이고, 더 나은 결정을 내리는 데 도움을 줍니다.

Google looker Studio에서 선형 및 막대 차트를 전환하는 토글 스위치를 구현하는 방법을 알아보았습니다. 이러한 기능은 데이터 분석을 더욱 직관적이고 효율적으로 만들어 줄 것입니다. 이제 여러분도 데이터 시각화를 한 단계 업그레이드 해보세요.

데모 보기
recent_thumbnail
GROWTH

에어브릿지의 이벤트 구조 이해하기 (vs. GA4)

August 26, 2024

에어브릿지(Airbridge)는 데이터 수집부터 마케팅 성과 분석까지 하나의 대시보드에서 진행하는 마케팅 성과 분석 솔루션(MMP)으로, 라스트 터치 어트리뷰션, 멀티 터치 어트리뷰션, 마케팅 믹스 모델링 등 다양한 방법으로 앱과 웹사이트의 마케팅 성과를 함께 분석할 수 있는 통합 마테크 솔루션입니다.

오늘날 MMP 솔루션은 광고주들에게 필수적으로 사용되고 있습니다. 에어브릿지 역시 그 중 하나로, 별도의 연동 없이 통합된 데이터 분석과 어트리뷰션이 가능한 것이 강점입니다.

에어브릿지의 이벤트 구조는 타 플랫폼에 비해 비교적 복잡하기 때문에 이전에 GA4 및 타 분석 솔루션만을 사용하다 에어브릿지를 처음 접했다면 다소 혼란스러울 수 있습니다. 저 역시 꽤 헤맸던 것 같습니다.

이러한 계기로 에어브릿지 택소노미를 설계할 당시 이벤트 구조를 이해하는 데 실제로 도움이 됐던 자료들과 GA4의 구조를 비교하여 전체적인 구조를 설명드리고자 합니다.

에어브릿지 공식 가이드

에어브릿지의 이벤트 및 어트리뷰트 호출 코드의 작성 방법은 아래 세 가지 경로를 통해 확인하실 수 있습니다.

1. 에어브릿지 유저 가이드(Airbridge Help Center)

유저 가이드를 통해서도 코드를 작성하는 데에는 문제가 없지만 2번 자료의 코드 구조가 비교적 효율적이므로 가급적 2번 자료를 참고하시는 것을 권장드립니다.

에어브릿지 유저 가이드 - 이벤트 구성요소 | Airbridge Help Center

2. AB180 깃허브(Github)

1번 유저 가이드의 코드 예시 보다 더욱 상세한 전체 코드를 확인하실 수 있습니다.

AB180 깃허브 (Github)

3. 유저 가이드 및 에어브릿지 공식 문서(Data Spec)

에어브릿지에서 제공하는 Event와 Attribute의 목록과 상세 정보들을 확인하실 수 있습니다.

에어브릿지 이벤트 종류 | Airbridge Help Center
Airbridge Data Spec (Public)

에어브릿지 이벤트 구조 - 1

Text Example

카테고리(Category), 액션(Action), 라벨(Label)

에어브릿지 이벤트 구성 요소에는 카테고리(Event Category), 액션(Event Action), 라벨(Event Label), 밸류(Event Value), 어트리뷰트(Attribute), 트리거(Trigger)가 있습니다.

다소 복잡해 보이지만 조금만 들여다보면 이해하기 쉽습니다.

에어브릿지 이벤트 구성 요소 설명 이미지

위 이벤트 구성 요소의 개념들이 조금 생소하신 분들은 GA4의 예시로 보면 이해하기 쉽습니다.

(GA4의 Metrics & Dimension에 대한 기본 개념이 궁금하신 분들은 관련 자료를 참고해 주세요)

Text Example

GA4 vs. Airbridge

- GA4 보고서

GA4 보고서 예시 이미지

- Airbridge 보고서

Airbridge 보고서 예시 이미지

GA4의 측정기준(Dimensions)이 에어브릿지의 카테고리, 액션, 라벨의 역할을 하고,

측정항목(Metrics)이 에어브릿지의 밸류의 역할을 한다고 비교해 볼 수 있습니다.

Text with Underline

단, 액션과 라벨은 카테고리의 하위 속성으로서 리포트에서 확인 가능한 데이터로, 필요 시 선택적으로 세팅할 수 있습니다.

GA4와 Airbridge 구조 차이를 설명하는 이미지 표

예를 들어, 의류를 판매하는 모 기업의 마케팅 담당자가 구매 이벤트 발생 시 아래와 같은 항목들의 데이터를 수집한다고 가정합니다.

Purchase

{주문일자}
{브랜드명}
{제품명}
{색상}
{수량}

모두 시맨틱 어트리뷰트로 수집 가능한 항목들이지만 어트리뷰트의 경우 에어브릿지 리포트에서 확인할 수 없기 때문에 CDP와 같은 고객DB에 접근하거나 별도의 솔루션으로 전처리하여 확인해야 합니다. 이런 경우 유용하게 쓰일 수 있는 항목이 액션과 라벨입니다.

만일 자주 사용하는 어트리뷰트 항목을 에어브릿지의 리포트와 대시보드에서 활용하고자 한다면 어트리뷰트 항목을 액션과 라벨에 세팅하여 어트리뷰트에 대한 데이터를 리포트에서도 확인할 수 있습니다.

다시 말해, 1개의 카테고리2개의 어트리뷰트(액션, 라벨)에 대한 통계를 에어브릿지의 리포트와 대시보드에서 쉽고 빠르게 확인할 수 있습니다.

- Category: Purchase
- Action: {브랜드명}
- Label: {제품명}

아래 이미지는 스탠다드 이벤트 중에서 일정 예약 이벤트(airbridge.subscribe)의 예시입니다. 일정을 예약한 지역은 액션 또는 라벨로 수집할 수 있으며, 시맨틱 어트리뷰트를 활용하면 예약한 ID(scheduleID)와 예약일시(datetime)를 수집할 수 있습니다.

스탠다드 이벤트 중 일정 예약 이벤트(airbridge.subscribe) 예시 이미지

에어브릿지 이벤트 구조 - 2

Text Example

밸류(Value)

밸류는 에어브릿지 이벤트가 수집한 숫자를 계산에 이용하기 위해서 선택해야 하는 구성요소입니다. 에어브릿지 이벤트의 밸류로 수집된 숫자만 계산에 이용할 수 있습니다. 밸류로 소수점 9자리 이하 숫자까지 수집할 수 있습니다.

예를 들어, 레비뉴 리포트(Revenue Report)에서 판매한 제품의 가격을 더해 전체 판매 가격을 계산하거나 디지털 서비스의 구독료를 전부 합해서 전체 구독료를 확인하기 위해서는 밸류를 반드시 이벤트 구성요소로 사용해야 합니다.

또한, 밸류로 수집된 데이터는 밸류로 수집된 다른 데이터와 계산할 수 있습니다. 액션이나 라벨로 수집된 데이터는 계산에 활용할 수 없습니다. 그러나 이벤트 발생 횟수는 밸류 사용 여부와 상관없이 확인할 수 있습니다.

예시) 구매 완료 이벤트

구매 완료 이벤트 예시 이미지

위 예시와 같이 액션과 라벨, 밸류 모두 숫자로 수집한다고 하더라도 밸류로 수집한 데이터만 계산할 수 있으며, 액션과 라벨로 수집한 데이터는 계산할 수 없습니다. 예시에서는 구매 완료 이벤트의 밸류로 수집한 데이터를 더해서 30,000이라는 수치를 얻을 수 있습니다.

Text Color Change

단, 카테고리(이벤트)와 동일하게 이벤트가 발생한 횟수는 확인할 수 있습니다. 구매 완료 이벤트의 액션 중에서 1,000이라는 속성이 2번 발생한 것을 에어브릿지 리포트에서 확인할 수 있습니다.

매출 관련 데이터는 속성으로 수집하는 것이 일반적이나, 에어브릿지의 경우에는 Attribute가 아닌 Value로 수집합니다. 즉 밸류에는 보통 구매액이 들어가고, 어트리뷰트에서는 기타 정보들을 수집합니다.

에어브릿지의 매출 관련 데이터 수집 화면

Semantic Attribute로 사용할 수도 있지만, Actuals Report나 Revenue Report에서는 이벤트 밸류에 Semantic Attribute의 isRevenue 값을 True로 설정한 카테고리(이벤트)로부터 발생한 매출액(Value 값)을 기준으로 확인하기 때문에 이는 적절하지 않습니다. (설정 가능한 Revenue 이벤트 수: 최대 5개)

Revenue Report 내 이벤트 벨류 예시 이미지

Revenue 이벤트를 설정할 때 한 가지 유의할 점은 Revenue의 구조가 다양한 서비스일 경우(전환 포인트: 포인트 충전, 제품 결제, 광고 충전 포인트 등), Revenue Report에서 확인할 최종 전환 기준 한 가지를 선정하셔야 합니다.

만일 아래와 같이 구매 완료 시 2개의 매출 관련 이벤트가 동시에 호출되고 2개의 이벤트 모두 Revenue 이벤트로 설정한 경우 중복집계가 될 수 있기 때문입니다.

예시)

- 주문 완료 이벤트 발생 시 단위별 이벤트 동시 호출

  • airbridge.ecommerce.order.completed (주문서 단위 1건 로깅) > isRevenew(True)
  • confirm_item_order_completed (주문서 내 제품 단위 1건 로깅) > isRevenew(True)
Text Color Change

1건의 매출(=1만원) 중복 발생(=2만원)

매출액 집계 기준을 제품 단위로 볼지, 주문서 단위로 볼지 결정하고 결정된 하나의 카테고리(이벤트)에 isRevenue를 세팅해야 중복집계를 방지할 수 있습니다.

따라서 Revenue로 집계할 이벤트와 기타 매출 관련 데이터를 집계해야 하는 이벤트를 별도로 관리하시는 것을 권장드립니다.

에어브릿지 이벤트 구조 - 3

Text Example

어트리뷰트(Attribute)

GA4와 Airbridge의 이벤트 속성명 정의의 차이 비교 표

각 카테고리(이벤트)에는 다양한 속성 정보가 수집되는데, 플랫폼마다 정의하는 '속성명'이 상이합니다. GA의 경우 Parameter, 에어브릿지의 경우 Attribute로 정의합니다. 이벤트(카테고리)명 역시 GA4의 경우 Event, 에어브릿지의 경우 Standard Event라고 정의합니다. 각 플랫폼별로 기본적으로 제공되는 속성들이 있으며, 에어브릿지의 경우 Data Spec에서 확인이 가능합니다.

Text Color Change

단, 현재 버전의 SDK에서 제공되지 않는 일부 항목들도 포함되어 있으므로 명확한 확인이 필요합니다.

Airbridge Event

  • 스탠다드 이벤트: 에어브릿지는 주요 유저 행동 25개를 선정해 미리 정의한 이벤트
  • 커스텀 이벤트: 앱 서비스에 맞는 광고 성과를 추적하기 위해 스탠다드 이벤트에 해당하지 않는 유저의 행동을 새로 정의한 이벤트

Airbridge Attribute

  • 시맨틱 어트리뷰트: 에어브릿지가 수집하는 데이터를 미리 정한 어트리뷰트
  • 커스텀 어트리뷰트: 에어브릿지 사용자가 수집하기 위해서 새롭게 정의한 어트리뷰트

Text Color Change 한 가지 유의사항이 있다면, 에어브릿지 커스텀의 경우 원본 데이터 추출에서 수집된 모든 속성 데이터가 같은 칼럼에 담긴 상태로 확인이 가능 합니다. 아래 실시간 로그에서 형태를 확인하실 수 있습니다.

Airbridge의 앱 이벤트 실시간 로그 화면

따라서 데이터의 수집 구조를 충분히 고려하여 분석 환경을 구축해 놓는 것이 좋습니다.

recent_thumbnail
FULL FUNNEL

CRM 캠페인 대시보드 | 루커스튜디오 템플릿

August 23, 2024

CRM 캠페인 대시보드 | 루커스튜디오 템플릿

디지털 시대의 급속한 발전과 함께 마케팅 환경이 빠르게 변화하고 있습니다. 다양한 채널을 통한 고객 접점이 증가하면서 기업들은 복잡해진 고객 관계 관리(CRM)에 직면하고 있습니다. 이러한 상황에서 CRM 대시보드의 중요성이 더욱 부각되고 있습니다.

CRM 대시보드는 여러 채널에서 수집된 CRM 캠페인 데이터를 통합하여 분석하고, 현황을 한눈에 파악할 수 있게 해주는 강력한 방법입니다. 다양한 CRM 채널로 인해 단일 기준으로 분석하기 어려운 데이터들을 대시보드를 통해 효과적으로 통합하고 시각화함으로써, 마케터들은 보다 신속하고 정확한 CRM 마케팅 의사결정을 내릴 수 있게 됩니다.

이러한 CRM 대시보드의 활용은 단순히 데이터를 보여주는 것에 그치지 않습니다. 실시간으로 캠페인 성과를 모니터링하고, 고객 행동 패턴을 분석하며, 각 채널별 효과를 비교할 수 있게 해줍니다. 이를 통해 기업은 더욱 효율적인 마케팅 전략을 수립하고, 고객 경험을 개선하며, 궁극적으로는 ROI를 향상시킬 수 있습니다.

본 글에서는 범용적으로 활용가능한 CRM 대시보드를 템플릿을 제공합니다.

템플릿 개요

Looker Studio CRM 캠페인 대시보드 템플릿은 마케팅 캠페인의 성과를 실시간으로 모니터링하고, 데이터를 시각화하여 분석할 수 있도록 돕는 강력한 도구입니다. 이 템플릿을 통해 효과적인 의사결정을 지원하고, 전략을 최적화할 수 있습니다.

CRM 캠페인 대시보드 | 루커스튜디오 템플릿
CRM 캠페인 대시보드 | 루커스튜디오 템플릿

템플릿의 주요 기능

1. 필터 기능

  • 날짜: 기간 선택
  • 채널: 카카오톡, SMS, Push, IAM
  • 캠페인 카테고리: 프로모션, 라플, 신상품, 타겟팅, 콘텐츠 소개
  • 캠페인 디테일: 특정 캠페인 이름
  • 캠페인 레벨: 정기 캠페인 vs 이벤트 캠페인

2. 주요 지표 및 트렌드

  • 발송 성공, 메시지 노출수, 구독 해지수, 매출, 비용 등의 주요 지표와 트렌드를 한눈에 볼 수 있습니다.

3. 캘린더 차트

  • 월별 주간 및 요일별 주요 지표 트렌드를 시각화하여 분석할 수 있습니다.

4. 주요 지표 테이블

  • 채널, 캠페인 레벨, 캠페인 이름에 따른 주요 지표를 테이블 형식으로 볼 수 있습니다.

Overview Dashboard

CRM 캠페인 대시보드 | 루커스튜디오 템플릿
CRM 캠페인 대시보드 | 루커스튜디오 템플릿

필터:

  • 날짜: 기간 선택
  • 채널: 카카오톡, SMS, Push, IAM
  • 캠페인 카테고리: 프로모션, 라플, 신상품, 타겟팅, 콘텐츠 소개
  • 캠페인 디테일: 특정 캠페인 이름
  • 캠페인 레벨: 정기 캠페인 vs 이벤트 캠페인

영역:

  1. 1번 영역: 주요 지표(발송 성공, 메시지 노출수, 구독 해지수, 매출, 비용)와 트렌드
  2. 2번 영역: 월별 주간 및 요일별 주요 지표 트렌드 (캘린더 차트)
  3. 3번 영역: 채널, 캠페인 레벨, 캠페인 이름에 따른 주요 지표 테이블

Campaign Detail Dashboard

CRM 캠페인 대시보드 | 루커스튜디오 템플릿
CRM 캠페인 대시보드 | 루커스튜디오 템플릿

필터:

  • 주요 측정 항목: 클릭(Click), 매출(Sales), CTR(클릭률), 비용(Spends)

채널별 성과:

  • 각 채널별 세부적인 성과 지표를 시각화
  • 주요 지표 비교: 노출수, 클릭수, 클릭률, 매출, 구독 해지율 등

활용 목적

Looker Studio CRM 캠페인 대시보드 템플릿은 캠페인의 실시간 성과 모니터링, 데이터 시각화, 마케팅 전략 최적화를 목적으로 활용됩니다. 이를 통해 효과적인 의사결정과 전략적 개선이 가능합니다.

실시간 대시보드를 통해 데이터를 업데이트하고, 다양한 필터 기능을 사용하여 원하는 데이터를 정확히 추출할 수 있습니다. 맞춤형 리포트를 생성하여 필요에 따라 커스터마이즈된 분석이 가능합니다.

주요 사용자

마케팅 팀, 경영진, 데이터 분석가 등 다양한 사용자들이 이 템플릿을 활용하여 캠페인 성과를 모니터링하고 분석할 수 있습니다.

활용 팁

1. 주기적인 업데이트

  • 대시보드를 정기적으로 업데이트하여 최신 데이터를 반영합니다.

2. 필터 활용

  • 다양한 필터를 사용하여 원하는 데이터를 정확히 추출합니다.

3. 성과 지표 설정

  • 주요 성과 지표(KPI)를 명확히 설정하고 이를 중심으로 분석합니다.

4. 데이터 비교

  • 과거 데이터와 현재 데이터를 비교하여 트렌드와 변화를 파악합니다.

5. 팀과 공유

  • 대시보드를 팀원들과 공유하여 협업을 강화하고 통일된 전략을 수립합니다.

템플릿은 마케팅 캠페인의 성과를 종합적으로 관리하고 분석하는 데 유용하며, 데이터를 기반으로 한 전략적 의사결정을 지원합니다.

데모 보기
recent_thumbnail
EVENT

Martinee 2024 Recap Review!

August 23, 2024

마티니 2024 상반기 리캡

마티니 2024 상반기 리캡 표지
마티니 리캡 행사 방문객에게 제공되는 간단한 음식 패키지 사진
마티니 리캡 행사 방문객에게 제공되는 간단한 음식 패키지사진

지난 7월 31일, 국내 최대 마케팅 컨퍼런스 MGS 2024가 뜨거운 열기속에서 마무리되었습니다.

🍸 "우리 잘하고 있는건가?": CRM 마케터들이 궁금해하는 고민과 해결방안

🍸 버거킹도 Amplitude를 쓴다고? 어떻게 쓰는데?

🍸 쏘카 CRM 마케터가 일하는 방법: Braze로 개발자 없이 캠페인 고도화하기

MGS 2024 컨퍼런스에서는 위와 같은 세션을 진행했었는데요. MGS에서 진행했던 마티니 세션을 듣지 못하신 분들을 위해 2024 Recap 행사를 진행했습니다. 이번 행사에서는 AB180과 Snowflake의 세션도 확인할 수 있었고 마케팅과 개발 간극부터 마테크 솔루션 도입 및 활용까지 다양한 고민과 궁금증을 해소해드리는 자리를 마련했습니다.

마티니 세션

마케팅 인텔리젼스 피플, 마티니 대표 이선규님의 세션 모습
버거킹 앰플리튜드 활용 사례를 설명하는 마티니 그로스팀 팀장 이재철님
CRM 인사이트를 공유하고 있는 CRM팀 팀장 이건희님
브레이즈 기능인 개인화에 대한 팁을 공유하고 있는 마티니 CRM팀 팀장 이건희님

마티니 세션에서는 대표 선규님이 마케팅의 현 시장 상황 설명을 바탕으로 마티니가 가지는 강점과 차별점을 소개해드렸고 이어 마티니 Growth팀 리더 재철님이 버거킹의 Amplitude 도입 및 활용 과정을 함께하며 진행한 내용들을 공유해드렸습니다.

구매 횟수별 고객 특성과 구매 시간대별 고객 특성 2가지 실험의 과정과 결과를 Amplitude를 활용한 버거킹 쿠폰 설계 및 적용 과정을 바탕으로 설명해드렸습니다.

CRM팀 리더 건희님이 마티니 CRM팀이 수많은 고객사와 CRM 담당자들과 협업하고 소통하며 느꼈던 고민과 6,000여개가 넘는 CRM 캠페인을 런칭하며 경험했던 해결 방안들을 공유해드렸습니다.

AB180 & Snowflake 세션

AB180 한예선님의 SKAN 활용법 세션 모습
Snowflake 이수현님의 AI 데이터 클라우드 세션 모습

AB180 세션에서는 SKAN의 개념와 활용법부터 ATT 동의율을 극대화시킬 수 있는 팁들까지 배울 수 있는 시간이었습니다.

Snowflake 세션에서는 Snoiwflake의 AI 기반 Data Cloud 특징과 장점을 바탕으로 비즈니스 발전 가능한 부분을 피자헛 사례를 통해 확인할 수 있었습니다.

네트워킹 & QnA

참석한 고객사와 고민을 나누며 대화하는 마티니 CEO 이선규님
명함을 교환하고 있는 스노우 플레이크 이수현님

행사 세션이 끝난 후엔 마티니와 AB180, Snowflake가 MGS와 더불어 이번 세션 때 받지 못했던 질문과 고민들을 함께 듣고 공유하며 참석해주신 분들과 자유롭고 편하게 다양한 이야기들을 나눌 수 있었습니다.

MMP부터 PA까지 마테크 솔루션 도입과 활용에 관해 소통하는 시간을 가졌습니다.

마티니와 마테크 솔루션 정복하기

마티니는 퍼포먼스, 그로스, CRM의 ‘&’를 기반으로 유기적으로 협업하며 체계적인 단계로 비즈니스 성장을 이끌고 있습니다.

버거킹 사례에서 설명드린 것처럼 Amplitude와 Braze 활용과 연계뿐만 아니라 다양한 MMP, CRM, PA 툴의 연계 및 활용까지 마티니가 함께 합니다. 도입 초반부터 활용까지 모두 알려드리는 마티니와 함께 마테크 솔루션을 제대로 활용해서 비즈니스를 성장시켜보세요.

recent_thumbnail
GROWTH

검색엔진최적화 SEO란?

August 23, 2024

구글에 내 콘텐츠 상위노출 시키는 법

앰플리튜드(Amplitude) Product Analytics, PA라고도 불리는 분석 솔루션 중 하나입니다. 구글에 '앰플리튜드'를 검색했을 시 스폰서(광고) 제외 두 번째 위치에 제 브런치의 글이 나옵니다. 어떻게 했을까요?

앰플리튜드 구글 검색 시 포스팅 상위노출을 확인할 수 있는 화면

https://brunch.co.kr/@marketer-emje/8

앰플리튜드(Amplitude), 왜 쓰는 걸까? 포스팅 북마크 이미지

상위노출 방법 전에 SEO의 개념을 먼저 훑고 갑니다!


SEO란?

Search Engine Optimization의 약자로, 검색엔진을 최적화한다는 뜻입니다. *검색엔진은 Google, Naver와 같이 '검색'을 통해 정보를 찾아주는 플랫폼이죠.

즉 SEO란 검색엔진에 노출되는 페이지를 최적화하여 상위 노출을 시키고, 특정 키워드를 검색한 사용자들이 상위 노출된 페이지를 보고 클릭하여 사이트에 '무료'로 유입될 수 있도록 하는 것을 말합니다.

사실 SEO 최적화라는 말은 Optimiziation의 뜻이 중복되는 말이지만, '최적화'가 가장 중요한 부분이니 만큼 강조된다고 생각할 수 있습니다.


SERP란?

SERP는 Searh Engine Result Page의 약자로 검색 결과 페이지라는 뜻입니다. 검색엔진에 특정 단어를 검색했을 시 노출되는 결과 페이지를 말합니다. 구글에 'SEO 최적화'를 검색했을 시의 SERP를 예시로 보면

1. 추천 스니펫 영역 2. 개별 사이트/페이지 노출 영역으로 구분되어 있네요. 구글 SERP의 구조 상, 스니펫은 없는 경우도 있고, 광고(sponsor)가 추가되는 경우도 많습니다.

seo 최적화 구글 검색 화면
구글에 'SEO 최적화'를 검색했을 때의 SERP


SEO가 중요한 이유

CPC가 O원입니다. 배너 광고나 검색 광고처럼 Click per Cost(클릭당 비용)이 발생하지 않습니다. 즉 SEO 최적화에 의해 상위노출된 페이지로 생기는 트래픽은 '무료'로 발생한다는 것이죠.

이는 마케팅에서 중요한 포인트입니다. 구글 검색광고나 네이버 검색 광고 중 경쟁 강도가 높은 키워드들의 경우 한 번의 클릭에 1, OOO원은 기본이며 비싸게는 1O, OOO원~2O, OOO원의 비용이 듭니다. (단 한 번의 클릭인데요! 심지어 그다음 단계로 전환될 것이라는 보장도 없습니다, 실수로 눌려서 예산은 소진됩니다.)

그런데 SEO 최적화로 상위노출이 되는 페이지들은, 맨 처음 페이지 제작에 들어가는 초기 비용을 제외하면 추가 비용이 들지 않습니다. 꾸준히 새로운 사용자가 유입되고, 트래픽이 발생합니다.

포스팅 조회수 증가 추세를 보여주는 예시 화면

앰플리튜드 관련 글은 4월에 조회수 2,000 > 5월에 조회수 3,000 > 7월에 조회수 4,000을 돌파했습니다.

다른 브런치 글들에 비하면 작게는 4배, 크게는 10배 차이입니다.

포스팅 목록 조회 화면, '앰플리튜드(Amplitude), 왜 쓰는 걸까?' 포스팅 조회수 4,301회

4,000건의 유입. CPC 단가 100원이었다면 광고비 40만 원의 성과

물론 미미한 숫자이지만 이렇게 생각하면 꽤 크지 않나요? 이런 자연 유입이 여러 키워드에서 잡힌다면 DAU/MAU에 꽤 유효하게 작용하게 됩니다.

클릭당비용(CPC) 외에 클릭률(CTR)을 본다면, 자연 영역에서 최상위 노출이 될 시 클릭률이 최대 53%에 달한다는 결과가 있었습니다. (*제가 사용자일 때도, 전 스폰서/광고가 걸린 페이지는 거의 안 누르긴 합니다.)

구글 검색결과페이지에 최상위 노출이 되면 좋은 점, 마티니 SEO 가이드 발췌


SEO 최적화와 상위 노출

SEO 최적화, 즉 검색엔진에 잘 맞는 페이지로 만들어줘야 상위노출이 잘 잡힙니다. 여기서 SEO 방법론은 몇 가지로 나눌 수 있습니다.

1. On-page SEO

웹사이트 내부에서 SEO를 최적화할 수 있는 요소입니다. 타이틀 태그와 메타 설명(meta description), 헤더 태그(header tag: H1, H2, H3...), 키워드 선정 및 사용, 콘텐츠 품질(이미지 포함), 링크 활용, 로딩 속도, 모바일 친화성 등이 있습니다.

내부에서 관리할 수 있는 영역인 것이지, 내부에서의 요소는 외부에도 고스란히 영향을 미칩니다. 무신사의 디스이즈네버댓 브랜드 페이지를 보면 내부에서 기재해 둔 텍스트가 구글 검색 시 동일하게 노출되는 것을 확인할 수 있습니다.

디스이즈네버댓 타이틀 태그와 메타 설명(meta description) 적용 예시 화면
디스이즈네버댓 구글 검색 결과 화면

2. Off-page SEO

웹사이트 외부에서 SEO를 최적화할 수 있는 요소입니다. 백링크(back-link), On-page SEO에서는 페이지 내에 링크를 걸었던 것과 반대로 링크가 걸림 '당하는 것'입니다. 검색엔진에서 노출에 있어 선호하는 신뢰도가 높은 사이트 등 다른 사이트에서 자신의 사이트로 연결되는 링크가 있으면 좋습니다. 이외 SNS 등의 소셜 미디어, 인플루언서 등의 활용이 있습니다.


콘텐츠 SEO와 테크니컬 SEO

제가 더 주요하게 소개하고자 하는 SEO 최적화 방법론은 콘텐츠 SEO와 테크니컬 SEO로 나눌 수 있습니다.

1. 콘텐츠 SEO

Boxed Text
콘텐츠 SEO = (1) 키워드 + (2) 콘텐츠 + (3) 메타데이터 최적화

콘텐츠 SEO에 주요한 요소는 키워드와 콘텐츠, 메타데이터입니다.

1-1. 키워드

키워드 최적화는 프로덕트/서비스와 사용자, 시장, 경쟁사(유사 서비스)에서 사용하는 키워드를 분석하고 활용하는 것이 중요합니다.

a. 프로덕트/서비스에서 사용하는 키워드

b. 사용자가 사용하는 키워드

c. 시장에서 사용하는 키워드

d. 경쟁사가 사용하는 키워드

키워드: 키워드 분석 설명 장표, 마티니 SEO 가이드 발췌

1-2. 콘텐츠

콘텐츠 최적화는 앞서 키워드 분석을 통해 선정한 주요 키워드 위주로 콘텐츠의 내용을 채우는 것과 콘텐츠의 형식을 구조화하는 것이 중요합니다.

a. 콘텐츠의 내용

  • 키워드 포함
  • 멀티미디어 활용 (영상, 사진)

b. 콘텐츠의 형식

  • 구조화 (html, 시맨틱 태그, 메타 태그)

콘텐츠 구조와 형식 설명 장표, 마티니 SEO 가이드 발췌

1-3. 메타 데이터

메타 데이터는 웹 페이지 관련 정보를 제공하여 검색 엔진 및 소셜 미디어 플랫폼 내 페이지의 표시 방식에 영향을 미칩니다.

메타 데이터(메타 태그) 최적화

메타 데이터는 웹 페이지의 정보와 속성을 설명하고 검색 엔진 및 소셜 미디어에서 공유할 때 사용되어, 사용자에게 페이지 내용을 이해시키고 검색 엔진이 페이지를 색인화하는 데 도움을 줍니다.

  • Title 태그 (Title Tag)
  • Meta Description 태그 (Meta Description Tag)
  • Meta Keywords 태그  (Meta Keywords Tag)
  • Link Canonical 태그 (Canonical Link Tag)
  • Meta Robots 태그 (Meta Robots Tag)
  • Meta Author 태그 (Meta Author Tag)

*HTML 구조는 웹 페이지의 레이아웃과 콘텐츠를 정의하고, 시맨틱 태그는 HTML 구조 내에 의미론적으로 중요한 부분을 강조하며 메타 데이터는 검색엔진과 사용자에게 그 정보를 제공하는 것입니다.

SEO 최적화에 영향을 미치는 HTML 태그 설명 장표, 마티니 SEO 가이드 발췌
SEO 최적화에 영향을 미치는 HTML 태그 설명 장표, 마티니 SEO 가이드 발췌

2. 테크니컬 SEO

Boxed Text
테크니컬 SEO = (4) 구조화된 데이터 + (5) 내부 링크 + (6) 외부 링크(백링크) + (7) 사이트 속도 + (8) 모바일 + (9) 보안 + (10) 분석과 모니터링

자사몰을 보유하고 있을 때는 위와 같은 요소들을 고려하는 것이 필요합니다. 다만 개인의 페이지일 때는 검색엔진에 따라 유리한 사이트들이 있습니다. 예를 들어 똑같이 글을 쓰는 플랫폼이라고 하더라도, '네이버'에서는 네이버 블로그만이 노출되는 것처럼 '구글'에서는 워드프레스, 티스토리, 브런치 등이 유리합니다.

구글 애널리틱스(Google Analytics)와 구글 서치콘솔을 활용한 분석 및 관리 설명 장표, 마티니 SEO 가이드 발췌


이걸 진짜 다 고려했나요? 네니요.

테크니컬 SEO ❌

신경 쓰지 않았습니다. 고려했다면 워드프레스 등으로 블로그를 구축했겠으나... 시간을 아끼고자 했습니다. 대신 구글 상위노출을 목표로는 브런치를, 네이버 상위노출을 목표로는 개인 블로그를 활성화시켰습니다.

콘텐츠 SEO ⭕

신경 많이 썼습니다! 키워드를 찾고, 선정하고, 글감을 목록화했습니다.

마티니 그로스팀 콘텐츠 리스트 노션 페이지 화면
마티니 그로스팀 콘텐츠 작성 시 구조 및 내용 구성 예시 화면


SEO 최적화를 위한 가이드를 한 번에

약 60장의 페이지에 꾹꾹 눌러 만들었습니다. 성함/이메일/회사의 정보를 입력해 주시면 다운로드하실 수 있어요!

마티니 (Martinee) SEO 가이드 장표 모음 이미지

https://featpaper.com/viewer/4HKU5W8xhmCy (클릭!)

마티니 Martinee SEO 가이드 Guide 2023 북마크
recent_thumbnail
FULL FUNNEL

루커스튜디오로 퍼널 분석 차트 만들기

August 21, 2024

루커 스튜디오 인터렉티브 퍼널 분석 차트 만들기 표지
루커 스튜디오 인터렉티브 퍼널 분석 차트 만들기 | Looker studio

1. 루커 스튜디오 소개

루커 스튜디오(Looker Studio)는 구글에서 제공하는 강력한 데이터 시각화 도구입니다. 다양한 데이터 소스를 연결하여 직관적인 대시보드를 만들 수 있으며, 이를 통해 복잡한 데이터를 쉽게 이해할 수 있습니다. 특히, 마케팅, 영업, 운영 등 다양한 분야에서 유용하게 활용될 수 있습니다. 루커스튜디오가 궁금한 분들은 해당 글을 참고해주세요.

2. 인터랙티브 퍼널 차트?

인터랙티브 퍼널 차트는 사용자 행동을 단계별로 분석하여 시각적으로 표현하는 방식입니다. 특히, 마케팅 퍼널 분석에 유용하며, 고객이 제품이나 서비스를 구매하기까지의 과정을 시각화하여 각 단계에서의 전환율을 파악할 수 있습니다.

퍼널 분석에는 두 가지 전환율 분석 방식이 존재합니다:

  • Step Drop Off Type: 단계별 전환율을 분석하는 방식입니다. 각 단계에서 다음 단계로 넘어가는 비율을 확인할 수 있습니다.
  • Funnel Drop Off Type: 전체단계 기준 전환율을 분석하는 방식입니다. 시작점에서 각 단계별로 전환되는 비율을 확인할 수 있습니다.

이 두 가지 방식 모두 데이터의 절대값(absolute) 형태와 비율(rate) 형태로 나눠서 분석할 수 있습니다. 이를 통해 어떤 단계에 문제가 있는지 비교하면서 파악할 수 있습니다.

퍼널 분석을 통해 마케팅 전략의 효과를 검토하고 개선할 수 있는 인사이트를 얻을 수 있습니다. 예를 들어, 특정 단계에서 이탈율이 높다면 해당 단계의 문제점을 찾아 해결하는 방식으로 퍼널의 전반적인 전환율을 개선할 수 있습니다.

루커 스튜디오 인터렉티브 퍼널 분석 차트 만들기 | Looker studio

3. 퍼널 차트 만들기

인터랙티브 퍼널 리포트를 작성하는 단계는 크게 데이터 준비, 바 차트 생성, 차트에 인터랙티브 기능 추가로 나눌 수 있습니다.

3.1 데이터 소스 연결

먼저, 데이터 소스를 연결한 후 필요한 데이터를 정리합니다. 예시는 GA4 데모 데이터를 활용 하였습니다.

계산된 필드와 매개변수 설정이 필요합니다.

3.2.1. 데이터 준비 - 매개변수

아래 이미지에 활용할 매개변수 2가지를 만들어봅시다.

  • Drop-off type : Funnel 전환 기준을 선택하는 매개변수
  • Value type : Funnel 전환 절대값 / 비율을 선택하는 매개변수

데이터 준비 - 매개변수 | Looker studio
데이터 준비 - 매개변수 | Looker studio

Drop-off type
데이터 준비 - 매개변수 | Looker studio
데이터 준비 - 매개변수 | Looker studio

Value type
데이터 준비 - 매개변수 | Looker studio
데이터 준비 - 매개변수 | Looker studio

데이터 혼합을 이후에 활용할 예정입니다. 데이터 혼합에서 매개변수 사용을 위해서는 매개변수를 측정기준으로 아래와 같이 변경하는 작업이 필요합니다.

데이터 준비 - 매개변수 | Looker studio
데이터 준비 - 매개변수 | Looker studio

3.2.2. 데이터 준비 - 계산된필드

앞서 살펴봤던 매개변수의 계산된 필드 변환을 포함하여 3가지 측정기준을 만들어 줍니다.

Drop-off type dim
데이터 준비 - 계산된필드 | Looker studio
데이터 준비 - 계산된필드 | Looker studio

Value type dim
데이터 준비 - 계산된필드 | Looker studio
데이터 준비 - 계산된필드 | Looker studio

Funnel step order #

GA4의 전자상거래 5개 이벤트를 선택하고 해당 단계의 순서를 지정하는 이벤트를 만들어줍니다.

Looker Studio 코드 1


CASE 
 WHEN 이벤트 이름 = "add_to_cart" THEN 1
 WHEN 이벤트 이름 = "add_shipping_info" THEN 2
 WHEN 이벤트 이름 = "begin_checkout" THEN 3
 WHEN 이벤트 이름 = "add_payment_info" THEN 4
 WHEN 이벤트 이름 = "purchase" THEN 5
 ELSE NULL
END
        


       

데이터 준비 - 계산된필드 | Looker studio
데이터 준비 - 계산된필드 | Looker studio

3.2.3. 데이터 준비 - 필터

GA4 – Checkout steps

앞서 정의한 5개 외 나머지 이벤트는 Null로 처리 되었습니다. 해당 이벤트는 분석에 활용하지 않을 예정이므로 필터를 이용하여 제외 처리를 해줍니다. 해당 필터는 이후 단계에서 활용하도록 하겠습니다.

  • 리소스 > 필터관리 > 필터추가
데이터 준비 - 필터 | Looker studio
데이터 준비 - 필터 | Looker studio

3.3 혼합 소스 만들기

퍼널 분석을 위해선 직전단계와 다음 단계 사용자의 차이를 구해야합니다. 다만 루커스튜디오는 단일 소스로 해당 계산을 하기가 어렵기 때문에 데이터 혼합의 교차 조인을 활용하여 단계별 유저 차이를 구하는 식을 만들 수 있습니다.

혼합소스 | Looker studio
혼합소스 | Looker studio

  • 혼합 소스 이름 : 자체 혼합
  • 왼쪽 테이블
    • 테이블 이름 : Displayed data
    • 측정기준 : Funnel step order #, Drop-off type dim, Values type dim, 이벤트 이름
    • 측정항목: 총 사용자
    • 필터 : GA4 – Checkout steps
  • 오른쪽 테이블
    • 테이블 이름 : Reference data
    • 측정기준: Funnel step order # -> 이름 변경 "참조 Funnel step order #"
    • 측정항목 : 총 사용자 -> 이름 변경 "참조 총 사용자"
    • 필터 : GA4 – Checkout steps
  • 조인 방식
    • 교차 조인

3.4 차트 구성

차트구성 | Looker studio
차트구성 | Looker studio

데이터 준비가 완료되면, '차트 추가' 메뉴에서 바 차트를 선택합니다. 바 차트를 생성한 후, X축과 Y축에 표시할 데이터를 설정합니다.

3.4.1 설정 탭

  • 데이터 소스 : 자체 혼합
  • 측정기준
    • 이벤트 이름
  • 측정항목
    • 아래 공식의 "Abs users" 차트 계산 필드, AVG 집계
    • 아래 공식의"Abs exited users" 차트 계산 필드, AVG 집계
    • 아래 공식의 “% active” 차트 계산 필드, AVG 집계
    • 아래 공식의 "% drop off" 차트 계산 필드, AVG 집계
  • 정렬
    • Funnel step order #
  • 차트 상호작용
    • 모두 해제

Abs users

Looker Studio 코드 2


IF(
 Values type dim = "Absolute values"
 ,
 Total users
 ,
 null
 )
        

Abs exited users

Looker Studio 코드 3


IF(
 Values type dim = "Absolute values"
 ,
 IF
 (
  Drop-off type dim = 'Funnel drop-off'
  ,
  IF(Ref Funnel step order = 1 AND Funnel step order != 1, (Ref Total users - Total users),null)
  ,
  IF(Ref Funnel step order = Funnel step order - 1, (Ref Total users - Total users),null)
 )
 ,
 null
 )
        


       

% active

Looker Studio 코드 4


IF(
 Values type dim != "Absolute values"
 ,
 IF
 (
  Drop-off type dim = 'Funnel drop-off'
  ,
  CASE
      WHEN Funnel step order = 1 THEN 1
      WHEN Ref Funnel step order = 1 AND Funnel step order != 1 THEN (Total users ) / Ref Total users
      ELSE NULL
  END
  ,
  CASE
      WHEN Funnel step order = 1 THEN 1
      WHEN Ref Funnel step order = Funnel step order - 1 THEN (Total users ) / Ref Total users
      ELSE NULL
  END
 )
 ,
 null
 )
        


       

% drop off

Looker Studio 코드 5


IF(
 Values type dim != "Absolute values"
 ,
 IF
 (
  Drop-off type dim = 'Funnel drop-off'
  ,
  IF(Ref Funnel step order = 1 AND Funnel step order != 1, (Ref Total users - Total users)/Ref Total users,null)
  ,
  IF(Ref Funnel step order = Funnel step order - 1, (Ref Total users - Total users)/Ref Total users,null)
 )
 ,
 null
 )
        

 

3.4.2 스타일 탭

  • 수평형
  • 누적 막대
  • 데이터 라벨 표시
  • 데이터 라벨
    • 측정항목 값, 축약 번호, 소수점 정밀도 : 1
  • 색상
    • 1번 & 3번 과 2번 & 4번 동일한 색상으로 만들기
차트구성 | Looker studio
차트구성 | Looker studio
    • 축 표시
  • 차트 간격
    • 그룹 막대 너비 : 100%
  • 범례
    • 선택안함
  • 차트 헤더
    • 표시 안 함

4. 마무리

인터랙티브 퍼널 리포트는 다양한 마케팅 시나리오에서 유용하게 활용될 수 있습니다. 예를 들어, 고객의 구매 여정을 단계별로 분석하여 각 단계에서 발생하는 이탈율을 파악하고, 이를 개선하기 위한 전략을 세울 수 있습니다.

또한, 특정 마케팅 캠페인의 성과를 분석할 때도 퍼널 리포트를 사용하면 각 채널별로 고객의 반응을 비교할 수 있습니다. 이를 통해 어떤 채널이 가장 효과적인지 파악하고, 마케팅 예산을 효율적으로 분배할 수 있습니다.

데모 보기
recent_thumbnail
GROWTH

MMP(AppsFlyer), GA4, Braze 데이터를 활용해 시각화할 때 반드시 고려해야할 사항(2)

August 21, 2024

지난 편에서는 각 솔루션별 데이터 수집 방법(바로가기)에 대해서 알아보았습니다.

MMP(AppsFlyer), GA4, Braze 데이터를 활용해 시각화할 때 반드시 고려해야 할 사항 (1) 북마크 랜딩이미지

1. Third Party 데이터 수집 자동화

2. 수집된 데이터 전처리하기

3. 시각화하기

이번에는 수집된 데이터를 활용하여 어떻게 전처리 해야 되는지 알아보겠습니다. 

각 데이터 셋들은 분석하려는 차원(dimension)을 기준으로 집계(group by)를 통해서 동일한 형태로 전처리한 후 조인 연산을 통해 데이터를 통합하는 과정이라고 생각하시면 됩니다.

마케팅 성과를 분석하기 위해서 필요한 데이터 다음과 같습니다. 

Text Color Change

(필요에 따라서 Dimension 의 개수는 추가될 수 있습니다. ex)device_category, country, 등등)

Dimension  : 날짜(일별), 유입소스(GA4 = utm_source, Appsflyer = Media_source), 캠페인

Metric :  구매수, 매출, 인스톨 수 

구매 데이터(MMP, GA4) 통합하기 

GA4가 웹, 앱 모두 트래킹을 할 수 있지만 WEB은 GA4, APP은 MMP로 성과를 합쳐서 보실 겁니다. 

GA4, Firebase는 앱과 웹 내 고객 행동 분석에 주로 쓰이는 툴이고 MMP 는 광고 성과를 측정하는 툴이니깐요

그러면 이렇게 됩니다.

<GA4 데이터 집계> - WEB

Dimension  : 날짜(일별), 세션 소스, 캠페인

Metric :  구매수, 매출

<MMP 데이터 집계> - APP

Dimension  : 날짜(일별), Media_source, 캠페인

Metric :  구매수, 매출, 인스톨 수

집계된 두개의 테이블을 UNION 다시 한번 집계를 해줍니다. 

이렇게 하면 집계된 웹앱 데이터 통합이 되었습니다. (MMP 데이터 전처리 과정은 생략)

Dimension  : 날짜(일별), Media_source, 캠페인

Metric :  구매수, 매출, 인스톨 수

브레이즈 커런츠 데이터와 구매 데이터(MMP, GA4) 연결하기

브레이즈 커런츠(braze currents)데이터는 유저 인게이지먼트 데이터입니다. 

여기에는 유저별로 어떻게 우리 서비스로 참여를 하고있는지를 기록한 데이터들이 기록되어 있으니 메시지 발송 수단별로 노출, 클릭 성과들이 들어있습니다. 하지만 우리는 성과(구매) 판단은 MMP, GA4로 해야 하므로 서로 다른 데이터들을 어떻게 통합해서 볼지를 알아보겠습니다. 

커런츠 데이터는 아래와 같이 구성이 되어있습니다. 

브레이즈 커런츠 데이터 화면 이미지

Text Color Change

(차원 데이터 생성을 위한 함수는 태블로 함수입니다)

유니크한 ID 차원 만들기

위와 같은 데이터를 일자, 메세지 발송 타입, 캠페인 or 캔버스별 발송수, 노출수, 클릭수 데이터를 집계를 하기 위해서는 유니크한 ID를 나타내는 차원 데이터를 만들어 줘야 합니다.

동일한 유저라도 캠페인, 캔버스, 베리에이션 등 다양한 형태로 타겟이 될 수 있으므로, 아래와 같이 유니크한 차원 데이터를 만들기 위해 새로운 아이디를 생성합니다. (해당 아이디는 발송 타입별로 카운트하기 위해 활용됩니다.)

차원의 이름은 원하시는대로 명명하시면 되고 저는 user_id_dispatch_id 이렇게 명명하였습니다.

-- 태블로 계산식
IFNULL([User Id],'') + '-' +
IFNULL([Campaign Id],'') + '-' +
IFNULL([Message Variation Id],'') + '-' +
IFNULL([Canvas Id],'') + '-' +
IFNULL([Canvas Variation Id],'') + '-' +
IFNULL([Canvas Step Message Variation Id],'') + '-' +
IFNULL([Dispatch Id],'')

캠페인 차원 만들기

 

다음으로 캠페인 단위로 성과를 집계할 예정이기 때문에  캠페인 차원을 만들어줘야 합니다. 

 

왜냐하면 브레이즈에는 캠페인과 캠버스로 나뉘는데 campaign_name 값이 존재하면 canvas_name 이 빈값이고 거꾸로 canvas_name 값이 존재하면 campaign_name이 빈값이기 때문입니다. 

-- 태블로 계산식
IFNULL([Campaign Name],[Canvas Name])

발송 타입별 유니크한 ID 차원 만들기

{send_type}_click 이런 식으로 차원 이름을 명명하고 아래와 같은 태블로 계산식으로 차원을 만들어줍니다.

이렇게 되면 email_click, push_click, in_app_message_click 이벤트별로 ID(user_id_dispatch_id)를 생성됩니다. 

 

-- 태블로 계산식
{ FIXED [user_id_dispatch_id],[Event Type] : COUNTD(IF CONTAINS([Event Type], 'inappmessage_click') THEN [user_id_dispatch_id] END)}

 

발송 타입 차원 만들기

최초에 S3에 적재된 currents 데이터(avro 파일)를 DW에 적재할 때 파일별 Event 구분을 위해 Event_Type 칼럼을 생성하였습니다. (이전 글을 참고해 주세요)

['users.messages.email.Open.avro',
 'users.messages.email.Click.avro',
 'users.messages.pushnotification.Send.avro',
 'users.messages.inappmessage.Click.avro',
 'users.messages.email.Delivery.avro',
 'users.messages.pushnotification.Open.avro',
 'users.messages.inappmessage.Impression.avro']

-- 태블로 계산식
IF CONTAINS([Event_Type], 'email') then 'email'
elseif CONTAINS([Event_Type], 'push') then 'push'
elseif CONTAINS([Event_Type], 'inappmessage') then 'iam' end

 

이제 집계를 위한 전처리는 완료되었습니다(세세한 전처리 과정은 생략됨)

 

이제 위에서 만들었던 차원을 가지고 집계를 합니다. 

 

일자별, send_type, campaign/canvas, device_category 별 오픈, 클릭, 노출, delivery 데이터는 아래와 같이 집계되었습니다.

Braze Currents 전처리 / 집계한 테이블 예시 화면 이미지
Braze Currents 전처리 / 집계한 테이블 예시

 

통합된  GA4 / MMP 데이터와 커런츠 데이터를 통합해야 되는 과정이 또 남았습니다.

 

어떻게 이 두 데이터를 엮어야 될까요? 

 

조인키를 위에서 집계한 차원 데이터로 잡고 Full Outer Join으로 데이터를 조인합니다.

 

이유는 특정 날짜에 브레이즈 커런츠 데이터는 존재하는데 성과 데이터(GA4, MMP) 데이터가 존재하지 않는다면 매칭될 수 없으니 누락이 되어버립니다. 거꾸로 성과 데이터(GA4, MMP) 데이터가 존재하는데 브레이즈 커런츠 데이터가 존재하지 않을 경우 누락이 되어버리기 때문입니다. 

 

광고 성과 데이터 전처리하는 예시를 통해 Full Outer JOIN 이 어떻게 데이터를 처리되는지 예시를 통해 잠깐 확인해 보겠습니다

 

2024년 1월 1일 twitter 채널의 e 캠페인에서 비용이 1000원 소진했습니다. 그런데 GA4, MMP 데이터에는 해당 광고 채널의 캠페인에서 전환이 아예 일어나질 않았습니다. 하지만 비용이 발생했기 때문에 이 데이터를 버릴 수는 없겠죠? 무조건 살려야 됩니다. 

 

거꾸로 광고 데이터에서 비용은 발생하지 않았는데 Attribution Window로 인해 전환이 발생했습니다. 이것도 버릴 수 없겠죠? 

이 두 데이터에서 LEFT JOIN 또는 RIGHT JOIN을 수행하게 되면 조인키에 대응하지 않은 데이터는 매칭이 안되어 누락이 되어 버립니다. 이를 방지하기 위해서 INNER, LEFT OUTER, RIGHT OUTER 조인 집합을 생성하는 FULL OUTER JOIN을 수행합니다.

 

결과를 보면 각 테이블의 모든 데이터들이 출력이 되는 걸 알 수 있습니다. 

 

Full Outer Join 예시 이미지
Full Outer Join 예시

 

본론으로 돌아와서! 

 

Full Outer Join을 수행하기 전에 앞서 GA4, MMP 데이터를 합친 후 우리는 CRM 데이터만 필요하기 때문에 CRM 데이터만 필터를 합니다.

 

이제 Braze Current 데이터와 성과 데이터(GA4, MMP)를 날짜, 유입소스명, 캠페인명을 조인키로 두고 Full Outer Join 을 수행합니다.(분석하고자 하는 차원데이터가 추가로 더 있다면 추가로 필요한 차원도 조인키로 활용하시면 됩니다.)

 

이와 같은 방식으로 Paid 성과 데이터를 전처리 할 때도 위와 같은 방법으로 수행하면 됩니다.

 

데이터를 전처리 할 때 중요한 건 분석하고자 하는 결과물을 먼저 그려본 뒤에 결과를 도출하기 위해서 각 테이블을 어떻게 만들어 갈 것인지 생각하면서 만들어가면 됩니다. 실제로 전처리하다 보면 자잘하게 처리해야 되는 부분이 상당히 많습니다.

 

특히 데이터를 통합하기 위해서는 무엇보다 네이밍 컨벤션이 가장 중요한 점은 강조하지 않을 수 없습니다.

데이터 수집까지 잘했는데 캠페인 네이밍 컨벤션이 서로 다르다?.. 데이터 통합은 불가능합니다.. 

 

네이밍 컨벤션은 말 그대로 명명 규칙입니다. 

 

위에서 언급한 대로 우리가 데이터 통합을 위해 차원 데이터를 조인키로 활용한다고 했었는데 캠페인 차원이 MMP, GA4, Braze or 광고 데이터가 모두 다르면 안 되겠죠? 아래와 같이 통일을 시켜야만 데이터를 연결할 수 있습니다.

MMP, GA4 데이터 네이밍 컨벤션 예시 표

 

여기까지 마케팅 데이터 수집부터 전처리 과정까지 알아보았습니다.

 

다음 글에서는 이 데이터를 활용해서 시각화 하는 방법을 살펴보겠습니다. 

recent_thumbnail
EVENT

[종료] 브레이즈 개인화 마스터 클래스 어드밴스 모집!

August 14, 2024

Braze Personalization Master Class Advanced 메인 썸네일
Braze Personalization Master Class Advanced 소개 이미지

[Martinee X Braze]

Braze Personalization Master Class Advanced는 Braze 도입을 고민하고 계시거나 도입 후 잘 활용하고 싶으신 고객사를 대상으로 Braze 개인화 기능인 Personalization 활용 노하우를 공유하는 교육 세미나입니다.

브레이즈 개인화 기능, 여러분도 잘 활용할 수 있습니다.

“Braze 도입은 했는데.. 어디서부터 어떻게 해야 하지?”
“Braze 개인화, 더 깊고 세부적으로 사용하려면 개발이 필요하지는 않을까?”

Braze 개인화 기능, 여러분도 개발없이 전문가처럼 매우 세부적으로 활용할 수 있습니다.

이번 세션에서는 Braze 개인화 단계 중 Liquid와 Connected Contents를 활용하여 심화 켐페인 실습을 진행하여 충분히 실무에 활용할 수 있도록 하였으며,

성공적인 CRM 캠페인을 위한 다양한 CRM 캠페인 사례들을 함께 확인해봅니다.

마티니와 함께한 고객사

마티니와 함께한 고객사 로고 모음 이미지_버거킹, 오늘의집, 무신사, KFC, 쏘카, 알라미, 발란, 칼하트, LG전자, 넷마블, 크래프톤, 머스트잇, 동원F&B, 이랜드폴더, 네오위즈, IBK기업은행, 밀리의서재

마티니는 버거킹, 오늘의집, 무신사, KFC, 쏘카, 알라미(딜라이트룸), 발란, 칼하트, LG전자, 넷마블, 크래프톤, 머스트잇, 동원F&B, 이랜드폴더, 네오위즈, IBK기업은행, 밀리의서재 이외에도 다양한 고객사와 여정을 함께하고 있습니다.

실무에 바로 적용할 수 있는 활용 노하우, 마티니와 함께한 고객사들이 만족하는 이유입니다.

참여했던 고객사들의 생생한 후기

Braze Personalization Master Class Advanced 참여 고객사 후기

지난 브레이즈 부트캠프에 참여해주신 분들의 생생한 후기를 확인해보세요.

“ 실제 사용 사례에 대해 많이 들을 수 있어서 좋았고 브레이즈 시현 과정을 볼 수 있어서 좋았습니다. “
“ 라이브 데모를 통해 어떻게 활용하는지 상세하게 알 수 있었습니다. “
“CRM 고도화에 Braze가 어떻게 기여할 수 있을지에 대한 궁금증을 해소할 수 있었습니다. “
“Braze 개인화를 위한 Liquid의 개념과 구조 설명이 있어서 이해하기 좋았습니다. “

이런 분이 오시면 좋아요

Braze Personalization Master Class Advanced 추천 대상
  • Braze 도입 후 개인화 기능을 활용해보고 싶으신 분
  • 개발없이 Braze 개인화 기능을 전문적으로 활용하고 싶으신 분
  • Braze 개인화 기능으로 캠페인 기획부터 성과 분석까지 해보고 싶으신 분
  • 유저 개개인에게 최적화된 개인화 메시지를 발송하고 싶으신 분

브레이즈를 잘 활용하면?

이런 것들이 가능해요

Braze Personalization Master Class Advanced 브레이즈 활용이점
  • 고객 특성에 따른 개인화 메시지를 구성하고 최적의 시점에 발송할 수 있습니다.
  • 웹과 앱에서의 고객 여정 경우의 수를 확인하고 그에 따른 맞춤 캠페인 기획이 가능합니다.
  • 유저의 이탈 시점과 경로를 확인하여 재방문 시킬 수 있는 캠페인 기획이 가능합니다.
  • 다양한 API를 활용하여 트리거 기반으로 알림 및 메시지 자동화를 구축할 수 있습니다.

세션 커리큘럼

Braze Personalization Master Class Advanced 연사자 소개 및 커리큘럼

Braze Personalization Master Class | 이건희 연사, Martinee CRM Team Lead

  • Personalization Master Advanced
    • Liquid, Connected Content를 활용한 심화된 캠페인 사례를 배웁니다.
    • 개인화가 적용된 다양한 캠페인 사례를 확인합니다.

추후 진행예정

11월

Braze Automation Master Class

  • Automation Planning Deep Dive
    • 캠페인/캔버스 기획에서 중요한 포인트들을 점검합니다.
    • 목적별로 다양한 캠페인 기획 사례를 살펴봅니다.

Braze Data Analytics Master Class

  • Data Analytics / Utilization
    • CRM 캠페인의 다양한 분석 방법을 확인합니다.
    • Braze의 데이터 활용을 극대화하는 방법들을 살펴봅니다.

When

2024년 8월 26일 월요일 오후 7시 - 9시‍

Where

서초구 서초대로 38길 12 마제스타시티 타워2, 12층 마티니 오피스

  • 서초역 4번 출구 도보 5분 소요

네이버 지도로 확인하기

Braze Personalization Master Class Advanced 참여자 혜택 및 안내사항

참여자 혜택

📢 혜택 1. Martinee CRM 커뮤니티 초대

📢 혜택 2. 마티니 CRM POC 추첨 무료 1회 제공

안내사항

  • 참가 인원이 한정되어 있어 별도 참석 확정 연락을 드릴 예정입니다.
  • 실습이 포함된 교육으로 개인 노트북 지참이 필요합니다.
  • 주차권 제공 가능하며 리셉션 데스크로 문의 부탁드립니다.
  • 신청시 기입한 이메일이 회사 이메일이 아닐 경우 선정이 불가할 수 있습니다.
  • 참석자분들에게 간단한 음식이 제공될 예정입니다.
  • CRM POC의 경우 추첨을 통해 선정되신 분께 별도로 안내드릴 예정입니다.

Contact

mkt@martinee.io

CRM 캠페인의 성과와 비즈니스 개선을 마티니와 함께 이뤄보세요!

지난 브레이즈 개인화 마스터 클래스 보러가기!

recent_thumbnail
EVENT

[종료] Martinee 2024 Recap 행사

August 6, 2024

2024 Maritnee Recap!

Maritnee 2024 Recap 행사 개요 이미지

행사명 : Maritnee 2024 Recap 행사

장소: 서울 서초구 서초대로38길 12 마제스타시티 타워2 12F

일시: 2024년 8월 20일 화요일 오후 3시

대상:

  • 마케팅 인사이트를 얻고 싶으신 분
  • 마티니만의 CRM & 그로스 마케팅 성공 사례가 궁금하신 분
  • MGS 2024에서의 Martinee & AB180 & Snowflake 세션을 다시 듣고 싶으신 분

CRM과 그로스 마케팅 인사이트를 놓치지 마세요

Martinee 2024 Recap 스피커 소개 1
Martinee 2024 Recap 스피커 소개 2

MGS 2024에서 진행했던 마티니 & AB180 & Snowflake의 세션을 한 번에 확인해보세요.

CRM과 그로스 마케팅을 바탕으로 마티니가 직접 경험하고 이끌었던 실제 성공 사례, AB180의 마케터를 위한 SKAN 활용법과 Snowflake의 마케팅 데이터 클라우드로 비즈니스 성장을 가속화하는 방법을 공유합니다.

  • ‘CRM 마케팅에서의 고민과 문제들을 정리하고 마티니가 찾아낸 인사이트와 해결방안’
  • ‘Amplitude를 가지고 BKR과 마티니가 만드는 데이터 혁신의 비밀’
  • ‘iOS 마케터를 위한 SKAN 100%  활용하기’
  • ‘'감'이 아닌 '데이터'로 : Snowflake로 데이터 기반 인사이트 발견하기’

MGS 2024 현장에서 공유해드린 마케팅 인사이트와 성공 사례에 대해 확인할 수 있는 기회를 놓치지 마세요!

타임 테이블

Martinee 2024 Recap 타임라인

15:00 - 15:15 Martinee Marketing Intelligence 2024 | 이선규 Martinee CEO

15:15 - 15:45 버거킹도 Amplitude를 쓴다고? 어떻게 쓰는데? | 이재철 Martinee Growth Team Lead

15:45 - 16:15 "우리 잘하고 있는건가?": CRM 마케터들이 궁금해하는 고민과 해결방안 | 이건희 Martinee CRM Team Lead

16:15 - 16:25 Break Time

16:25 - 16:55 iOS 마케터를 위한 SKAN 100%  활용하기 | 한예선 Airbridge & AB180 Business Development Manager

16:55 - 17:25 감'이 아닌 '데이터'로 : Snowflake로 데이터 기반 인사이트 발견하기 | 이수현 Snowflake Tech Evangelist

17:25 - 18:00 Networking & QnA

안내사항

Martinee 2024 Recap 안내사항

- 자리가 한정되어 있어 별도로 선정 안내를 드릴 예정입니다.

- 주차권 제공 가능하며 리셉션 데스크 문의바랍니다.

- 참석자분들에게 간단한 음식이 제공됩니다.

recent_thumbnail
GROWTH

2. 웍스아웃: 퍼포먼스 마케팅 광고성과 대시보드

July 29, 2024

1. 개념 설명

쿠키(Cookie)란 사용자가 웹사이트를 방문할 때마다 웹 브라우저를 통해 인터넷 사용자의 컴퓨터나 다른 기기에 설치되는 기록 정보 파일을 뜻합니다. 이는 퍼포먼스 마케팅의 필수도구로써 마케팅 활동의 세부적인 추적, 개인화 및 최적화를 가능하게 했습니다.

퍼포먼스 마케팅에서 구체적인 쿠키의 기능은 다음과 같습니다.

1. 사용자 행동 추적

  • 쿠키를 통해 사용자가 방문하는 페이지, 방문 시간, 조회한 페이지 순서를 추적하고,클릭, 구매 등의 액션을 기록하여 사용자 경험에 대한 통찰력을 제공할 수 있습니다.

2. 개인화

  • 쿠키를 통해 사용자의 관심분야 및 과거 행동을 기반으로 개인화된 마케팅을 제공할 수 있습니다.

3. 리타겟팅

  • 쿠키를 통해 이전에 방문한 고객 중 원하는 행동을 하지 않은 유저에게 재방문을 유도하여 다시 행동을 하도록 유도할 수 있습니다.

4. A/B 테스트 및 최적화

  • 쿠키를 통해 유저를 분류하여 다양한 테스트 그룹에 할당하고, 유저의 행동을 추적하는데 사용합니다. 이를 통해 마케팅 담당자는 웹페이지 또는 광고의 여러 버전을 실험하고 이를 통해 효율을 최적화할 수 있습니다.

하지만 데이터 보호 규정을 시작으로 데이터 보호를 강화하기 위한 전세계의 흐름이 있었고, 애플을 시작으로 구글 폭스 등 많은 웹 브라우저 회사들이 쿠키 제공 중단을 선언헀습니다.

쿠기 제공이 중단된다면, 기존의 쿠키를 이용해 진행하던 기능들을 더 이상 진행할 수 없게 됩니다. 그 결과 각 매체의 효율이 감소하고 신규 고객을 획득하는데 필요한 비용이 증가할 것으로 예상됩니다. 구글이 쿠키의 지원 중단 시점을 2025년으로 연기했다고는 하지만, 마케터들은 선택이 아닌 필수로 기존 광고 방식에 변화가 필요한 상황입니다.

2. 진행배경

쿠키 리스 상황에서 발생하는 여러 문제들에 대비하기 위해 진행할 수 있는 여러 방법들이 있습니다. 그 중 고객사에서는 현 상황에서 다양한 매체를 활용하기보다 최고의 효율을 낼 수 있는 매체를 선별해서 효율이 좋은 매체에 집중하고자 합니다. 이를 위해 각 광고매체의 성과를 실시간으로 모니터링할 수 있는 대시보드가 필요했습니다.

광고채널 데이터에서 태블로 시각화

태블로를 통해 다양한 광고채널에 분산되어 모니터링이 어려웠던 지표들을 태블로를 통해 하나의 대시보드에서 관리함으로써 어느 채널의 어떤 광고가 효율이 좋은지를 빠르게 파악하고, 이를 통해 어떤 채널에 더 예산을 증가하거나 감소해야 할지에 대한 의사결정을 하는데 활용할 수 있습니다.

3. 진행과정

대시보드를 제작하기 위한 과정은 크게 환경점검, 데이터 수집, 데이터 저장, 데이터 시각화의 4단계로 구분할 수 있습니다.

대시보드 제작을 위한 4가지 Step

1) 환경점검

첫 번째 환경 점검 단계는 대시보드 구축을 위한 대시보드 기획단계입니다. 이 단계에서는 데이터의 출처를 정의하고, 데이터 소스부터 시각화툴인 태블로까지 이어지는 데이터 파이프라인을 그립니다. 최종적으로 대시보드에서 어떤 데이터를 대시보드에 구현하고, 이를 어떤 방식으로 시각화할지에 대한 대시보드 기획단계라고 할 수 있습니다.

환경점검 과정 3단계

해당 광고성과 대시보드를 구현하기 위해서는 광고채널로부터 나오는 광고데이터를 데이터 소스로 정의하고, 이를 통합하는 과정이 필요합니다. 이를 위한 첫 번째 단계로 Meta, Google Ads등 여러 광고 채널에서 나온 데이터를 ETL툴인 Funnel io에서 통합합니다. 이후 MMP인 에어브릿지의 데이터를 통합해 이를 하나의 구글 스프레드시트 적재합니다. 최종적으로 태블로를 통해 시각화하는 방식으로 데이터 파이프라인을 구현했습니다.

*참고) ETL이란?
추출, 전환, 적재(ETL)는 다양한 소스의 데이터를 데이터 웨어하우스라고 부르는 대형 중앙 집중식 리포지토리에 결합하는 과정

데이터 파이프 라인 구조 예시

해당 스텝으로 데이터 파이프라인을 구현했을 때의 장점은 어디서부터 데이터가 들어오게 되고, 문제가 발생했을 때 문제 발생원인을 직관적으로 확인가능하다는 점입니다.

2) 데이터수집

두 번째 데이터 수집 단계는 실질적으로 필요한 데이터를 정의하는 단계입니다.

UTM 및 parameter를 기반한 광고성과 추적을 위한 계층 구조인 네이밍 컨벤션(Naming Convention)을 정의하고 이를 통해 광고의 위계질서를 설정합니다. 해당 데이터를 통해 광고성과 데이터 정의하고 수집할 수 있습니다.

네이밍 컨벤션(Naming Convention) 예시
네이밍 컨벤션(Naming Convention) 예시

네이밍 컨벤션(Naming Convention) 정의를 완료했다면, 이를 토대로 데이터 스키마를 작성해야 합니다. 데이터 스키마란 데이터베이스의 구조와 제약조건에 관해 기술한 것을 뜻합니다. 데이터 이름 및 형태(ex. 숫자/문자)에 대해 정의함으로써 향후 데이터 스키마 하나만 확인해도 어떤 데이터 형태인지 파악할 수 있도록 합니다.

테이블명 열순서 열이름 데이터형식 설명 예시값
user_property 1 event_time_KST DATETIME 이벤트 타임 (한국시간) 2024-07-01 09:01:12
2 user_id STRING 유저아이디 "2920038”
3 referral_domain STRING 유입도메인 “@#$.com”
4 utm_source STRING UTM 소스 “airbridge.websdk”
5 utm_medium STRING UTM 매체 “fb”, “social”
6 utm_campaign STRING UTM 캠페인 “파이널세일”

3) 데이터저장

세 번째 데이터 저장 단계는 네이밍 컨벤션(Naming Convention)과 데이터 스키마를 통해 정의한 데이터를 저장하는 단계입니다.

광고성과 확인 시, 데이터의 정확성을 확보하고, 다양한 광고채널의 기여도를 정확하게 측정하기 위해 미디어 데이터 뿐만 아니라 MMP 데이터를 함께 확인해야 합니다. 이를 위해 미디어(메타, 구글애즈,..)와 MMP의 소스를 조인하는 과정이 필요합니다. 이를 위해 키값을 정의하고, 해당 키값을 기준으로 데이터를 조인합니다.

데이터 저장 단계 예시

4) 데이터시각화

마지막 데이터 시각화 단계는 정의된 데이터를 바탕으로 대시보드를 구현하는 단계입니다.

<1> 대시보드 기획안

대시보드 구현에 앞서 퍼포먼스마케터들과 협의를 진행합니다. 실제 최종 대시보드를 사용할 퍼포먼스마케터들과의 논의를 통해 대시보드의 형태 및 기능을 구체화할 수 있습니다.

대시보드 기획안 예시

<2> 최종 대시보드

마지막으로 확정된 기획안을 토대로 태블로를 통해 최종 대시보드를 구현하면 대시보드 제작과정이 마무리됩니다.

퍼포먼스 광고성과 대시보드 구현 예시

recent_thumbnail
FULL FUNNEL

Basic KPI 대시보드 | 루커스튜디오 템플릿

July 19, 2024

루커스튜디오 Basic KPI 대시보드 메인 이미지
BASIC KPI 대시보드 | 루커스튜디오 템플릿

BASIC KPI 대시보드 | 루커스튜디오 템플릿
BASIC KPI 대시보드 | 루커스튜디오 템플릿

KPI 대시보드 템플릿을 활용하여 비즈니스 주요 지표를 확인하며 데이터 기반 의사결정에 활용할 수 있습니다. 매출, 이익, 구매수 등 특히 지역별 구매 관점의 분석을 통해 실행 가능한 인사이트를 제공합니다.

KPI 대시보드 템플릿

💡루커스튜디오 URL

대시보드 데모 보기

사용 방법

1. 스프레드시트 사본 만들기

스프레드 시트 사본 만들기
BASIC KPI 대시보드 | 루커스튜디오 템플릿

2. 루커스튜디오 사본 만들기 클릭

루커스튜디오 대시보드 사본 만들기
BASIC KPI 대시보드 | 루커스튜디오 템플릿

  • 새 데이터 소스의 경우 기존에 만든 스프레드시트가 대시보드에 사용되지 않았다면 리스트에 뜨지 않습니다. 그냥 아무 데이터나 선택하고 보고서 복사를 진행합니다.

보고서 복사 화면
BASIC KPI 대시보드 | 루커스튜디오 템플릿

3. 리소스 → 추가된 데이터 소스 관리 클릭

추가된 데이터 소스 관리 화면
BASIC KPI 대시보드 | 루커스튜디오 템플릿

4. 작업 → 수정 클릭

작업 → 수정 클릭 화면
BASIC KPI 대시보드 | 루커스튜디오 템플릿

5. 루커스튜디오와 스프레드시트 연동 승인 진행

  • 스프레드 시트 소유 계정과 루커스튜디오 소유 계정이 일치해야 합니다.
루커스튜디오와 스프레드시트 연동 화면
BASIC KPI 대시보드 | 루커스튜디오 템플릿

6. 앞서 사본을 만들었던 파일 찾아서 연결

  • 소유한 문서함 → 스프레드시트(Sample KPI Superstore) → 워크시트(Order) → 다시연결
스프레드 시트 연결 화면
BASIC KPI 대시보드 | 루커스튜디오 템플릿

7. 데이터 새로고침하면 데이터 확인이 됩니다.

  • 이후 스프레드시트의 복사본의 형식에 맞춰서 가지고 계신 KPI 수치를 업데이트 하면 해당 대시보드에서 변경된 데이터로 활용 가능합니다.
데이터 새로고침 확인 화면
BASIC KPI 대시보드 | 루커스튜디오 템플릿

활용 방법

  • 지난달 대비 이번달 매출액은?
  • 매출 대비 순이익은?
  • 구매수와 상품총 구매수의 트렌드 차이는?
  • 연도별 월별 매출 트렌드의 차이는?
  • 지역별 매출액의 차이는?

원본 포스팅 링크

Basic KPI 대시보드 | 루커스튜디오 템플릿

recent_thumbnail
GROWTH

1. 웍스아웃: 프로모션 대시보드

July 18, 2024

0. 개념설명

프로모션 분석이란?

프로모션 분석은 마케팅 캠페인의 일환으로 진행된 다양한 프로모션 활동들의 효과를 평가하고 측정하는 과정입니다. 이 과정을 통해 기업은 프로모션 활동이 소비자의 구매 결정, 브랜드 인식, 시장 점유율 등에 미치는 영향을 분석할 수 있습니다. 프로모션 분석을 위해 판매 데이터, 소비자 행동 데이터, 온라인 트래픽 데이터 등 다양한 데이터 소스를 활용할 수 있습니다.

프로모션 분석의 필요성

프로모션 분석은 기업이 자원을 효율적으로 배분하고, 마케팅 목표를 달성하기 위해 필수적인 과정입니다. 이를 통해 기업은 다음과 같은 이점을 얻을 수 있습니다.

  • 효과적인 프로모션 전략 수립: 어떤 프로모션이 고객의 구매를 유도하고, 브랜드 인지도를 높이는 데 효과적인지 파악할 수 있습니다.
  • ROI 최적화: 프로모션에 대한 투자 대비 수익률(ROI)을 측정하고, 마케팅 예산을 더 효과적인 프로모션에 집중할 수 있습니다.
  • 시장 이해도 향상: 소비자 반응을 분석함으로써 시장의 현재 요구와 트렌드를 더 잘 이해할 수 있습니다.
  • 경쟁력 강화: 경쟁사 대비 우위를 점할 수 있는 마케팅 전략을 개발하고 실행할 수 있습니다.

개별 프로모션 분석 vs 통합 프로모션 분석

  • 개별 프로모션 분석
    • 특징
      • 한 번에 하나의 프로모션 활동만 평가합니다.
      • 구체적인 프로모션의 성공 여부와 직접적인 효과를 분석합니다.
    • 장점
      • 간단하고 명확한 결과 제공
      • 특정 프로모션의 직접적인 효과를 빠르게 평가 가능
    • 단점
      • 다른 마케팅 활동과의 상호작용을 고려하지 않음
      • 장기적인 효과나 전체적인 마케팅 전략과의 연계성 부족
  • 통합 프로모션 분석
    • 특징
      • 여러 프로모션 활동을 함께 분석하여 전체적인 마케팅 전략의 효과를 평가합니다.
      • 프로모션 간의 상호작용 및 시너지 효과를 고려합니다.
    • 장점
      • 전략적인 의사결정 지원
      • 장기적인 브랜드 가치와 고객 관계를 고려한 분석
      • 장기적인 효과나 전체적인 마케팅 전략과의 상호작용 이해 가능

개별 프로모션 분석과 통합 프로모션 분석을 함께 분석해야 하는 이유

개별 프로모션 분석과 통합 프로모션 분석을 함께 수행함으로써, 보다 정교하고 효과적인 마케팅 전략을 개발할 수 있으며, 이는 최종적으로 기업의 성장과 수익성 향상에 기여하게 됩니다.

1. 전체적인 마케팅 전략의 효율성 평가

개별 프로모션 분석을 통해 특정 프로모션의 성공 여부를 파악할 수 있지만, 통합 프로모션 분석을 함께 수행하면 여러 프로모션 간의 상호작용과 그 영향을 이해할 수 있습니다. 이는 전체 마케팅 전략의 효율성을 평가하는 데 중요합니다.

2. 다채널 프로모션 전략의 최적화

현대 마케팅은 다양한 채널을 통해 이루어집니다. 개별 프로모션 분석과 통합 분석을 병행함으로써, 각 채널의 성과를 정확히 파악하고, 채널 간 시너지를 극대화하는 전략을 수립할 수 있습니다.

3. 고객 행동의 종합적 이해

고객은 다양한 프로모션에 노출되며, 이러한 노출이 고객의 구매 결정에 복합적으로 작용합니다. 개별 프로모션 분석과 통합 분석을 결합함으로써, 고객 행동의 더 깊은 이해를 도모할 수 있습니다.

4. 마케팅 자원의 효율적 배분

통합 프로모션 분석을 통해 얻은 인사이트는 마케팅 자원의 효율적인 배분을 가능하게 합니다. 각 프로모션의 효과를 개별적으로뿐만 아니라 전체적인 관점에서 평가함으로써, 예산을 더 효과적인 프로모션에 집중할 수 있습니다.

5. 장기적 마케팅 전략 수립

개별 프로모션의 성공은 단기적인 성과에 초점을 맞출 수 있지만, 통합 프로모션 분석은 장기적인 관점에서 마케팅 전략을 수립하는 데 도움을 줍니다. 다양한 프로모션의 장기적인 영향력과 지속 가능성을 평가할 수 있습니다.

6. 경쟁 우위 확보

통합 프로모션 분석을 통해 시장 내 경쟁 상황과 자사의 위치를 종합적으로 이해하고, 경쟁 우위를 확보할 수 있는 전략을 수립할 수 있습니다. 이는 경쟁사 대비 우위를 점하는 데 중요한 역할을 합니다.

1. 진행배경

고객사 상황 및 해당 대시보드를 제작하게된 이유

고객사에서는 프로모션 분석 진행 시 앰플리튜드를 통한 단일 프로모션 위주의 분석만을 진행했었습니다.

단일 프로모션 분석 진행 예시

앞서 언급했듯이 단일 프로모션 분석만 진행하게 된다면 결과적으로 장기적인 효과나 전체적인 마케팅 전략과의 연계성이 부족해지는 문제가 있습니다.

이러한 문제를 해결하기위해 프로모션을 통합적으로 확인하는 것에 대한 필요성이 대두되었습니다. 먼저, 통합 프로모션 분석을 위해 1차적으로 앰플리튜드를 통해 얻은 개별 프로모션별 데이터를 스프레드시트에서 취합해 프로모션들끼리 비교하며 인사이트를 도출했습니다.

프로모션 통합 분석 시트 예시

하지만 시트를 통해 프로모션을 비교 분석하는 것에는 크게 2가지 정도의 한계가 있었습니다.첫째, 프로모션이 진행될 때마다 데이터를 확인하고, 직접 시트에 옮기는 작업을 해야 하기 때문에 자동화가 어렵다는 점입니다.둘째, 시트에 텍스트로만 적혀있다보니 해당 데이터가 무엇을 의미하는지 직관적으로 인지하기가 어렵다는 점입니다.이러한 한계를 극복하기 위해 고안한 것이 전체 프로모션을 한눈에 파악할 수 있는 대시보드를 구현하는 것이었습니다.

2. 진행과정

대시보드는 태블로(Tableau)를 사용하여 구현했습니다.

태블로(Tableau) 로고

태블로는 데이터를 분석하고 시각적으로 표시할 수 있는 비즈니스 인텔리전스(BI)툴입니다. 태블로를 통해 대시보드를 제작했을 때의 장점은 다음과 같습니다.

1. 여러 raw 데이터 통합: 태블로는 스프레드시트, 데이터베이스, 클라우드 서비스 및 빅데이터 플랫폼과 같은 다양한 데이터 원본들을 원활하게 통합됩니다. 이러한 통합을 통해 다양한 소스의 데이터를 연결 가능하게 하여 데이터 사일로를 해결하고 포괄적인 분석을 가능하게 합니다.데이터 사일로(Data Silo*)**란? 서로 분리되어 기업의 다른 부서에서 액세스할 수 없는 데이터 스토리지 및 관리 시스템을 의미하며, 이는 전사관점의 의사결정을 방해하고, 비효율성이 증가시킵니다.

  • 예시: Excel 스프레드시트에 저장된 판매 데이터와 SQL 데이터베이스에 저장된 고객 데이터가 있다고 가정합니다. Tableau는 두 원본에 동시에 연결할 수 있으므로 데이터를 혼합하고 시각화하여 판매와 고객 인구 통계 간의 관계에 대한 인사이트를 얻을 수 있습니다.

2. 실시간 데이터 시각화: 태블로는 라이브 데이터베이스 및 스트리밍 데이터를 비롯한 다양한 데이터 원본에 연결하여 실시간으로 데이터 업데이트할 수 있습니다. 이 기능을 사용하면 변경되는 데이터를 빠르게 모니터링하고 분석하여 빠른 의사 결정을 위한 시기적절한 통찰력을 제공할 수 있습니다.

3. 다양한 시각화 옵션: 태블로는 막대 차트, 선 차트, 산점도, 지도 등을 포함하여 다양한 시각화 옵션을 제공합니다. 정보를 효과적으로 전달하기 위해 데이터에 가장 적합한 시각화 유형을 선택할 수 있습니다.

4. 대화형 대시보드: Tableau를 사용하면 사용자가 직접 데이터를 탐색하고 상호 작용할 수 있는 고도의 대화형 대시보드를 만들 수 있습니다. 사용자는 세부 정보를 드릴다운하고, 데이터를 필터링하고, 임시 분석을 수행하여 데이터 탐색의 깊이를 향상할 수 있습니다.

2-1. 대시보드 스케치

통합 프로모션 분석을 위해 정의한 스케치입니다. 해당 스케치는 피그마(Figma)를 통해 작업했습니다. 스케치를 피그마로 제작한 이유는 여러가지가 있는데, 그 중 가장 중요한 이유는 피그마가 다양한 디자인 도구와 기능을 제공하기 때문에 원하는 디자인을 쉽고 효율적으로 제작할 수 있기 때문이었습니다.

웍스아웃 프로모션 분석 대시보드

스케치 대시보드를 기준으로 필요한 데이터를 정리해보면 데이터는 크게 3가지로 분류할 수 있습니다.

1. 프로모션 데이터

2. 매출 데이터

3. CRM 데이터

프로모션명, 진행일자, 분류, 컨셉 등 프로모션 진행 관련 기본 정보 및 프로모션 관련 아이템 정보가 프로모션 데이터에 해당하며, 각 프로모션에 관련된 실제 결제 정보가 매출 데이터에 해당합니다. 마지막으로 유저들에게 발송된 메시지의 발송일 및 캠페인명, 발송수 등이 CRM 데이터에 해당합니다.

웍스아웃 프로모션 분석 대시보드 - 프로모션 및 매출 정보 확인

2-2. 필요 데이터 정의 및 추출

필요 데이터 정의 및 추출

필요 데이터 정의

다음으로 앞서 정리한 데이터를 좀 더 구체적으로 정리합니다. 각 항목별 필요한 정보가 정확히 무엇인지, 해당 데이터는 형태로 관리되어야 하는지를 비롯해 각 데이터를 연결하기 위해 어떤 컬럼을 키값으로 사용해야 하는지 등을 파악하여 정리합니다.

필요 데이터 정의 및 분류 예시

이때 테이블 색상에 차이를 두어 각 데이터가 어떤 소스에서 관리되는지 직관적으로 파악할 수 있도록 합니다.

데이터 테이블 색상 차이 설명

데이터 추출 요청 및 추출

필요 데이터 정의를 완료했다면, 데이터 추출을 위해 해당 데이터에 대해 알맞은 형태로 적재를 요청하는 단계가 필요합니다. 효율적인 작업을 위해 원하는 이벤트 및 세부 항목(*이벤트 프로퍼티, 유저 프로퍼티, 적재형식, 적재기준일, 요청사유 등) 관련 내용을 최대한 상세하게 기입합니다.

데이터 추출 요청 예시

원하는 이벤트 및 세부 항목을 작성한 다음에 해당 내용을 정확히 어떤 형태로 적재되기 원하는지를 보여주는 샘플을 함께 작성합니다.

이벤트 데이터 샘플링 예시

2-3. 데이터 연결

Amplitude → Bigquery → Tableau

이제 데이터 연결을 진행해야 합니다. 해당 프로젝트에는 구글 스프레드시트, 엑셀 파일, 구글 클라우드(빅쿼리)의 소스가 사용되었습니다. 저는 그 중 ‘구글 클라우드’에 초점을 맞추어 데이터 연결과정에 대해 설명하려고 합니다.

앰플리튜드에서 태블로로의 데이터 전송

구글 클라우드를 사용한 이유는 무엇일까요? 그 이유는 앰플리튜드(Amplitude)에 있는 매출 데이터를 연결하기 위함입니다. 앰플리튜드는 그 자체로 사용성이 높이며, 매출 데이터를 비롯하여 많은 데이터를 손쉽게 확인할 수 있는 툴입니다.

하지만 지금과 같이 더 많은 내용을 확인하기 위해서는 다른 로데이터와 결합을 해서 데이터를 확인하는 과정이 필요합니다. 이 때, 앰플리튜드에서 태블로로 데이터를 바로 전달할 수는 없습니다.

앰플리튜드에서 태블로로의 데이터 전송 시 필요사항

태블로로 데이터를 전송하기 위해서는 앰플리튜드의 로데이터를 가공하여 알맞은 형태로 테이블을 가공해주는 선행작업이 필요합니다. 앰플리튜드와 연동이 가능할 뿐만아니라 태블로와의 연동도 가능해야 하며 무엇보다 앰플리튜드로부터 전달받은 로데이터를 가공할 수 있는 플랫폼이여야합니다.

이 작업을 수행할 수 있는 플랫폼은 무엇일까요? 저희는 이러한 요건을 모두 고려할 때 해당 작업을 수행하기에 가장 적합한 것이 Google BigQuery라고 판단했고, 이를 활용하기로 했습니다.

앰플리튜드에서 태블로로의 데이터 전송 시 필요한 구글 빅쿼리

앰플리튜드는 기본적으로 빅쿼리로 데이터를 바로 내보내는 기능을 제공합니다. 우선 해당 기능을 활용해 앰플리튜드 데이터를 빅쿼리에 내보내는 작업을 진행했습니다.

앰플리튜드에서 빅쿼리로 데이터 전송

해당 방법을 통해 데이터를 받아올 경우, 이벤트 프로퍼티가 분리된 표 형식으로 넘어오는게 아니라 json이라는 괄호 안에 키와 값형태로 구성돼 있는 포맷(*”{”~”}”)으로 데이터가 불러와지는 문제가 발생했습니다.

태블로는 표 형태의 데이터 프레임을 인식하므로, 태블로에 데이터를 연결하기 위해서는 앰플리튜드  로데이터를 전처리하는 과정이 필요했습니다.

이벤트 프로퍼티 전처리 전 모습

해당 데이터를 전처리하기 위해서는 로데이터의 형태를 파악해야 했습니다. 데이터를 확인한 결과, 텍소노미에 따라 로데이터의 구조가 다를 수 있음을 확인했습니다.

구매 이벤트의 경우 아이템 수량이 1개일 경우에는 값으로, 2개 이상일 경우에는 배열로 이벤트 프로퍼티 데이터가 들어오는 구조였습니다.

  • 아이템 수량=1인 경우
{"item_brand":"A",
"item_category":"JAJL",
"item_id":"99999",
"item_name":"GARAGEJACKET",
"item_price":"198000",
"order_id":"20240310105120687",
"total_order_items_quantity":1
…}
  • 아이템 수량=2 이상인 경우
{"item_brand":["B","C"],
"item_category":["LFOT","반팔 셔츠"],
"item_id":["88888","77777"],
"item_name":["TRAVEL COMB","CUSTOM SHIRT"],
"item_price":[18000,113000],
"total_order_items_quantity":2}

따라서 데이터 전처리를 위해서는 각 케이스별로 다른 전처리과정을 거쳐야했습니다. 아이템 수량이 1개일경우는 JSON의 값을 파싱하는 처리를 하고, 2개 이상일 경우에는 JSON의 배열을 파싱하는 처리를 진행했습니다.

해당 내용을 처리하는 쿼리문 다음과 같습니다. 케이스별로 결과 테이블이 도출되면, 두 테이블을 유니온하여 한 테이블로 합치는 작업을 진행했습니다.

WITH single_item_orders AS (
  SELECT event_time, user_id,
    JSON_VALUE(event_properties, '$.order_id') AS order_id, 
    JSON_VALUE(event_properties, '$.item_category') AS item_category, 
    JSON_VALUE(event_properties, '$.item_brand') AS item_brand, 
    JSON_VALUE(event_properties, '$.item_name') AS item_name, 
    JSON_VALUE(event_properties, '$.item_id') AS item_id,
    JSON_VALUE(event_properties, '$.item_price') AS item_price
  FROM amplitude_test.EVENTS_353961
  WHERE event_type='total_items_order_completed'
    AND JSON_VALUE(event_properties,'$.total_order_items_quantity')='1'
),
multi_item_orders AS (
  SELECT event_time, user_id,
    JSON_VALUE(event_properties,'$.order_id') AS order_id,
    item.item_category, item.item_brand, item.item_name, item.item_id, item.item_price
  FROM amplitude_test.EVENTS_353961,
    UNNEST(
      ARRAY(
        SELECT AS STRUCT 
          item_category, item_name, item_id, item_price, item_brand
        FROM 
          UNNEST(JSON_VALUE_ARRAY(event_properties,'$.item_id')) AS item_id WITH OFFSET AS pos
          JOIN UNNEST(JSON_VALUE_ARRAY(event_properties,'$.item_category')) AS item_category WITH OFFSET AS pos_cat ON pos = pos_cat
          JOIN UNNEST(JSON_VALUE_ARRAY(event_properties,'$.item_brand')) AS item_brand WITH OFFSET AS pos_br ON pos = pos_br
          JOIN UNNEST(JSON_VALUE_ARRAY(event_properties,'$.item_name')) AS item_name WITH OFFSET AS pos_name ON pos = pos_name
          JOIN UNNEST(JSON_VALUE_ARRAY(event_properties,'$.item_price')) AS item_price WITH OFFSET AS pos_price ON pos = pos_price
      )
    ) AS item
  WHERE 
    JSON_VALUE(event_properties,'$.total_order_items_quantity')!='1'
)

-- 아이템 수량= 1인 경우의 결과와 아이템 수량= 2 이상인 경우의 결과를 합치기
SELECT *
FROM single_item_orders
UNION ALL
SELECT * 
FROM multi_item_orders;

해당 작업을 완료한 결과는 다음과 같습니다.

쿼리 결과 화면

UNNEST()함수를 포함한 단계를 거쳐 데이터 전처리를 진행할 경우 JSON을 데이터 프레임 형태, 즉 테이블 형식으로 바꾸는 것은 가능했습니다.

좀 더 직관적으로 UNNEST()함수를 이해하기 위해 예시를 들어보겠습니다. name이라는 컬럼은 값이지만, preferred langauge는 배열일 경우 빅쿼리는 테이블을 왼쪽처럼 인식합니다. 즉 값으로 구성된 행에 배열로 구성된 행을 묶어두는 구조인데요, 이 묶어둔다라는 것을 nest된 상태라고 하고, 값을 배열에 맞춰서 풀어주는 행위를 unnest라고 합니다.

 unnest 적용 화면 예시

하지만 UNNEST()함수를 사용할 경우 단점이 있었습니다.이 함수는 배열 내 각 요소를 별도의 행으로 확장하는 기능을 제공하기 때문에 비정규화된 데이터나 중첩된 데이터 구조를 다룰 때 필수적입니다. 그러나 비용관리의 관점에서 주의가 필요하다는 단점이 있습니다. UNNEST() 함수는 배열 내의 각 요소를 별도의 행으로 확장하기 때문에 배열에 많은 요소가 포함되어 있을 경우, 결과 데이터 세트의 크기가 급격히 증가할 수 있습니다. 이는 쿼리 처리 시간을 늘리고 처리해야 할 데이터 양이 증가함으로써 비용이 증가하는 원인이 될 수 있으며, 처리한 데이터 양에 따라 비용이 청구되는 빅쿼리에서는 쿼리 비용의 증가로 이어질 수 있습니다.

실제 프로젝트를 진행하면서 해당 쿼리문을 사용해 약 한달 간 매 시간마다 업데이트 되도록 쿼리를 돌려본 데이터 업데이트를 진행한  결과, 총 8GB를 사용해 월 40만원 가량의 비용이 소진되었습니다. 따라서 비용 효율성 측면을 고려해 전처리를 클라우드 SQL구문이 아닌 파이썬 코드로 처리하도록 우회했습니다.

앰플리튜드의 데이터를 빅쿼리로 바로 내보내는 것이 아니라 앰플리튜드 서버를 호출하여 데이터를 받아오는 방식으로, 빅쿼리에서 로우 데이터를 쌓은 후 이를 전처리하는 방식 대신 전처리를 완료한 후 가공된 데이터를 빅쿼리에 쌓는 방식으로 변경했습니다.

Amplitude → Google Cloud Storage → Bigquery → Tableau

즉, 기존 Amplitude → Bigquery → Tableau의 단계에서 데이터 전처리를 위해 Google Cloud Storage를 추가한 Amplitude → Google Cloud Storage → Bigquery → Tableau 단계로 진행됩니다.

데이터 전처리 과정 도식화

이 작업을 위해서는 우선 앰플리튜드와 Google Cloude Storage를 연결하는 작업을 진행해주어야 합니다. 먼저 Cloud Storage에서 고객사 프로젝트 관련 Bucket을 생성합니다.

Cloud Storage Bucket 생성 화면
Cloud Storage Bucket 세부 설정 화면

다음으로 IAM 및 관리자 → 서비스 계정을 클릭하여 새로운 서비스 계정을 생성합니다.

서비스 계정 생성 화면

서비스 계정을 생성한 후, 해당 서비스 계정에 해당하는 이메일을 확인합니다.

서비스 계정 이메일 확인

키 → 키 추가를 클릭하여 키를 생성합니다.

키 생성 화면
JSON 유형 키 생성 화면

IAM 및 관리자 → 역할을 클릭하여 새로운 역할을 생성합니다.  Send Amplitude Event Data to Google Cloud Storage(문서링크)를 참고해서 역할에 다음 5개의 권한을 부여해줍니다.

  • storage.buckets.get
  • storage.objects.get
  • storage.objects.create
  • storage.objects.delete
  • storage.objects.list

새로운 역할 생성 및 권한 부여 화면

앞서 생성한 버킷으로 돌아가서 권한을 클릭한 후 액세스 권한 부여를 클릭합니다.

버킷 액세스 권한 부여

서비스 계정에서 추가한 새로운 계정에 해당하는 이메일을 입력한 후, 역할을 지정해줍니다.이때 역할은 1.저장소 기존 버킷 소유자와 2.역할 만들기를 통해 생성한 역할, 총 2개를 부여해줍니다.

새로운 계정 역할 부여 화면

해당 작업까지 완료했으면 앰플리튜드에서 Google Cloude Storage를 연결하는 작업을 진행해주어야 합니다. 앰플리튜드  Data → Destination에서 Google Cloud Storage를 클한 후 GCS로 보낼 데이터를 선택합니다.

앰플리튜드에서 Google Cloud Storage로 데이터 전송

서비스 계정 생성에서 생성한 JSON키 파일을 Service Account Key에 업로드 한 후, 하단의 Bucket Name에 구글 GCS에서 생성한 버킷 이름을 입력해줍니다.

JSON키 파일 업로드 화면

해당 과정을 성공적으로 마치면 Google Cloud Storage Bucket에 데이터가 들어옵니다.

 Google Cloud Storage Bucket 화면

연동이 완료되면 다음과 같이 생성됩니다.

*merged ID 된 데이터 : -000000/ , raw 데이터: 000000/ → 우리가 사용하게될 데이터는 000000/ (raw 데이터)
  • 압축된 아카이브 JSON 파일로 매 시간 내보내지고 시간 당 하나 이상의 파일로 시간별로 분할
    • 파일명: projectID_yyyy-MM-dd_H#partitionInteger.json.gz

앰플리튜드는 export API라는 서비스를 제공하므로 이 API를 호출하여 데이터를 불러올 수 있습니다. 파이썬의 request모듈로 API요청을 보내는 함수를 구현하고, 다음으로 데이터 전처리 모듈은 pandas모듈을 활용하여 JSON 포맷을 테이블 형식의 데이터 프레임으로 전처리했습니다. 1차 시도당시 빅쿼리로 진행했던 조건문을 프로그래밍 언어로 대체한 것입니다. 마지막으로 빅쿼리 클라이언트 라이브러리를 설치하여 전처리한 테이블을 빅쿼리로 업로드하는 함수를 구현했습니다.

내용을 요약하면 다음과 같습니다.

1. 앰플리튜드

  • 앰플리튜드가 GCS 버킷에 접근하여 이벤트 데이터를 전송합니다.

2. GCS

  • 앰플리튜드 이벤트 데이터는 GCS의 객체로 생성됩니다. 이때 객체 트리는 “버킷>폴더>시간대(yyyy-mm-dd_h)#순번’으로 네이밍되어 적재됩니다. (*e.g: 353961_353961_2023-06-25_1#0)

3. GCF

ㅤ: 버킷에 객체가 생성될 때마다 객체 데이터를 전처리한 후, 빅쿼리에 로드하는 함수 구현

3-1. 트리거
: GCS에 객체가 생성될때마다 호출합니다.

‘(Amplitude → Google Cloud Storage)’와 ‘(Google Cloud Storage) → Bigquery)’를 Google Cloud Functions로 연결하고자 트리거를 “Google Cloud Storage에 앰플리튜드 파일(객체)가 생성될 때”로 정의했습니다.

트리거 진입함수는 main()으로 설정합니다. 이때 트리거 대상 객체의 파일명을 확인하기 위해 data json 객체를 로드하여 메타 데이터를 확인합니다.

3-2. gcs_read()
: 트리거 수신 위치의 버킷 객체를 참조하여 읽어들입니다.

  • gcs_read()로 트리거 대상 객체의 파일을 읽어오고 빅쿼리의 index가 되어 줄 부분을 파싱합니다.
    • index_prefix : projectID_yyyy-MM-dd_H#partitionInteger.json.gz 파일명에서 ‘yyyy-MM-dd_H#partitionInteger’을 가져와 정수형으로 변환한 뒤 값을 할당합니다.
  • json_objects : 버킷에 저장돼 있던 압축된 아카이브 JSON 파일을 압축해제한 뒤, 데이터프레임으로 변환하기 위해 줄바꿈되어 있는 부분을 기준 삼아 데이터를 분리합니다.

3-3. json_make_dataframe()
: json객체를 total_items_order_completed, item_order_completed 각각의 데이터프레임(df1, df2)으로 변환합니다.

3-4. join_dataframes()
: df1, df2를 index 컬럼 기준으로 조인하여 joined_df라는 데이터프레임을 생성합니다.

3-5. append_to_bigquery()
: joined_df 데이터프레임에 맞는 스키마를 정의하여 빅쿼리에 로드합니다.

해당 작업을 완료하면, 최종적으로 빅쿼리에 데이터가 정상적으로 저장되며, 태블로에 연결해서 시각화할 수 있습니다.

빅쿼리 데이터 태블로 연결 화면

3. 대시보드 체크포인트

3-1. 가장 중점적으로 고민한 부분

통합 프로모션 대시보드이므로 프로모션 간의 비교가 가능하도록 하는 것이 최우선순위 목표였습니다. 하지만 통합 프로모션 대시보드 내에서 개별 프로모션의 성과 및 관련 내용도 바로 파악이 가능하도록 대시보드를 구성하고자 했습니다.

프로모션 리스트 부분에서 프로모션 성과들을 직관적으로 비교해서 확인할 수 있도록 했으며, sales summary내의 각 KPI의 프로모션 평균값을 제공하여 프로모션의 평균값과의 비교가능하게함으로써 프로모션 간의 비교 분석이 가능하도록 대시보드를 구성했습니다. 또한 프로모션 리스트에서 개별 프로모션 클릭 시 해당 프로모션에 해당하는 내용으로 필터링이되어 표현되게함으로써 개별 프로모션의 성과 역시 파악할 수 있도록 대시보드를 구성했습니다.

3-2. 대시보드 구현 시 발생했던 문제점 및 이를 해결하기 위한 과정

데이터를 태블로로 넘긴 후 ERP 기준 매출 데이터와 정합성을 확인하는 과정에서 매출액의 약 0.2%의 차이가 발생함을 확인했습니다. 이는 최종 매출액에서 반품 및 교환 비용을 고려하지 못했기 때문에 발생한 결과였습니다.

따라서 앰플리튜드의 반품 및 교환관련 이벤트인 return_completed의 return_paid_shipping(교환 및 환불금액)관련 항목을 추가하여 해당 금액을 반영해줌으로써 데이터 정합성을 맞췄습니다.

대시보드 구현시 발생했던 문제점 및 이를 해결하기 위한 과정

3-3. 가장 어려웠던 부분

해당 대시보드를 사용하는 고객사는 프로모션의 분류를 크게 할인과 쿠폰 2가지로 구분하고 있습니다.

즉, 1차적으로 가격을 낮춰 세일가에 제품을 구매하는 ‘할인’ 프로모션과 쿠폰을 소지하고 있는 고객이 쿠폰을 직접 사용해서 제품을 구매하는 ‘쿠폰’ 프로모션이 존재합니다. 이때 쿠폰 프로모션의 경우 총 매출 관련 항목과 쿠폰 매출 관련 항목으로 구분해서 성과를 확인할 수 있지만, 할인 프로모션의 경우 쿠폰 관련값이 존재하지 않으므로 쿠폰 매출 관련 성과는 확인이 불가능합니다. 따라서 성과를 확인함에 있어서 쿠폰 프로모션의 경우에는 쿠폰 매출 관련 항목을 확인해야 하고, 할인 프로모션의 경우에는 총 매출 관련 항목을 확인해야 합니다.

이를 적용했을 때 Sales Summary를 확인함에 있어서 결제상품수, 결제건수, 구매고객수의 경우 할인 프로모션의 경우에는 총 매출액 관련 항목으로, 쿠폰 프로모션의 경우에는 쿠폰 매출액 관련 항목으로 구분해서 표현해주어야 합니다.

Sales Summary 스코어 카드

이를 위해 케이스를 나누고, 쿠폰 아이디가 존재할 경우 쿠폰 프로모션으로 판단해서 쿠폰 매출 관련으로 카운트 하고, 쿠폰 아이디가 존재하지 않을 경우 할인 프로모션으로 판단해서 총 매출 관련항목으로 카운트할 수 있도록 계산된 필드를 생성합니다.

SQL
-- 결제상품수 예시
{FIXED [Promotion name1],[Classification],[Coupon Id]: 
    SUM(IF [Classification]='쿠폰' and ([# COUPON ID_1]= [Coupon Id] 
		    OR [# COUPON ID_2]= [Coupon Id] OR [# COUPON ID_3]= [Coupon Id]) 
        THEN 1
        ELSEIF [Classification]='할인' THEN 1
    END)}

4. 대시보드 템플릿

최종적으로 제작된 통합 프로모션 대시보드는 다음과 같습니다.

 통합 프로모션 대시보드 예시

4-1. 대시보드 템플릿 설명

📊 통합프로모션 대시보드 설명
1. 분류(쿠폰/할인) 및 테마 필터
- 해당 필터를 클릭하여 1. 프로모션 리스트에서 프로모션을 확인할 수 있습니다.
- 필터가 동작함에 따라 2. 세일 요약 내의 프로모션 평균이 변동됩니다.

2. 3. 아이템 디테일 내 브랜드별, 카테고리별, 상품별 막대그래프를 클릭하여 상세 판매현황을 확인할 수 있습니다.
- 클릭했던 막대그래프를 재클릭하시면 클릭을 해제하실 수 있습니다.

3. 5. CRM 정보에 표기되는 CRM 리스트 기준은 다음과 같습니다.
1) 전송건수: 10,000건 이상
2) Campaign Category: RAF, NTC(라플 및 공지) 제외
3) App: WO (칼하트윕 제외)

4-2. 해당 템플릿을 사용하는 방법

대시보드 우측 상단의 i표시를 클릭하면, 대시보드에 대한 설명을 확인할 수 있습니다. 프로모션의 분류가 할인일 경우, 1. Promotion List 에 쿠폰 판매건 및 쿠폰 판매액은 0건, 0원으로 표시됩니다. 2. Sales 의 결제 상품수, 결제 건수, 구매고객수의 경우, 프로모션 분류가 쿠폰일 경우에는 쿠폰 판매에 관련된 내용으로, 프로모션 분류가 할인일 경우에는 총 판매액에 관련된 내용으로 표시됩니다.

대시보드 작동예시를 좀 더 자세히 살펴보면 다음과 같습니다.

1. Promotion List

    프로모션 명을 클릭해서 해당 프로모션에 해당하는 2.sales, 3. Item detail, 4. Sale Trend, 5 CRM Info 를 확인할 수 있습니다.
대시보드 작동예시 - 프로모션 리스트

Promotion List 우측 분류 및 테마 필터를 클릭하여 해당하는 프로모션을 확인할 수 있습니다.

대시보드 작동예시 - 필터 확인

2.Sales(sales summary)

해당 프로모션의 총 매출액, 쿠폰 매출액, 결제 상품수, 결제 건수, 구매고객수 및 각 항목에 해당하는 일평균 액수를 확인할 수 있습니다.

Promotion List 우측 분류 및 테마 필터 적용 시, 2.sales KPI의 프로모션 평균이 필터에 해당하는 프로모션의 평균으로 변경됩니다.
대시보드 작동예시 -  프로모션 평균 확인

3. Item datail

좌측의 브랜드별, 카테고리별, 상품별 차트를 클릭해 각 항목에 해당하는 상품의 일자별 판매 현황을 확인할 수 있습니다.

  • 클릭한 항목을 재클릭하면 원본으로 돌아갈 수 있습니다.
대시보드 작동예시 - 상품 세부사항 확인

  • 예시) 상품별 차트에서  Top1 상품 클릭
대시보드 작동예시 - TOP 1 상품 확인

우측 막대그래프에 마우스를 오버하면, 각 일자별 총 매출 및 쿠폰 매출, 총 매출 대비 쿠폰 매출 비율을 확인할 수 있습니다.

대시보드 작동예시 - 쿠폰 및 매출 상관관계 확인

4. Sale Trend & 5.CRM Info

4. Sale Trend에서 프로모션 기간 동안의 총 매출 및 쿠폰 매출, 해당 기간 동안 CRM이 발송된 날짜에 대한 정보를 확인할 수 있습니다.

대시보드 작동예시 - 매출 트렌드 확인

5.CRM Info에서 해당 CRM에 대한 세부 정보를 확인할 수 있습니다.

  • CRM 기준
    1. 전송건수: 10,000건 이상
    2. Campaign Category: RAF, NTC(라플 및 공지) 제외
    3. App: WO (칼하트윕 제외)
대시보드 작동예시 - CRM 현황 및 정보 확인
recent_thumbnail
GROWTH

MMP(AppsFlyer), GA4, Braze 데이터를 활용해 시각화할 때 반드시 고려해야 할 사항 (1)

July 17, 2024

업무 시간을 데이터 수집과 데이터 전처리에 시간을 쓰는 마케터와 데이터 수집 자동화된 환경에서 성과 분석과 기획에 더 많은 시간을 쓰는 마케터 누가 더 많이 성장할까요?

답은 알고 계실 거에요. 당연히 성과 분석과 기획에 더 많은 시간을 쏟는 마케터가 장기적으로 많은 성장을 하겠죠

회사 내에서 GA4, MMP(AppsFlyer), Braze를 사용하고 있는데 엑셀로 데이터 수집해서 가공하는 시간을 대부분을 사용하고 있다면.. 하루 빨리 마케팅 데이터 수집 자동화하고 BI 구축을 시도해보세요.

관련 주제는 내용이 많기도 해서 3개로 나눠서 발행할 예정입니다.

  1. Third Party 데이터 수집 자동화
  2. 수집된 데이터 전처리하기
  3. 시각화 하기

이번 편에서는 MMP(AppsFlyer), GA4, Braze 데이터 수집을 자동화 시키는 프로세스를 설명해보려고 합니다.

데이터 적재하기

데이터를 적재하고 시각화까지의 프로세스를 간단하게 도식화하면 아래와 같습니다.

데이터 적재와 시각화까지의 프로세스 도식화

브레이즈 currents 적재하기

브레이즈 currents 는 유저의 engagement 이벤트의 실시간 데이터 스트림입니다. 이 데이터를 Avro 파일로 제공해서 BI 및 분석 할 수 있게 지원을 해주는 장점이 있습니다. 단점은 가격이..

브레이즈 어드민에서 아래처럼 어떤 데이터를 보낼지 선택해서 어디에 저장할지  S3, Cloud Storage, Azure Blob Storage 중 선택해서 적재를 시작합니다. (가이드 링크)

브레이즈 커런츠 currents 적재 화면

예를 들어 Amazon S3 적재를 시작하게 되면 아래처럼 이벤트 별로 폴더가 생성되어 분리 적재됩니다.

브레이즈 Currents 는 At-least-once delivery 정책으로 1시간 단위로 데이터를 적재합니다.

그래서 중복된 이벤트가 가끔 스토리지 버킷에 저장될 수 있습니다. 그래서 DW에 적재할 때 고유 식별자 필드(id) 를 사용해 이벤트 중복을 제거할 수 있습니다.

Amazon S3 이벤트별 폴더 생성 및 분리 적재

각 폴더 안에는  Avro 파일(각 파일의 Schema는 동일한 형태)이 들어 있는데 이 파일 내에는 이벤트를 구분하는 필드가 없습니다.

일단 여기서 필요한 이벤트 데이터들을 지정해서 합쳐야 되는데 여기서 문제가 있습니다.

그래서 파일 안에 어떤 이벤트의 파일인지 지정해줘야 합니다.

아래와 같이 Avro 파일 명을 확인하여 event_type 필드의 key 값을 추가 필요합니다.

# 파일명 event_type 필드의 key 값(예시)
1 users.messages.email.Open.avro email_open
2 users.messages.email.Click.avro email_click
3 users.messages.email.Delivery.avro email_delivery
4 users.messages.pushnotification.Send.avro push_send
5 users.messages.pushnotification.Open.avro push_open
6 users.messages.inappmessage.Click.avro inappmessage_click
7 users.messages.inappmessage.Impression.avro inappmessage_impression

  • 추후에 전처리시 currents 데이터 필드에는 시간 관련된 필드가 Time 필드인데 UTC 기준이라 원하는 시간대로 전처리시 맞추면 됩니다.
브레이즈 데이터 적재 완료 예시 화면

  • 여기까지 브레이즈 데이터 적재까지는 완성 되었습니다.

MMP(앱스플라이어)

💡 앱스플라이어 데이터는 내부에서 기준을 잡아주셔야 됩니다. 소개 드리는 방식은 skan 중복이 어느정도 발생할 수 있으나 현재까지는 이 방식이 최선입니다. 앱스플라이어측에서 개선을 해주신다고 들었기 때문에 기대가 됩니다.

앱 데이터를 측정하는 앱스플라이어도 마찬가지로 데일리 리포트를 만드려면 OS별, UA, RT(리타겟팅)별로 csv 파일을 12번 클릭해서 받아 정리해야 되지만 API 를 활용하면 충분히 자동화 할 수 있습니다.

 

pull api rawdata 예시
pull api rawdata 예시

다만 앱스플라이어 데이터를 어떻게 볼지 기준에 대한 합의를 유관 부서와 먼저 하시는 걸 권장드리고 대행사에게도 우리 기준으로 맞춰 달라고 요청을 해야 되겠죠?

이런 기준으로 데이터를 쌓고 있었는데 데이터를 집계하는 기준이 서로 차이가 있다면 .. 다시 작업해야 되는 불상사가 생길 수 있습니다.

이게 무슨 말이냐면 앱스플라이어 Media Source 중 SRN 매체들의 경우 개인정보 보호 이슈로 rawdata에 포함되지 않아서 집약형 데이터를 활용합니다.(가이드 링크)

그래서 SRN 매체를 사용 중이시라면 집약형 데이터를 활용해서 집계를 해야 하는데 집약형 데이터는 LTV 데이터라서 조회 시점마다 Total Revenue 값이 달라집니다. (관련글 보러가기 링크)

  • 예시
    • re-engagement window 컬럼에서 “lifetime”이라는 값은 평생 생애 가치를 의미하므로, 조회 시점마다 데이터가 달라질 수 있습니다.
re-engagement window 컬럼

1/1 데이터를 1/7일에 조회했을 때랑 1/14일에 조회했을 때의 total revenue가 달라진다는 의미입니다. 이러게 되면 가장 최근에 조회한 일자일 수록 ROAS가 높게 나오겠죠?

또한 skan 리포트도 마찬가지로 SRN 매체 광고를 운영 중에 있다면 해당 리포트도 받아야겠죠? 이것도 마찬가지로 조회시점마다 성과 숫자가 달라질 수 있습니다

앱스플라이어 데이터 자동화 수집을 위해선 크게  3가지 api 가 필요하고 세부적으로는 인스톨과 인앱이벤트 데이터를 가져와야 합니다. (추후에 앱스플라이어 데이터를 전처리하는 방법에 대해서 포스팅 해보겠습니다.)

  • Raw data Pull API
    • organic
      • install
      • in-app events
    • non-organic
      • install
      • in-app events
  • Aggregate Pull API
    • User Acquisition
    • Retargeting
  • SKAN AGGREGATED PERFORMANCE REPORT API

GA4 데이터

GA4 빅쿼리는 실무에서 쓰고 있는 조직이 있나 싶을 정도로 ..  사용하기가 좀 꺼려집니다. 원시 데이터라서 데이터 가공의 자유도가 엄청나게 높지만.. 집계를 하는 입장에서는 굉장히 머리 아픕니다. 정합성을 어디다가 맞춰야 되는지..

빅쿼리에서의 GA4 데이터 활용 현실 게시물

그래서 광고 데이터 성과를 집계할 때는 특별한 이유가 없다면 GA4 API 데이터를 소싱하는 게 정합성 의심의 여지가 없기 때문에 무조건 낫다고 봅니다.

GA4 데이터를 소싱할 때 진짜 진짜 주의해야 할 점이 바로 샘플링입니다.

샘플링 진짜 …. 데이터량이 많으면 더 심해집니다.

샘플링 분석 화면

GA4 API 를 14일치만 호출해도 샘플링된 양이 상당합니다.

GA4 API 14일치 호출 화면

GA4 Query Explorer 에서도 조회해도 어드민이랑 큰 차이가 있어서 구글 측에 문의를 해보니 여기도 데이터 조회 일자 범위가 넓으면 샘플링이 적용된다고 합니다.  추후에 해당 이슈 해소하겠다고 합니다.

GA4 Query Explorer 조회 화면

일단 우리는 샘플링 되지 않을 정도의 날짜 범위로 api 를 호출해서 적재를 하는 것이 좋습니다.

이번 편은 마케팅 데이터 수집 자동화에 대해서 알아보았고 다음 편에서는 인사이트 도출을 위한 데이터 전처리 방법에 대해서 알아보겠습니다!

recent_thumbnail
GROWTH

빅쿼리에서의 GA4 데이터 활용 현실: 기회와 간과된 문제점

July 16, 2024

GA4 데이터를 빅쿼리로 보내면 뭐든 다 해결될 것 같은 이야기들이 많지만 실상은 그렇지 못합니다. GA4 인터페이스와 차이가 많고 많은 데이터 용량으로 ETL 과정으로 생각보다 리소스가 많이 듭니다. 그럼에도 불구하고 빅쿼리를 쓰는 이유가 뭘까요?

GA4 빅쿼리네 데이터 Export 하는 기능
GA4 빅쿼리네 데이터 Export 하는 기능

GA4 데이터를 빅쿼리로 활용하면 좋은점

  • 데이터 샘플링(GA4 인터페이스에서의 데이터는 샘플링이 되어있습니다)
  • 일부 측정항목과 측정기준은 시스템에서 허용하지 않아서 결합해서 보기 힘듬
  • 데이터가 너무 많아서 상품 이름 같은 많은 측정 기준들이 (기타)라는 명칭으로 숨겨짐
  • 유저 아이디별로 추출 할 수 없고 집계된 계산만 추출 가능
  • 데이터 카디널리티
    • GA4 보고서를 보면 분석 범위에 행이 많으면 데이터 카디널리티 발생
    • 이로 인해서 동일한 차원을 사용하는 표준 보고서와 다른 값이 나올 수 있음

데이터 카디널리티란?
카디널리티는 측정 기준 고유값의 개수.
하나의 측정기준에 얼마나 많은 고유값이 있는지를 의미함
예를 들어, 성별 측정기준은 남성, 여성으로 두 가지 값만 가지고 있으므로 카디널리티가 낮음, 반면 마케팅 데이터를 기준으로 캠페인차원(utm_campaign) 을 기준으로 측정기준을 가져가면 카디널리티가 높은 것

GA4 데이터를 빅쿼리로 사용한다면 판도라의 상자를 여는것

[GA4] Compare Analytics reports and data exported to BigQuery (링크)

구글 ga4 biguery discrepancy 검색 결과 페이지

GA4 빅쿼리 데이터를 가공하다보면 어? 뭐지? 하는 현상들이 있는데 대표적인 하나의 케이스를 공유해볼까합니다. 바로! 빅쿼리에 저장되는 GA4 데이터에는 구글 관련 트래픽에 가장 큰 문제가 있다는 것입니다ㅜㅜ

gclid 파라미터(구글 애즈 캠페인으로 들어온 트래픽이라는 의미)가 있는 세션이 시작 되었을 때 빅쿼리는 utm_medium, utm_campaign 파라미터를 (organic)으로 기록해버립니다

다시 말하면 구글 애즈로 들어왔다는 데이터라고 식별은 되지만 캠페인 명이 증발해버리는 현상입니다.

소스 = google
매체 = Organic
캠페인 = (Organic)

빅쿼리 RAWDATA에 구글 캠페인 명이 없는 모습
빅쿼리 RAWDATA에 구글 캠페인 명이 없음

with events as (
      select
        cast(event_date as date format 'YYYYMMDD') as date,
        concat(user_pseudo_id, (select value.int_value from unnest(event_params) where key = 'ga_session_id')) as session_id,
        user_pseudo_id,
        (select value.int_value from unnest(event_params) where key = 'ga_session_id') as session_start,
        if(
              (select value.string_value from unnest(event_params) where key in ('campaign_id', 'campaign', 'source', 'medium', 'term', 'content', 'gclid', 'dclid', 'srsltid') and value.string_value is not null limit 1) is not null,
              (
                select as struct
                  (select value.string_value from unnest(event_params) where key = 'campaign_id') as manual_campaign_id,
                  (select value.string_value from unnest(event_params) where key = 'campaign') as manual_campaign_name,
                  (select value.string_value from unnest(event_params) where key = 'source') as manual_source,
                  (select value.string_value from unnest(event_params) where key = 'medium') as manual_medium,
                  (select value.string_value from unnest(event_params) where key = 'term') as manual_term,
                  (select value.string_value from unnest(event_params) where key = 'content') as manual_content,
                  (select value.string_value from unnest(event_params) where key = 'gclid') as gclid,
                  (select value.string_value from unnest(event_params) where key = 'dclid') as dclid,
                  (select value.string_value from unnest(event_params) where key = 'srsltid') as srsltid
              ),
              null
              ) as collected_traffic_source,
        event_timestamp,
        stream_id,
        (select value.string_value from unnest(event_params) where key = 'device_category') device_category,
        event_name,
        ecommerce.purchase_revenue_in_usd  as purchase_revenue_in_usd,
        case 
          when event_name = 'purchase'
          then 1 else 0 end AS purchase

      from
        `테이블명`
      where
         _TABLE_SUFFIX >= '20231001' AND _TABLE_SUFFIX <= '20231001'
        and (select value.string_value from unnest(event_params) where key = 'source') = 'google'
)

select * from events
order by session_id 

이 현상을 해결하려면 UTM 파라미터를 자동 태깅(gclid)를 대신해서 사용하거나 URL에 커스텀 파라미터를 붙여서 해결할 수 있긴 합니다.

  • Page Referrer 에 담긴 gclid 를 모아서 빅쿼리의 데이터를 수정해줘야 됩니다.
  • 여기서 한가지 조건이 있는데
    • 유저가 세션안에서 2개의 페이지 뷰 이벤트를 가지고 있어야 합니다.
    • 왜냐하면 사용자가 광고 클릭 후 랜딩 페이지에 도착하고 이후 추가 페이지를 탐색할 경우, 첫 번째 페이지(랜딩 페이지)에서의 referrer에 gclid가 포함되어 기록될 가능성이 높기 때문입니다.
  • 따라서 GA4 Custom Dimensions 을 통해서 ga_session_id, gclid 를 구글 태그매니저(GTM)로 잡는 방법을 사용하면 됩니다.
  • 이렇게 셋팅을 했다면 GA4 API 를 통해서 sessionCampaignName, sessionSourceMedium, customEvent:ga_session_id, customEvent:gclid 를 구글 스프레드시트나 빅쿼리에 테이블을 만들거나 혹은 GCF(Google Cloud Function)을 활용해서 빅쿼리 테이블 만들어서 GA4 빅쿼리 테이블과 JOIN 을통해 이런 현상을 해결 해볼 수 있습니다.

결론!

유저 레벨 분석이 아닌 마케팅 성과를 집계하기 위한 목적으로 GA4 데이터를 활용하고자 한다면 Bigquery Export 보다는 Google Analytics Data API 를 활용해서 일별로 내부 DataWarehouse에 저장하는 방식이 더 효율적일 것 같습니다.

참고로  Google Analytics Data API 를 활용한다면 집계된 데이터를 받아오기 때문에 Total Users 와 같은 유니크한 집계값 (Count Distinct)를 해야되는 지표는 제외하고 이벤트 단위의 지표만 활용해야합니다. 이유는 아래와 같습니다.

4명의 유저가 2024-01-01 ~ 2024-01-03 에 방문했습니다.(로우 데이터)

유저 방문 데이터 예시

일별 Total User 를 집계해보면

유저 방문 데이터 일별 집계

전체 기간의 Total User 를 집계해보면

유저 방문 데이터 전체 기간 총 방문자 집계

일별, 기간별 집계 했을 때 유니크 사용자수는 완전히 다릅니다. (DAU, MAU 개념과 동일)일별 테이블을 다 더해서 집계를 해서 사용하시면 쓸모없는 지표가 되어버리기 때문입니다.

그래도 유저레벨 단위로 혹은 GA4 인터페이스에서 처리 못하는 방식의 데이터 가공이 필요하다면 위의 케이스를 반드시 고려해서 빅쿼리를 사용하시는 걸 권장드립니다.

Reference

Why your BigQuery results don't (exactly) match with Google Analytics reports (GA4)

Google 애널리틱스 4 Data API 개요

원본 포스팅 링크

빅쿼리에서의 GA4 데이터 활용 현실: 기회와 간과된 문제점

recent_thumbnail
FULL FUNNEL

구글서치콘솔 대시보드 | 루커스튜디오 템플릿

July 15, 2024

루커스튜디오 구글서치콘솔 대시보드 템플릿 메인 이미지
구글서치콘솔 대시보드 | 루커스튜디오 템플릿

SEO 분석의 핵심 채널은 구글과 네이버 입니다. 그 중 구글에서는 사이트로 들어오는 유저의 검색 키워드를 분석 할 수 있게 도와주는 구글서치콘솔(GSC)을 제공하고 있습니다. 이를 통해 어떤 키워드가 더 노출과 클릭이 잘 되고 있는지 어떤 키워드가 문제인지를 확인할 수 있습니다.

다만 구글서치콘솔의 기본 목적은 구글이 도메인의 정보를 수집해가는 사이트맵 관리용으로 출발하다 보니 키워드별 깊이있는 통계 분석을 하기는 어렵습니다.

이로 인해 구글서치콘솔의 다소 부족한 통계를 보완하여 더 효과적인 구글 SEO 분석에 도움을 주기 위해 대시보드를 구성하였습니다. 총 4개의 영역으로 구성되어 있으며 각 대시보드의 활용 방식은 아래와 같습니다. SEO 관리를 위해 분석하면 좋을 지표와 방식들에 집중해서 같이 살펴보시면 좋을 것 같습니다.

구글서치콘솔 대시보드 | 루커스튜디오 템플릿
구글서치콘솔 대시보드 | 루커스튜디오 템플릿

Overview

💡 구글서치콘솔 주표 지표 Overview

  • 노출, 클릭, CTR, 평균 순위와 같은 주요 키워드 지표를 확인할 수 있습니다.
  • 각 지표별 상위 5개 키워드를 바로 확인할 수 있습니다.
  • 서비스 노출 키워드 총 수(Unique Keywords)를 알 수 있습니다.
  • 키워드에 따른 웹사이트 페이지(Landing Page) 수를 알 수 있습니다.
  • 서비스의 성격에 따라 집중해야할 Device가 달라질 수 있습니다. Device 별 키워드(쿼리) 수를 알 수 있습니다.
  • 노출, 클릭 등 주요 지표의 시계열 성과를 알 수 있습니다.

루커스튜디오 구글서치콘솔 Overview 대시보드
구글서치콘솔 대시보드 | Overview 대시보드

Page analysis

💡 SEO의 2가지 핵심 분석 축은 키워드와 페이지 입니다. 하나의 페이지에 다양한 키워드가 노출 될 수 있으며, 반대로 하나의 키워드에 여러 페이지가 노출 될 수 있습니다.

  • 키워드와 페이지의 관계를 확인할 수 있습니다.
  • 페이지 기준의 키워드 별 주요 지표의 변화를 확인할 수 있습니다.
  • 페이지별 노출되는 키워드(쿼리)수를 확인할 수 있습니다.

루커스튜디오 구글서치콘솔 페이지 분석 대시보드
구글서치콘솔 대시보드 | Page analysis

Keyword analysis

💡 SEO는 특히나 롱테일 키워드와 노출 순위 관리가 중요합니다. Top Ranking 구간을 두어서 구간 별 키워드 관리를 할 수 있습니다.

  • 노출 순위에 따른 키워드 그룹을 통해 주요 지표를 확인할 수 있습니다.
  • 키워드별 CRT, 평균 노출 순위의 버블차트를 통해 관리 키워드와 우수 키워드를 한 번에 확인할 수 있습니다.
  • 키워드(쿼리)별 세부 지표와 트렌드를 확인할 수 있습니다.

루커스튜디오 구글서치콘솔 키워드 분석 대시보드
구글서치콘솔 대시보드 | Keywords analysis

KPI Trend

💡 SEO는 단기간 지표 변화 확인이 어려운 영역입니다. 긴 시간 간격(보통 주, 월 단위)을 두고 지표의 변화를 관찰하면서 관리합니다.

  • 노출, 클릭, CTR 주요 지표의 주차별 트렌드를 확인할 수 있습니다.

대시보드 보기

대시보드 데모 보기

원본 포스팅 링크

구글서치콘솔 대시보드 | 루커스튜디오 템플릿

recent_thumbnail
GROWTH

Wide Format vs Long Format

July 12, 2024

Wide Format vs Long Format 비교 예시


데이터를 구성하는 형식은 크게 Long format data와 Wide format data로 구분할 수 있습니다.
각 유형 별 특징 및 장단점에 대해 살펴보겠습니다.

Wide Format Data

Wide Format Data는 각 주제 또는 관찰단위가 단일 행으로 표시되는 구조입니다.

Wide Format Data 예시

특징:

  • 넓은 형식 데이터에서는 각 행이 하나의 관측 단위를 나타내고, 각 열이 다른 변수를 나타냅니다.
  • 한 관측 단위에 대한 모든 정보가 하나의 행에 포함되어 있어 데이터의 구조가 직관적이고 이해하기 쉽습니다.

사용시 장점:

  • 넓은 형식 데이터는 변수 간의 비교가 주된 목적일 때 유용합니다.
  • 단일 변수 또는 몇 개의 변수를 이용한 간단한 시각화를 생성할 때, 또는 피벗 테이블과 같은 요약 통계를 제공할 때 넓은 형식이 유리합니다.

Long Format Data

Long Format Data 예시

특징:

  • 긴 형식 데이터에서는 각 행이 하나의 관측치에 대한 하나의 변수를 나타냅니다.
  • 일반적으로 "키(key)"와 "값(value)"의 쌍으로 구성되며, 하나의 열은 "키"를 나타내고 다른 열은 해당 "키"의 "값"을 나타냅니다.

사용시 장점:

  • 긴 형식 데이터는 다변량 분석, 시계열 데이터 분석, 혹은 여러 변수 간의 관계를 분석할 때 유용합니다.
  • Tableau와 같은 BI 도구에서 긴 형식 데이터를 사용하면, 다양한 변수를 하나의 차트에 동적으로 표시하고, 필터링하며, 그룹화하기가 쉽습니다.

참고) Wide Format & Long Format In Tableau

Wide Format 데이터를 태블로에 입력하면 학생Id는 차원에, 점수관련 항목은 측정값으로 구분됩니다.
이를 활용해 하나의 테이블을 생성하기 위해서는 점수관련 항목을 모두 선택해주어야합니다.

 Wide Format & Long Format In Tableau 태블로

반면 Long Format 데이터를 태블로에 입력하면 학생Id와 시험 항목은 차원에, 점수는 측정값으로 구분됩니다. 이를 활용해 하나의 테이블을 생성하기 위해서는 열에 시험 차원을, 행에 학생 Id차원을 올려놓은 후 점수 값을 표에 입력하면 됩니다.

Long Format data in Tableau 태블로

다음은 해당 데이터들을 활용해 그래프를 생성해보겠습니다.
먼저 Wide Format 데이터의 경우 국어시험, 수학시험, 영어시험은 각각 다른 차원에 존재하는 데이터이므로 이를 하나로 합친 차트를 구현하는 것은 불가능합니다.

Wide Format data in Tableau 태블로

반면 Long Format 데이터의 경우, 시험이라는 하나의 차원을 기준으로 점수라는 측정값이 적재되어 있기때문에 해당 데이터를 이용해서는 하나의 차트 내에서 3가지 항목을 구분하여 구현할 수 있습니다.

Tableau 태블로 Long data Chart

→ 따라서 Tableau를 활용하여 시각화를 구현할 때에는 Long Format형식의 데이터를 사용하는 것이 더욱더 다양한 시각화가 가능합니다.