Search

AARRR

그로스해킹의 대표적인 분석 프레임워크 중 가장 많이 사용하는 방법이다.
Acquisition (획득) : 광고 등의 새로운 방법으로 새로운 사용자를 얻어오는 단계
Activation (활성화) : 회원가입, 튜토리얼 등 사용자를 활성화 시키는 단계
Retention (보유) : 지속적으로 서비스를 사용하게 만드는 단계
Revenue (매출) : 매출을 만드는 단계
Referral (추천) : 다른 사용자에게 제품을 추천하는 단계
의 단계로 유저의 서비스 이용 사이클을 체계화한 프레임워크다.

Retention 분석

단계 중 가장 중요한 retention, 사용자 유지와 관련한 지표 계산에 대해서 알아본다. 이 단계는 가장 먼저 개선해야 할 단계로도 알려져있다.
새로운 사용자들을 획득(acquisition) 하는 것보다 중요한 것은 계속 사용자가 사용하도록 하는 것이 중요하기 때문이다.
사용자가 서비스를 꾸준히 이용하는지를 평가하는 정해진 공식이 있는 것은 아니지만 몇 가지 자주 사용하는 방법들이 있다. 먼저 클래식 리텐션(Classic Retention, N-day Rentention) 이라고 불리는 계산 방법에 대해서 살펴본다.

리텐션(1) - 클래식 리텐션

‘지속적 사용’을 어떻게 측정할까. 방문, 접속, 등등의 다양한 지표들이 있겠지만 대략 아래 정도와 같다.
특정 페이지 방문
특정 페이지 N번 방문
결제 버튼 클릭 또는 결제 완료
특정 기능 사용
등등…
예를 들어, 마켓컬리 같은 서비스의 경우 방문의 지표보다는 ‘결제를 한’ 유저를 리텐션 계산에 포함시킬 수 있다. 내가 느끼는 마켓 컬리의 핵심 가치는 새벽배송과 다양한 밀키트 상품들로 1인가구 및 주부고객을 겨냥한 마케팅방식에서 고객의 니즈를 간파한데서 온다. 서비스 기획 담당자라면
‘주문 횟수’ ‘결제 주문 기간 간격’ 로그를 이용해서 리텐션을 계산할 수 있을 것이다.
먼저, 일반적으로 많이 사용하는 ‘방문’을 기준으로 리텐션을 계산해보자.
만약 2022년 1월 1일에 사용자 A,B,C,D,E 5명이 처음 서비스를 이용하기 시작했다고 가정해보자. 그 이후 5일동안 다음 표와 같이 서비스에 방문했다고 하자.
사용자
01-01(DAY 0)
01-02(DAY1)
01-03(DAY2)
01-04(DAY3)
01-05(DAY4)
A
방문
방문
방문
방문
방문
B
방문
방문
방문
C
방문
방문
방문
D
방문
E
방문
2022년 1월 1일에 가입한 사용자들의 접속을 요약해보면 다음과 같다.
01-01
01-02
01-03
01-04
01-05
방문유저수
5
2
2
3
1
리텐션(%)
100%
40%
40%
60%
20%
클래식 리텐션은 특정 일특정 유저군의 몇 %가 접속했는지 계산한다.

클래식 리텐션 계산법

1.
유저수를 보여주는 방법
2.
비율을 보여주는 방법
3.
섞어서 보여주는 방법

solvesql을 활용해서 클래식 리텐션 실습해보기

