코호트 분석(Cohort Analysis)은 사용자를 동질 집단(코호트)으로 묶어 시간에 따른 잔존율과 매출 변화를 추적하는 데이터 분석 방법론입니다. 가입 시점, 획득 채널, 첫 구매 행동 같은 공통 속성으로 묶인 집단을 시간 축 위에 펼치면, 평균 지표 뒤에 숨은 실제 이탈 패턴과 제품의 본질적 가치가 드러납니다. 그로스 해킹의 5단계 프레임워크인 AARRR에서 리텐션을 측정하는 표준 도구로 자리 잡았고, 토스·당근마켓·우아한형제들 같은 국내 대표 IT 기업들도 매주 코호트 차트를 보며 의사결정합니다. 이 글에서는 코호트 분석의 정의와 종류, 차트 해석법, SQL 쿼리 예시, 실전 활용 사례, 그리고 흔한 함정까지 한 번에 정리합니다.
목차
- 코호트 분석 도입 현장에서 마주한 변화
- 코호트 분석이란 무엇인가
- 코호트의 종류: 획득·행동·시간 기반
- 코호트 차트 어떻게 해석할까
- 실전 구현: SQL 쿼리와 분석 도구
- 활용 사례와 흔한 함정
- FAQ
- 같이 읽으면 좋은 것들
코호트 분석 도입 현장에서 마주한 변화
작년에 함께 일한 한 B2C SaaS 스타트업의 풍경이 아직도 선명합니다. 월간 활성 사용자(MAU)는 두 분기 연속 두 자릿수로 성장 중이었고, 대시보드의 모든 숫자가 초록색이었습니다. 그런데 시리즈 A 실사를 준비하던 VC 측에서 "코호트별 리텐션 곡선을 보여달라"라고 요청했고, 처음 만든 차트는 팀 전원을 침묵하게 만들었습니다. 30일 차 잔존율이 11%에서 분기마다 떨어지더니 직전 코호트는 7%였습니다. 총 사용자가 늘고 있다는 착각은 단지 신규 유입이 이탈 속도를 가까스로 메우고 있었기 때문이라는 사실이 드러났습니다.
이 코호트 차트 한 장이 그 팀의 우선순위를 바꿨습니다. 마케팅 예산을 신규 획득에 더 붓던 흐름을 멈추고, 첫 2주의 온보딩과 7일 차 리텐션 트리거 개선에 집중하기 시작한 거죠. 그로부터 두 분기 뒤 같은 차트는 모든 코호트의 30일 잔존율이 20%를 넘었고, 신규 유입을 늘리지 않았는데도 MRR이 70% 가까이 증가했습니다. 코호트 분석은 단순 통계가 아니라 "어디에 시간을 써야 하는가"라는 질문에 답하는 의사결정 프레임이라는 사실을 다시 확인한 사례였습니다.
다른 사례도 있습니다. 한 콘텐츠 커머스 회사는 비슷한 시기에 모든 광고 채널의 ROAS가 비슷해 의사결정에 어려움을 겪고 있었는데요. 채널별 코호트로 끊어 LTV를 비교해 보니 인스타그램으로 유입된 코호트가 페이스북 코호트보다 6개월 LTV가 2.4배 높다는 사실이 드러났습니다. 평균만 보면 절대 보이지 않던 결정적 차이였습니다.
코호트 분석이란 무엇인가
정의
코호트 분석(Cohort Analysis)은 공통된 특성을 가진 사용자 집단(코호트)을 정의한 뒤, 그 집단의 행동을 시간이 흐름에 따라 추적해 비교하는 분석 방법입니다. 라틴어 cohors(같은 부대)에서 유래한 용어로, 본래 역학(epidemiology)에서 같은 시기에 노출된 인구 집단의 건강 변화를 추적하던 방법론이 1990년대 이후 디지털 비즈니스로 넘어왔습니다.
평균이 숨기는 진실
전체 사용자 잔존율 30%라는 평균 수치는 거의 아무것도 말해주지 않습니다. 신규 사용자만 빠르게 떠나는 것인지, 오래된 사용자가 천천히 이탈하는 것인지, 어떤 채널에서 들어온 사용자가 더 충성도가 높은지 평균은 답할 수 없습니다. 코호트 분석은 사용자를 출생 시점이 같은 집단으로 묶어 동일한 시간 길이에 걸쳐 비교함으로써, 평균이 가린 본질적 패턴을 분리해 보여줍니다.
왜 그로스의 표준이 되었나
투자자 앤드류 첸(Andrew Chen)이 "리텐션은 모든 그로스 지표의 어머니"라고 부른 이래 코호트 분석은 그로스 해킹의 표준 도구가 됐는데요. AARRR 프레임워크의 두 번째 단계인 활성화(Activation)와 세 번째 단계인 리텐션(Retention)이 코호트 분석 없이는 측정 자체가 어렵기 때문입니다. SaaS, 게임, 커머스, 콘텐츠 플랫폼 가릴 것 없이 모든 디지털 비즈니스의 핵심 보드룸 차트가 됐습니다.
코호트의 종류: 획득·행동·시간 기반
1) 획득 코호트(Acquisition Cohort)
사용자가 처음 서비스에 진입한 시점을 기준으로 묶는 가장 일반적인 코호트입니다. 보통 가입일 또는 첫 방문일을 기준으로 주간·월간 단위로 그룹화합니다. 1월 가입자, 2월 가입자, 3월 가입자의 30일·60일·90일 잔존율을 비교해 제품 개선 효과를 검증하는 식인데요. 광고 캠페인, 신규 기능 출시, 가격 변경 같은 변화의 영향을 분석할 때 가장 자주 쓰입니다.
2) 행동 코호트(Behavioral Cohort)
특정 행동을 처음 수행한 시점을 기준으로 묶는 방식입니다. 예를 들어 "첫 결제를 완료한 사용자", "친구를 초대한 사용자", "3일 연속 접속한 사용자"처럼 행동 이벤트로 코호트를 정의합니다. 아하 모먼트(Aha Moment) 발굴의 핵심 도구이기도 한데요. 페이스북이 "10일 안에 7명의 친구를 만든 사용자가 장기 잔존율이 4배 높다"라는 사실을 발견한 것이 대표적인 행동 코호트 사례입니다.
3) 시간 코호트(Time Cohort)
분기, 시즌, 특정 이벤트 시점을 기준으로 묶습니다. 블랙프라이데이 유입 코호트, 코로나 팬데믹 기간 유입 코호트처럼 외부 환경의 영향을 분리해 분석할 때 활용됩니다.
한눈에 비교
| 코호트 유형 | 묶는 기준 | 대표 활용 |
|---|---|---|
| 획득 코호트 | 가입·첫 방문 시점 | 제품 개선 효과 측정 |
| 행동 코호트 | 핵심 이벤트 수행 시점 | 아하 모먼트 발굴 |
| 시간 코호트 | 외부 이벤트·계절 | 환경 영향 분리 분석 |
코호트 차트 어떻게 해석할까
삼각형 차트(Triangle Chart)의 구조
코호트 차트는 가장 흔히 삼각형(또는 사다리꼴) 표 형태로 표현됩니다. 세로축은 코호트(예: 1월·2월·3월 가입자), 가로축은 가입 후 경과 기간(0주·1주·2주~~), 셀 안의 숫자는 해당 시점의 잔존율입니다. 셀 색이 진할수록 잔존율이 높다는 식으로 히트맵(heatmap)을 입히면 패턴을 한눈에 볼 수 있습니다.
3가지 핵심 패턴
차트를 읽을 때는 세 가지 방향으로 봐야 합니다. 첫째, 가로 방향(시간 흐름)은 특정 코호트의 시간에 따른 이탈 곡선을 보여줍니다. 가파르게 떨어지는지, 어느 시점에 평탄해지는지(stabilization)가 핵심입니다. 둘째, 세로 방향(코호트 간 비교)은 시간이 지나면서 신규 코호트의 동일 시점 잔존율이 좋아지고 있는지를 보여줍니다. 셋째, 대각선(같은 달력 날짜)은 외부 이벤트(예: 명절, 마케팅 캠페인)가 모든 코호트에 동시 영향을 줬는지 확인할 수 있습니다.
"스마일 커브"가 보여주는 PMF
세 번째 주 이후 잔존율이 평평해지다가 다시 올라가는 모양을 흔히 스마일 커브(smile curve)라고 부릅니다. 이탈한 사용자가 다시 돌아온다는 의미로, 강력한 프로덕트 마켓 핏(PMF)의 신호로 해석됩니다. 반대로 끝없이 내려가는 곡선은 가치 전달이 실패하고 있다는 뜻입니다.
실전 구현: SQL 쿼리와 분석 도구
SQL 쿼리 예시
가입 월별 사용자 코호트를 만든 뒤, 각 코호트의 N주 후 잔존율을 계산하는 가장 기본적인 SQL 쿼리는 다음과 같습니다.
WITH cohort AS (
SELECT user_id,
DATE_TRUNC('month', signup_at) AS cohort_month
FROM users
),
activity AS (
SELECT user_id,
DATE_TRUNC('week', event_at) AS active_week
FROM events
GROUP BY 1, 2
)
SELECT c.cohort_month,
DATEDIFF('week', c.cohort_month, a.active_week) AS week_offset,
COUNT(DISTINCT a.user_id) AS active_users
FROM cohort c
JOIN activity a USING (user_id)
GROUP BY 1, 2
ORDER BY 1, 2;
이렇게 얻은 결과를 코호트별 사용자 수로 나누어 % 잔존율로 변환하면 차트가 완성됩니다. 실무에서는 dbt(data build tool)로 위 로직을 모델화해 매주 자동 갱신되도록 만드는 것이 일반적입니다.
도구별 특징
| 도구 | 특징 | 추천 사용처 |
|---|---|---|
| Amplitude | UI에서 클릭 몇 번으로 코호트 생성 | 프로덕트 팀 |
| Mixpanel | 행동 코호트와 펀넬 분석 강점 | 그로스 팀 |
| GA4 | 무료, 웹/앱 통합 | 초기 스타트업 |
| Tableau·Looker | SQL 기반 커스텀 차트 | 데이터팀 보유 기업 |
데이터 거버넌스 체크리스트
- 이벤트 정의(active의 기준이 로그인인지, 핵심 액션 수행인지) 합의
- 가입일 타임존 통일(UTC vs KST)
- 환불·중복 가입·테스트 계정 정합성 처리
이 세 가지를 정해두지 않으면 같은 데이터를 보고도 두 팀이 서로 다른 숫자를 가져오는 일이 흔하게 발생합니다.
활용 사례와 흔한 함정
활용 사례 1 — 슬랙의 마법의 숫자
Slack은 초기 코호트 분석에서 "2,000개 메시지를 주고받은 팀은 90% 이상이 유료 전환된다"는 사실을 발견하고, 이 숫자를 모든 온보딩 KPI의 기준으로 삼았습니다. 신규 워크스페이스가 2,000 메시지에 빨리 도달하도록 유도하는 모든 기능이 PMF의 결정타가 됐습니다.
활용 사례 2 — 토스의 채널별 LTV
토스는 광고 채널별로 코호트를 끊어 LTV를 계산하고, 채널마다 CAC 상한선을 별도 세팅합니다. 평균이 아닌 코호트 단위 LTV로 광고 예산을 배분한 결과, 같은 마케팅 예산으로 더 높은 LTV 사용자를 유치할 수 있었다고 알려져있습니다.
활용 사례 3 — 당근마켓의 지역별 코호트
당근마켓은 일찍부터 동네별 코호트를 끊어 추적했습니다. 강남구 1월 가입자와 부산 해운대구 1월 가입자의 6개월 잔존율을 별도로 비교한 결과, 신규 진출 지역에서 일정 사용자 밀도(critical mass)를 넘기기 전까지는 잔존율이 극적으로 떨어진다는 사실을 발견했습니다. 이 인사이트는 지역 확장 시점의 광고 예산 집행 방식 자체를 바꿔놓았습니다. 단순 가입자 수가 아니라 동 단위 활성도라는 새 기준이 만들어진 셈입니다.
활용 사례 4 — 넷플릭스의 시즌제 코호트
넷플릭스는 신작 오리지널 시리즈가 공개될 때마다 그 시점에 신규 가입한 코호트를 별도로 추적합니다. 작품의 매력으로 들어온 사용자가 시즌이 끝난 뒤 얼마나 남는지를 시간 축으로 보면, "어떤 작품이 사용자 평생 가치를 만들고 어떤 작품은 단기 트래픽만 만드는지"를 정확히 구분할 수 있습니다. 광고비를 어디에 더 쓸지, 다음 시즌 제작비를 어느 IP에 투자할지를 결정하는 핵심 보드룸 데이터로 자리 잡았습니다.
흔한 함정 1 — 표본 크기 무시
월간 가입자가 100명 미만이면 코호트 잔존율이 통계적으로 불안정합니다. 작은 코호트의 한두 명 이탈이 % 수치를 크게 흔들기 때문에 적어도 코호트당 500명 이상을 권장합니다.
흔한 함정 2 — 정의 변경의 무자비함
"활성 사용자"의 정의를 도중에 바꾸면 이전 코호트와 비교가 불가능해집니다. 정의를 바꿔야 할 때는 옛 정의와 새 정의를 한동안 함께 추적해 변환 비율을 기록해두는 절차가 필요합니다.
흔한 함정 3 — 평균만 보고 끝내기
전체 잔존율이 좋아 보여도 신규 코호트가 더 빠르게 이탈하고 있을 수 있습니다. 항상 최신 코호트의 곡선을 별도로 추적해야 합니다.