이 글에서는 Carrying Capacity 지표의 개념 및 계산 방법과 실제 실무에 적용하여 대시보드를 만드는 과정까지 설명합니다. 실무를 하다 보면 이론은 알겠으나 실무에 적용하는 게 항상 어려웠는데, 같은 고민이 있으셨던 분들께 도움이 되었으면 합니다.
Carrying Capacity 지표는 토스 서비스를 운영하는 비바리퍼블리카의 대표이사인 이승건님의 PO Session에 의해서 유명해진 지표이다. 그럼 이 지표가 무엇을 의미하는지 알아보자.
(해당 영상)
Carrying Capacity란?
Carrying Capacity(C.C.)는 기업의 서비스가 최대로 도달할 수 있는 MAU 또는 DAU를 의미한다. C.C의 수치가 일단 계산되었다면, 이제 유료광고를 하지 않고 서비스를 가만히 놔둬도 MAU 또는 DAU가 자연스럽게 C.C. 에 도달하게 된다.(시간이 얼마나 걸릴지는 모름) 이때, 광고비를 얼마나 투자할지는 C.C. 까지 도달하는데 시간적 부스팅이 얼마나 필요한지에 따라 책정할 수 있다.
대부분의 IT기업들이 보통 MAU를 중요하게 생각하는데, 사실 이는 후행지표이므로, C.C.를 먼저 봐야 한다. 그렇다면, 이 지표는 어떻게 계산 하는 걸까? 계산식은 아래와 같다.
최대로 도달하게 될 MAU
$$ Carrying\ Capacity\ = \frac{average\ monthly\ non\ viral\ customer\ acquisition\ rate}{average\ monthly\ churn\ rate} $$
$$ average\ monthly\ churn\ rate\ = \frac{Customers\ beginning\ of\ month\ -\ Customers\ end\ of\ month}{Customers\ beginning\ of\ month} $$
최대로 도달하게 될 DAU
$$ Carrying\ Capacity\ = \frac{average\ daily\ non\ viral\ customer\ acquisition\ rate}{average\ daily\ churn\ rate} $$
$$ average\ monthly\ churn\ rate\ = \frac{Customers\ beginning\ of\ day\ -\ Customers\ end\ of\ month}{Customers\ beginning\ of\ day} $$
- C.C. 계산식 출처 : When A Meets G: Where Viral Marketing, Carrying Capacity and Advertising Collide
- Churn rate 계산식 출처 : How to Calculate Customer Churn Rate and Revenue Churn Rate
이 계산식에 의하면 C.C.를 계산하는데 필요한 지표는 inflow와 Churn 밖에 없다. 즉, 유저가 얼마나 들어오고 나가는지만 알면 된다는 뜻이다. 결국 근본적인 제품 개선 없이는 MAU를 증가시키는게 불가능한 시점이 오게 된다.(제품 개선을 해야 activation, retention이 늘어나고 이는 다시 바이럴루프에 의해 inflow가 늘어나게 하고, 이탈을 줄이기 때문) 여기에 더 큰 C.C를 만들기 위해서는 제품 개선을 넘어서 새로운 서비스를 런칭해야한다. 즉, 새로운 C.C.를 얹어 야한다.
주의할 점은 C.C.의 분자에 Paid 광고를 통한 acquisition이 포함되면 안 된다는 점이다. 또한, 만약 여기에서 친구 초대를 통한 acquisition까지 추가해야 한다면, 1/(1-바이럴 K) 값을 곱해야 한다.(수식 참고)
Churn rate은 처음 신규로 방문한 달 또는 날짜에 접속한 사용자수를 분모로 하고, 이 중에 다음 달 또는 다음 날짜에도 방문하지 않은 사용자수를 분자로 하여 계산하면 된다. 즉, 신규 방문한 달 또는 날짜 기준으로 다음 달 또는 다음 날짜에 이탈률이 얼마나 되는지를 계산한 것이다.
GA4로 C.C. 계산을 위한 데이터 뽑기
GA4에서 C.C. 를 계산하기 위한 데이터를 추출하려면 먼저, 각 측정기준과 자동수집 이벤트들의 의미에 대해서 정확하게 알고 있어야 한다. GA4에서 제공하는 측정기준과 자동수집 이벤트의 종류가 워낙 많다 보니, 해당 글에서는 C.C. 계산에 필요한 것만 골라서 설명하려고 한다.(해당 글에서는 친구 추천에 의한 acquisition은 계산에서 제외한다.)
non-viral acquisition 데이터 추출
총 사용자 vs 활성 사용자 vs 새 사용자 수 vs 재사용자
측정기준을 살펴보다보면, 사용자 수를 집계하는 기준이 여러 가지인 것을 알 수 있는데, 각각의 숫자가 어떻게 계산된 것인지 먼저 이해해야 한다.
총 사용자
'참여 이벤트를 실행했는지 여부와 관계없이 사이트 또는 앱과 상호작용한 총 사용자 수'라고 GA4에 나와있다. GA4데이터를 빅쿼리에 적재하여 raw데이터를 확인해 보면, user_id 또는 user_pseudo_id가 있는 것을 확인할 수 있는데, 이 id를 기준으로 어떤 이벤트라도 상관없이 지정한 기간 동안 1개라도 이벤트를 남기면, 카운트가 되는 것이다.
예를 들어, page_view 이벤트 같은 경우 페이지가 로딩이 되면 자동으로 이벤트가 발생되는데, 해당 이벤트가 발생하자마자 0.5초 뒤에 창을 종료 했다고 하면, user_engament라는 이벤트와 engagement_time_msec라는 매개변수가 트리거 되지 않는다. 이 경우에는 '참여 이벤트'가 발생하지 않는 경우이며, 이러한 경우엔 '총 사용자'에만 카운트되는 것이다.
정리하면, 지정된 기간 동안 이벤트를 트리거한 순 사용자 수라고 할 수 있다.
새 사용자 수
'처음으로 사이트와 상호작용하거나 앱을 실행한 사용자 수(트리거 된 이벤트: first_open)'라고 GA4에 나와있다. 앱의 경우엔 user_id 또는 user_pseudo_id 기준으로 처음으로 사이트에 방문하면 first_open 이벤트가 트리거 되고, 웹의 경우엔 first_visit 이벤트가 트리거 된다.
주의할 점은 대부분의 서비스는 uesr_pseudo_id 기준으로 first_open, first_visit 이벤트가 수집되고 있을 가능성이 높은데, user_pseudo_id는 디바이스, 플랫폼, 앱 인스턴스 등마다 달라지기 때문에 실제 사용자 수보다 더 과장된다는 것이다. 이를 인지하고 해석해야 한다.
정리 : 지정된 기간 동안 first_open 또는 first_visit 이벤트를 로깅한 새로운 순 사용자 수를 의미한다.
재사용자
지정된 기간 동안 이전 세션이 참여 세션이었는지 여부와 관계없이 이전 세션을 하나 이상 시작한 순 사용자 수를 의미한다.
활성 사용자는 참여 세션이 있는 사용자 또는 애널리틱스에서 다음을 수집한 사용자이다.
- 웹사이트의 first_visit 이벤트 또는 engagement_time_msec 매개변수
- Android 앱의 first_open 이벤트 또는 engagement_time_msec 매개변수
- iOS 앱의 first_open 또는 user_engagement 이벤트
정리 : 지정된 기간 동안 내 사이트 또는 앱에 참여한 순 사용자 수를 의미한다.
Churn rate 데이터 추출
세션수 vs 참여 세션수 / 이탈률 vs 참여율
세션수
구글은 세션을 '일정한 기간 내 발생한 사용자 상호작용의 집합'으로 정의한다. 사용자는 활동을 하는 동안 하나의 세션을 가지고, 기본적으로 30분 동안 활동을 멈추면 타임아웃되며, 다시 활동을 시작하면 전과 다른 새로운 세션을 가지게 된다.
참여 세션수
한 세션 동안 10초 이상 페이지에 머물렀거나 2페이지 이상을 방문했거나 전환 이벤트를 남긴 경우 카운트된다.
참여율
참여 세션수/세션수 * 100
이탈률
100 - 참여율
이 부분은 설명한 이유는 GA4의 '이탈률'의 의미를 정확하게 파악하기 위함이다. '이탈률'이라는 한국어만 보고 이게 'Churn rate'이구나 하며 착각할 수 있는데, GA4에서의 '이탈률'은 'Bounce rate'을 의미한다. 즉, 이탈률은 한 세션 동안 참여 세션에 해당하는 이벤트를 남기지 않은 비율을 의미한다. Churn rate과는 완전히 다른 것이다.
그렇다면, Churn rate의 데이터는 어떻게 추출할 수 있을까? GA4의 탐색 메뉴에서 동질집단탐색분석을 선택하면, 코호트별로 리텐션을 분석할 수 있는 기능을 사용할 수 있다. 우리의 서비스가 만약 신규로 유입된 사용자의 리텐션이 1개월 뒤부터 안정적으로 유지된다고 하면, 여기서 우리가 사용해야할 데이터는 월 0, 월 1 열에 해당하는 데이터이다. 즉, 첫 달에 방문한 새 사용자수, 이 중에 다음 달에도 방문한 사용자수를 의미한다. 여기에 '새 사용자수' 데이터가 포함되어 있기 때문에 이 데이터만 활용하면, C.C. 를 쉽게 계산할 수 있다.
위 데이터를 구글 시트로 데이터 내보내기를 하면, 아래와 같이 데이터가 추출된다.(날짜열은 함수를 사용해서 따로 만들어 주었음. =arrayformula(iferror(LEFT(B8:B, 8)))
여기에는 우리에게 필요 없는 데이터가 대부분이기 때문에 필요한 데이터만 걸려주어야 한다. 위 시트 이름을 '월기준리텐션'으로 저장해 주고, 새 시트에서 QUERY함수를 사용하면 쉽게 원하는 데이터만 추출할 수 있다.
=QUERY(FILTER('월기준리텐션'!A7:G, '월기준리텐션'!A7:A = 1, ISNUMBER('월기준리텐션'!C7:C)),
"select Col1, Col7, Col3, Col4, Col5 order by Col2")
함수에 대한 설명은 따로 하지 않겠다. 잘 모르겠으면 복사해서 사용하면, 다음과 같은 결과가 나올 것이다.
이제 우리가 원하는 C.C. 를 계산하기 위한 데이터는 모두 추출이 되었다. 여기서 계산만 해주면 된다. 먼저 '사용자 집단 총 사용자'에서 '활성 사용자'를 빼면 '이탈 사용자'가 계산이 된다. Churn rate은 '이탈 사용자' / '사용자 집단 총 사용자'로 계산해 주면 된다. 마지막으로 C.C. 는 '사용자 집단 총 사용자' / 'Churn rate'으로 계산하면 된다. 이렇게 계산하여 그래프를 만들면 끝이다.
'그로스해킹 > GTM, GA4 API' 카테고리의 다른 글
Webview, 하이브리드 앱 GTM 이벤트 설치 및 수집 방법 (2) | 2024.08.13 |
---|---|
Google Analytics용 Python API(GA4) 사용법(1) (1) | 2024.06.09 |
루커 스튜디오 할당량 체크하는 방법(GA4와 연결했을 때) (0) | 2024.02.16 |
User ID, 사용자를 식별하는 가장 확실한 방법 (0) | 2024.01.27 |
GA4, BigQuery, Looker Studio 3가지 툴 연동 방법 (0) | 2024.01.25 |
댓글