1.
records 테이블과 customer_stats 테이블 연결하기(customer_id 컬럼을 기준으로)
select r.customer_id, r.order_id, r.order_date, c.first_order_date from records r inner join customer_stats c on r.customer_id = c.customer_id
SQL
복사
2.
주문일, 첫 주문날짜 데이터를 ‘YYYY-MM-01’ 형태로 가공 (date_format() 함수 사용(mysql)
select r.customer_id, r.order_id, r.order_date, c.first_order_date, date_format(r.order_date,'%Y-%m-01') AS order_month, date_format(c.first_order_date, '%Y-%m-01') AS first_order_month from records r inner join customer_stats c on r.customer_id = c.customer_id
SQL
복사
3.
위 데이터를 사용해서 각 월 별로 첫 구매한 고객이 몇 명인지 계산
with records_preprocessed as ( select r.customer_id, r.order_id, r.order_date, c.first_order_date, date_format(r.order_date,'%Y-%m-01') AS order_month, date_format(c.first_order_date, '%Y-%m-01') AS first_order_month from records r inner join customer_stats c on r.customer_id = c.customer_id) select first_order_month, count(DISTINCT customer_id) as month0 from records_preprocessed group by first_order_month
SQL
복사
4.
첫 결제한 달의 다음 달에도 결제한 고객은 몇 명일까?
with records_preprocessed as ( select r.customer_id, r.order_id, r.order_date, c.first_order_date, date_format(r.order_date,'%Y-%m-01') AS order_month, date_format(c.first_order_date, '%Y-%m-01') AS first_order_month from records r inner join customer_stats c on r.customer_id = c.customer_id) select first_order_month, count(distinct customer_id) month0, count(distinct case when date_add(first_order_month, interval 1 month) = order_month then customer_id end) month1 from records_preprocessed group by first_order_month;
SQL
복사
5.
첫 결제한 달로부터 1~11개월 뒤에도 주문한 고객의 수
6.
클래식 리텐션 해석하기
month1 리텐션부터 month5 리텐션까지 전반적으로 꾸준히 상승중
2020년 8월 첫 구매자들의 리텐션이 다른 코호트에 비해 특히 좋음
7.
추가 분석 아이디어 : 성과가 좋은 코호트의 특징 뽑아보기
성과가 좋은 코호트가 있었다면 다른 코호트와 비교해서 특징을 뽑아보고 리텐션을 개선할 액션 아이템을 뽑아볼 수 있다. 코호트의 구체적인 특징을 확인하는 방법으로 몇 가지 예시가 아래에 있습니다.
1) 해당 코호트 사용자들의 특징 알아보기
어떤 특정 그룹의 사용자들이 많이 결제를 했을까?
사용자 구분(기업 고객/개인 고객) → segment 컬럼
고객 등급( VIP / 일반 고객 )
성연령
지역
액션 ITEM : 그 그룹에 해당하는 사용자들을 더 데려올 수 있도록 마케팅을 해본다.
특정 기능을 사용해봤는지
액션 ITEM : 신규 사용자들이 특정 기능을 사용할 수 있도록 유도
2) 첫 결제의 특징 알아보기
특히 결제가 많았던 카테고리가 있을까?
액션 ITEM : 해당 카테고리 상품을 구매할 만한 사용자들을 찾는다.
액션 ITEM : 해당 카테고리에 할인쿠폰을 발행한다.
액션 ITEM : 해당 카테고리에 다양한 제품을 구비한다.
3) 신규 가입 사용자에게 구매 유도를 했던 방식
뉴스레터/앱 푸쉬/문자메세지 등 구매 유도를 했던 채널이 달랐을까?
구매 유도 문구가 달랐을까?
구매 유도한 요일이나 시간대가 달랐을까?
할인 쿠폰 발행 여부
액션 ITEM : 해당 방식을 다른 코호트에도 적용해본다.

클래식 리텐션의 한계

매일매일 사용하는 사용자가 아니라면 리텐션을 계산할 때 포함이 되지 않는 경우가 많기 때문에 사용자 유지 여부를 판단했을 때 과소계산하게 되는 문제가 생긴다.
따라서, 클래식 리텐션은 사용자가 매일 접속해서 사용할 것으로 기대되는 서비스에 활용하기 적절한 지표다. (카카오톡 같은 메신저앱, SNS 서비스 등)

리텐션 (2) - 롤링 리텐션

롤링 리텐션은 기준일을 포함하여 그 이후에 한 번이라도 재방문한 유저의 비율을 나타낸다.
사용 주기(간격)이 긴 서비스들의 경우에는 롤링 리텐션(Rolling Retention, 또는 Unbounded Retention) 계산법을 더 많이 사용한다. 이 계산법은 이탈(아예 안쓰는 경우)에 초점을 맞춘다.
또한 절대적인 수치라기보다는 사용자들의 이용 트렌드를 파악하는데 사용된다.
그렇다면 위의 표는 아래와 같이 변하게 된다.
사용자
01-01(DAY 0)
01-02(DAY1)
01-03(DAY2)
01-04(DAY3)
01-05(DAY4)
A
방문
방문
방문
방문
방문
B
방문
방문
(방문으로 간주)
방문
C
방문
(방문으로 간주)
방문
방문
D
방문
E
방문
그러면, 롤링 리텐션은 다음과 같이 계산할 수 있다.
01-01
01-02
01-03
01-04
01-05
방문유저수
5
3
3
3
1
리텐션(%)
100%
60%
60%
60%
20%
클래식 리텐션과 롤링 리텐션을 비교하는 그래프를 그려보면 차이가 명확하게 드러난다. 같은 데이터로 리텐션을 계산해도 어느 부분에 초점을 맞췄느냐에 따라 결과가 달라지게 된다.
롤링 리텐션은 여행 서비스, 쇼핑몰, 부동산 서비스 등 사용 빈도가 그렇게 높지 않은 서비스에서 유용하게 사용된다. 매일매일 이용하는 것이 중요하다기보다는 사용자가 니즈를 가진 시점에 방문하는 것이 더 중요한 서비스의 경우에는 클래식 리텐션으로 사용자 유지 여부를 계산할 필요가 없는 것이다.
이렇게 다양한 리텐션 계산 방법들을 알고 있으면 상황에 맞게, 서비스에 맞게 사용자 유지율을 분석할 수 있다.

보고용으로 쓸 수 있나?

하루가 더 지난 1월 6일 데이터가 생겼다. 사용자 E가 지금까지 접속하지 않다가 6일에 방문했다고 가정하자.
사용자
01-01(DAY 0)
01-02(DAY1)
01-03(DAY2)
01-04(DAY3)
01-05(DAY4)
01-06(DAY5)
A
방문
방문
방문
방문
방문
방문
B
방문
방문
(방문으로 간주)
방문
C
방문
(방문으로 간주)
방문
방문
D
방문
(방문으로 간주)
(방문으로 간주)
(방문으로 간주)
방문
E
방문
(방문으로 간주)
(방문으로 간주)
(방문으로 간주)
(방문으로 간주)
방문
이탈하지 않은 유저 수(1월5일계산)
5
4
4
4
2
이탈하지 않은 유저 수(1월6일계산)
5
5
5
5
3
2
롤링 리텐션%(1월5일계산)
100%
80%
80%
80%
40%
롤링 리텐션%(1월6일계산)
100%
100%
100%
100%
60%
40%
이탈했다고 생각했던 E 유저가 1월 6일에 돌아왔기 때문에 1월5일에 계산한 리텐션과 1월 6일에 계산한 리텐션의 값이 달라지게 된다. 이렇게, 사용자들의 이후 접속에 따라 기존의 리텐션값이 달라지는 것은 롤링 리텐션의 특징이다.
따라서, 절대적인 수치보다는 지표가 어떻게 변화하는지 트렌드를 보는 정도로 활용하기를 권한다고 한다.

solvesql을 활용해서 롤링리텐션 실습해보기

1.
customer_stats 테이블의 first_order_date , last_order_date 컬럼을 각각 ‘YYYY-MM-01’ 형식으로 가공하기
select customer_id, first_order_date, last_order_date, date_format(first_order_date, '%Y-%m-01') AS first_order_month, date_format(last_order_date, '%Y-%m-01') AS last_order_month, cnt_orders, sum_sales from customer_stats;
SQL
복사
2.
위 데이터를 사용하여 각 월 별로 첫 구매한 고객이 몇 명인지 계산
with customers as( select customer_id, first_order_date, last_order_date, date_format(first_order_date, '%Y-%m-01') AS first_order_month, date_format(last_order_date, '%Y-%m-01') AS last_order_month, cnt_orders, sum_sales from customer_stats ) select first_order_month, count(distinct customer_id) as month0 from customers group by first_order_month order by first_order_month;
SQL
복사
3.
첫 주문 한 달 다음 달에도 이탈하지 않은 사용자의 수
ex)
유저 A : 2020-01 첫 주문 / 2020-03 마지막 주문
유저 B : 2020-01 첫 주문 / 2020-01 마지막 주문
2020-01
2020-02
2020-03
유저 A
주문
(이탈x )
주문
유저 B
주문
(이탈o)
(이탈o)
롤링 리텐션
first_order_month
month0
month1(2020-02)
month2(2020-03)
2020-01-01
2
1
1
with customers as( select customer_id, first_order_date, last_order_date, date_format(first_order_date, '%Y-%m-01') AS first_order_month, date_format(last_order_date, '%Y-%m-01') AS last_order_month, cnt_orders, sum_sales from customer_stats ) select first_order_month, count(distinct customer_id) as month0, count(distinct case when date_add(first_order_month, interval 1 month) <= last_order_month then customer_id end) as month1 from customers group by first_order_month;
SQL
복사
4.
첫 주문 한달 이후 2 ~ 11개월 뒤에도 이탈하지 않은 고객의 수
with customers as( select customer_id, first_order_date, last_order_date, date_format(first_order_date, '%Y-%m-01') AS first_order_month, date_format(last_order_date, '%Y-%m-01') AS last_order_month, cnt_orders, sum_sales from customer_stats ) select first_order_month, count(distinct customer_id) as month0, -- 주문한 첫달 count(distinct case when date_add(first_order_month, interval 1 month) <= last_order_month then customer_id end) as month1, -- 첫 주문한 뒤 한달 이내 count(distinct case when date_add(first_order_month, interval 2 month) <= last_order_month then customer_id end) as month2, count(distinct case when date_add(first_order_month, interval 3 month) <= last_order_month then customer_id end) as month3, count(distinct case when date_add(first_order_month, interval 4 month) <= last_order_month then customer_id end) as month4, count(distinct case when date_add(first_order_month, interval 5 month) <= last_order_month then customer_id end) as month5, count(distinct case when date_add(first_order_month, interval 6 month) <= last_order_month then customer_id end) as month6, count(distinct case when date_add(first_order_month, interval 7 month) <= last_order_month then customer_id end) as month7, count(distinct case when date_add(first_order_month, interval 8 month) <= last_order_month then customer_id end) as month8, count(distinct case when date_add(first_order_month, interval 9 month) <= last_order_month then customer_id end) as month9, count(distinct case when date_add(first_order_month, interval 10 month) <= last_order_month then customer_id end) as month10, count(distinct case when date_add(first_order_month, interval 11 month) <= last_order_month then customer_id end) as month11 from customers group by first_order_month;
SQL
복사
5.
롤링 리텐션 데이터 해석
1) 클래식 리텐션과 차이가 많이 난다.
같은 데이터지만 클래식 리텐션으로 계산했는지, 롤링 리텐션으로 계산했는지에 따라 결과가 달라짐.
2020-01-01 month1 롤링 리텐션 80.60% , 클래식 리텐션 4.48%
클래식 리텐션과 롤링 리텐션의 차이가 많이 나는 것으로 보아 구매주기가 긴 서비스
2) 롤링 리텐션의 특성상 리텐션이 개선되고 있는지에 대한 해석은 어렵다.
나중에라도 결제를 했으면 그 전 달에도 결제했다고 간주하기 때문
최근 코호트일수록 리텐션값이 낮게 계산되고, 이전 코호트일수록 리텐션값이 올라갈 수 밖에 없다.
(1월과 11월을 비교한다든지) 다른 코호트와 단순 비교해서 보기가 어렵다.
8월과 2월은 그 중에서도 눈에 띔
6.
주의할 점
보고용으로 적합하지 않을 수 있다. 리텐션값이 데이터가 쌓이면서 계속해서 바뀌므로

추가 분석 아이디어 1. 사용자의 구매주기 확인해보기

Q1. 서비스의 월별 리텐션이 적합한지, 주별 리텐션이 적합한지 어떻게 알 수 있나요?
우선, 월별 리텐션과 주별 리텐션은 단위 차이가 커서 데이터를 안봐도 알 수 있다.
무엇보다 서비스를 이해하는 것이 첫번째다. 카카오톡 같은 메신저 서비스는 사용자들이 매일 방문하는 서비스다. 이런 경우 일주일 동안 방문을 안했다면 이탈한 것으로 봐도 무방하지만, 직방 같은 특정한 용도로 사용하는 앱을 생각해보자. 일주일 동안 접속하지 않았다고 이탈이라고 볼 수 있을까? 그렇지 않다. 직방은 이사를 준비할 때 들어가는 앱이기 때문이다. 사용주기가 몇년일수도 있고, 짧아도 몇 달, 몇 주일 것이다. 매일매일 하루도 빼놓지 않고 부동산 매물을 찾아보는 사람은 부동산 중개사가 아니라면 잘 없을 것이다.
사용자들의 사용 주기, 결제 주기 같은 것들을 알고 있으면 리텐션 기준을 잡기 쉬워진다. 서비스의 특징을 잘 모르겠다거나 대략은 알겠지만 정확하게 확인해보고 싶다면 기존 사용자들의 데이터를 분석해서 확인해볼 수도 있다.
Q2. 실무에서 구매주기를 확인할 때는 수십만 개의 사용자 구매 데이터가 있을텐데 하나하나 뜯어보는 것 밖에 방법이 없나요?
실제로 현업에서 일을 하면 데이터가 말해주는 것보다 사람들이 이미 알고있는 게 많을 경우가 크다.
실무에서는 우리 서비스의 구매주기가 어떤지, 고객들의 구매 패턴이 어떻게 나타나는지 데이터를 보지 않더라도 감(!)으로 알고 계신 분들이 많이 계신다. 우리 서비스에 대해서, 지금 풀려는 문제에 대해서 잘 아는 분들과 이야기를 나눠보고, 가설을 세우고, 그리고 데이터로 검증해보는 식으로 분석을 진행하다 보면 보다 효과적으로 일할 수 있을 것이다.
Q3. 리텐션 분석을 할 때 보통 몇 개월치 데이터를 보나요?
서비스에 따라, 리텐션의 기준에 따라 달라진다. 앞서 말한 것처럼 직방이라면 1년 단위 , 혹은 더 긴 기간이 필요할 수도 있겠지만, 카카오톡이라면 1년까지 필요 없고 1개월 동안의 리텐션만 봐도 충분할 수도 있다.
Q4. 리텐션이 어느 정도가 되어야 좋다고 할 수 있나요? 기준이 있나요?
서비스마다 기준은 달라진다. 카카오톡과 직방을 같은 기준으로 리텐션을 계산할 수 없듯이 말이다. 이름은 같은 ‘리텐션’이지만 일별, 주별, 월별로 기준이 되는 기간도 다르게 설정할 수 있고, ‘방문’을 기준으로 할 수도, ‘결제’를 기준으로 할 수도 있다.(기준도 다르게 설정할 수 있음) 리텐션 뿐만 아니라 다른 지표들 대부분이 그렇다. 측정하는 기준과 각자 상황이 다르기 때문에 다른 서비스와 비교하기보다는 우리 서비스의 과거와 현재를 비교하는 것이 더 좋다.
예를 들면, 데이터리안 웹사이트의 리텐션이 1월에는 1주째 1%였는데 3월에는 12%까지 올라왔다. 그러면 1월에 비해 3월에는 잘하고 있는 것이다. 이런 식으로 우리 서비스가 성장하고 있는지 확인하는게 중요하다고 생각하면 된다.

리텐션 (3) - 범위 리텐션(Range Retention, Bracket Rentention)

클래식 리텐션을 유연하게 확장한 개념이다. 클래식 리텐션은 분석을 특정 일/주/월 단위로 한정짓는 느낌이라면 범위 리텐션은 구간을 유연하게 나눈다는 점만 다르다. 범위를 지정하는게 특징이라 Bracket Rentention 이라고도 불린다.

범위 리텐션 계산하기

다시 1월 1일에 서비스에 가입한 사용자 표를 보고, 이 데이터를 3일씩 묶어서 범위 리텐션을 계산해보자.
사용자
01-01(DAY 0)
01-02(DAY1)
01-03(DAY2)
01-04(DAY3)
01-05(DAY4)
01-06(DAY5)
01-07(DAY6)
A
방문
방문
방문
방문
방문
방문
방문
B
방문
방문
방문
방문
C
방문
방문
방문
D
방문
방문
방문
E
방문
방문
아래의 기준으로 데이터를 묶어보자.
day0 : 1월 1일(최초 접속일 또는 서비스 가입일)
day1~3 : 1월 2일부터 4일까지
day 4~6 : 1월 5일부터 7일까지
01-01(DAY0)
01-02 ~ 01-04 (DAY 1~3)
01-05 ~ 01-07 (DAY 4~6)
기간 내 방문유저수
5
3
4
범위 리텐션%
100%
60%
80%
방문 횟수로 치면 DAY 1~ 3 과 DAY 4 ~6 의 횟수가 동일하다. 하지만, 방문자 수로 치면 DAY 4 ~ 6 이 훨씬 높은 것이다.
기간을 묶어서 계산하기 때문에 범위 리텐션 방식은 노이즈에 강하다. 우연히 하루정도 접속을 안 했다고 하더라도 리텐션에 영향을 주지 않기 때문이다. 주로 서비스 사용주기가 길거나 주기적인 서비스에서 많이 사용된다.

다양한 리텐션 계산 방법에 따른 차이

클래식 리텐션, 롤링 리텐션, 범위 리텐션 계산 결과를 하나의 차트로 그려본다. 같은 데이터를 사용하더라도 계산 방식에 의해서 리텐션이 달라지게된다.
→ 따라서 리텐션을 계산하는 방법만 바꿔도 해석이 달라지기 때문에 몇 가지 주의해야 할 점이 있다.
1.
남의 서비스와 비교하려면 제대로 해야 한다. 우리는 클래식 리텐션을 하고 비교할 회사는 롤링 리텐션을 해서 비교하면 안된다.
2.
우리 서비스에 맞는 계산 방법을 사용해야 한다. 사용주기가 긴 서비스인데 일 단위 클래식 리텐션을 사용한다면 좋지 못하다. 또 반면에 사용주기가 짧은 서비스인데 너무 넓은 범위의 리텐션을 사용하면 시간이 너무 많이 소요되고 너무 요약된 정보를 보느라 사용자들의 이탈시기를 놓칠 수 있다.
3.
형식에 얽매이지 말아야 한다. 세 가지 리텐션 방식을 알아봤지만, 정해진 공식은 없다. 세 가지 리텐션 방식을 기초로 서비스와 상황과 목표에 맞게 응용해도 좋다.
4.
하나만 볼 필요는 없다. 어떤 것이 좋을까 고민하는데 너무 많은 시간을 쏟지 말자. 가장 쉬운 방법으로 먼저 계산하고 현상을 파악하는 것이 더 중요하다.

리텐션 (4) - DAU, WAU, MAU 그리고 Stickiness

이번에는 리텐션과 조금 다른 얘기를 해본다. 바로 사용자 고착도라고 부르는 Stickiness 라는 지표다. Stickiness는 DAU를 MAU 또는 WAU 로 나누어 계산한다.
Stickiness=DAUMAUStickiness = \frac{DAU}{MAU}

DAU, WAU, MAU

해당 기간 동안 활동한 사용자 수를 의미하는 지표로 각각 Daily Active User, Weekly Active User, Monthly Active User 를 의미한다. 일간, 주간, 월간 활성 사용자 수라고도 부른다.
DAU(Daily Active User) : 일간 활성 사용자 수
WAU(Weekly Active User) : 주간 활성 사용자 수
MAU(Monthly Active User) : 월간 활성 사용자 수
구글 애널리틱스에도 활성 사용자 수 대시보드를 지원한다. 다음의 그래프를 보고 해석해보자.

DAU 138 명의 뜻

하루(1월 28일)의 접속자수는 138명이다. 겉으로 보기에는 큰 변동이 없는 것 같지만 가장 적었던 날(1월 22일) DAU는 128명이고, 가장 많았던 날(1월 27일)의 DAU는 239명으로 날짜에 따라 확실한 변동이 존재한다.
사실은 DAU 모니터링이 필요한 상황이라면, 따로 DAU 대시보드를 만드는 것이 좋다.

WAU 1100명의 뜻

지난 7일간 접속자는 약 1100명이다. 대략 계산해보면 DAU 합산이 WAU가 된다. 이런 경우 한 명의 유저가 일주일동안 지속적으로 접속한 것이 아니라, 매일매일 새로운 유저가 들어왔다가 나간다는 것을 의미한다.
아래에 더 자세히 말하겠다.
직접 WAU 를 계산해보자. 일곱명의 유저(A,B,C,D,E,F,G)가 있다고 가정해보자. 그 유저들이 아래와 같이 접속할 때 각각 DAU와 1월 28일의 WAU를 계산해보자.
WAU 예제 1
유저
1월22일
1월23일
1월24일
1월25일
1월26일
1월27일
1월28일
A
접속
B
접속
C
접속
D
접속
E
접속
F
접속
G
접속
WAU 예제 2
유저
1월22일
1월23일
1월24일
1월25일
1월26일
1월27일
1월28일
A
접속
접속
접속
접속
접속
접속
접속
B
접속
접속
접속
접속
접속
접속
접속
C
접속
접속
접속
접속
접속
접속
접속
D
접속
접속
접속
접속
접속
접속
접속
E
접속
접속
접속
접속
접속
접속
접속
F
접속
접속
접속
접속
접속
접속
접속
G
접속
접속
접속
접속
접속
접속
접속
예제 1의 DAU는 1월22 일부터 1월 28일까지 모두 1이고, WAU는 일주일 동안 유저 7명이 방문했으므로 7이 된다.
예제 2의 DAU는 1월 22일부터 1월 28일까지 모두 7이고, WAU는 일주일 동안 유저 7명이 방문했으므로 7이 된다.
예제 1 같은 경우 매일매일 새로운 유저가 들어오고, 기존 유저의 재방문은 없으므로 결국 DAU의 합산이 곧 WAU값이 된다.
하지만, 예제 2 같은 경우 기존 유저들이 계속해서 재방문을 하고 있으므로 재방문은 DAU에 매일 집계가 되지만 WAU에는 결국 유저 1명으로 계산되기 때문에 DAU의 합산(=49) 은 WAU(=7)보다 훨씬 큰 숫자가 된다.
따라서, 위의 구글 애널리틱스 그래프로 보면 WAU값이 DAU의 합산한 값과 비슷하기 때문에 예제 1과 같은 경우라고 보면 된다. 즉, 기존 유저들이 재방문 하는 곳이라기보다는 매일 새로운 유저들이 유입되는 곳이라고 볼 수 있다.
이렇게, WAU와 DAU를 함께 보면 WAU만 있을 때는 알 수 없었던 고객들의 방문 패턴을 발견할 수 있다. 여기서 나온 측정 지표가 바로 Stickiness (사용자 고착도, 사용자들이 계속해서 우리 서비스를 이용하는지) 가 되는 것이다. WAU(또는 MAU) 대비 DAU의 비율이라고 말하기도 한다.

MAU

MAU를 특정 유저 그룹별로 나누어서 분석하기도 한다.

Stickiness 계산하는 법

Stickiness는 DAU와 MAU 또는 DAU와 WAU의 비율로 계산한다. DAU와 MAU의 비율로 계산하는 것이 좀 더 보편적이다. 월간 순수 사용자 중 특정 일자에 접속한 사람의 비율을 보는 것이다.
Stickiness=DAUMAU Stickiness = \frac{DAU}{MAU}
일단,DAUWAU를이용해서예제1과예제2의각각128stickiness를계산해보자.일단, \frac{DAU}{WAU} 를 이용해서 예제1과 예제2의 각각 1월 28일 stickiness 를 계산해보자.
먼저 예제2의 stickiness는 100%가 되고, 예제1의 stickiness는 1/7이 되므로 14% 가 된다. 즉 예제 1은 ‘주간 순수사용자 중 14%만이 1월 28일날 방문했다’ 라고 해석하면 된다.
따라서 유저가 더 자주 방문(또는 사용)할 수록 stickiness는 100%에 가까워지게 되는 것이다.
위의 페이스북 stickiness 지표 그래프를 보게되면 지역별로 차이는 있지만 시간이 지날수록 유저 고착도가 모두 높아지고 있는 것을 확인할 수 있다. 기존의 유저들이 점점 더 페이스북을 자주 사용한다는 해석을 할 수 있겠다.
하지만 Asia 지역의 경우 다르게 해석할 수 있는것이 앞의 MAU만 보더라도 가장 높은 MAU 성장률을 보인반면 MAU대비 DAU 비율은 상대적으로 가장 낮은 수치를 기록했다. 이 점에서 보았을 때 아시아는 새로운 유저들은 계속해서 유입되고 있는 반면에 기존 유저의 고착도는 낮다고 파악할 수 있다.
"Thoughts On Facebook's Q2 2015 Earnings"  를 읽어보면 당시 페이스북 전체 유저의 1/3이 아시아 지역에 있지만 전체 광고 매출의 16% 만이 아시아에서 발생하고 있다고 한다. 페이스북의 광고 매출은 사람들이 더 많이 더 자주 접속하여 피드에 있는 광고에 노출되는 횟수가 늘어날수록(CPM, Cost Per 1000 Impression; 노출 당 과금) 그리고 광고를 클릭하는 횟수가 늘어날수록(CPC, Cost Per Click; 클릭 당 과금) 커지는 구조다. 때문에 아시아 사용자들이 아무리 많아도, Stickiness가 낮으면 매출로 연결되지 않는다.
따라서 이렇게 SNS 광고 비즈니스 또는 생필품을 판매하는 온라인 쇼핑몰 비즈니스에서는 Stickiness 지표를 중요하게 생각한다.

리텐션(5) - 리텐션 차트, 리텐션 커브

전체 데이터를 쪼개어 특정 집단 안의 특징을 보고, 다른 집단과 비교하는 일을 코호트 분석이라고 한다. 가장 흔하게 보이는 코호트의 예시는 성, 연령이다.
리텐션 분석을 할 때도 코호트를 잘 정의하는 것이 중요하다. 일반적으로 가입 시기별로 유저 그룹을 나누어 각 그룹별로 리텐션을 관찰한다. → 이렇게 나누게 되면 시간 흐름에 따라 리텐션이 좋아지고 있는지 나빠지고 있는지 흐름을 판단할 수 있다.

리텐션 차트 ( Retention Chart )

보통 유저를 첫 방문 시기별로 나누어 아래와 같이 삼각형 모양으로 차트를 그린다. 차트의 왼쪽 위에 ‘동질 집단별 사용자 활동’에서 “동질 집단별” 이라는 것은 유저를 첫 방문 시기별로 나누어 표시했다는 의미이고, 예를 들어 1월 9일 ~ 1월 15일 사이에 해당 사이트에 첫 방문한 사람은 260명이다.
이 사이트의 리텐션은 시간이 흐름에 따라 점점 개선되고 있다.

리텐션 커브 (Retention Curve)

리텐션을 높이는 방법은 크게 두가지고 나뉜다.
1.
초기에 이탈하는 유저 줄이기
2.
유저와 장기적인 관계 유지하기

1. 초기에 이탈하는 유저 줄이기

바로 NUX (New User Experience) 다. 즉 고객과 처음 만나는 순간의 경험을 말한다. 0~1일 사이의 리텐션 차트가 관련있고 AARRR단계에서는 Acquisition과 Activation 이 관련있다.
크게 유저의 가입 동선, 처음 받아보는 이메일, 처음 보는 화면, 처음 경험하는 서비스의 핵심 가치 개선을 통해 초기 이탈을 방지할 수 있다.

2. 유저와 장기적인 관계 유지하기

초반 리텐션 커브는 굉장히 가파르기 때문에 해당 구간을 지난 후 안정화 되는 단계에서는 사용자와 관계를 잘 유지시키는 것이 중요하다.
유저와 장기적인 관계를 유지하는데 가장 중요한 것은 우리 서비스의 핵심 가치를 고객들이 계속 경험하게 할 수 있느냐와 같이 좀 더 근본적인 곳에 있다.

Smile Curve

좀 오래되었지만 에버노트의 Smile Curve 를 잠깐 참고해보면, 보통 리텐션 커브는 우하향하는 곡선을 그리는데, 에버노트와 같이 시간이 지날수록 유저에게 서비스의 가치가 높아지는 제품들은 스마일 커브 리텐션 곡선을 그릴 수 있다는 것을 보여준다.

정리

리텐션은 가장 개선하기 어려운 지표로 꼽아진다. DAU, MAU 등 단순 접속 지표는 속된 말로 돈을 태워 늘릴 수 있다고 한다.(광고를 늘리면 자연스럽게 Acquisition은 증가한다.) 하지만, 사용자의 재방문은 돈을 투자한다고 해서 늘어나지 않기 때문이다. 물론 일시적으로 푸시, 이메일 발송 등을 통해 늘릴수는 있지만 유저의 피로 관리를 생각하지 않는다면 장기적인 리텐션에 도움이 되지 않기 때문이다.
또한, 리텐션이 중요하기는 하지만 모든 사업에서 최고 순위를 가지는 것은 아니다. 예를들어 ‘웨딩홀’ 사업 같은 경우에는 고객의 재방문 가능성이 아주 희박하다. 이런 성격의 사업은 리텐션보다는 한번에 최대의 매출(Revenue) , 입소문(Referral) 이 더 중요할 것이다.
가장 중요한 것은 리텐션을 한번 계산하는데서 그치면 안된다는 것이다. 끊임없이 파악하고 고민하고 개선해나가는 과정이 이뤄져야 한다.

Revenue 분석

전체 유저는 미결제 유저(non paying user)결제 유저(paying user)로 나눌 수 있다.
ARPU(average revenue per user) = 전체 매출/ 전체 유저
ARPPU(average revenue per paying user) = 전체 매출/결제 유저
전체 매출의 증감 트렌드를 확인하고, ARPPU를 계산해보고, 그룹별로 매출을 나누어 관찰하면서 매출분석을 간단하게 할 수도 있다.