롤링 리텐션

🔥 실무 꿀팁 전통 및 현대 퍼널 모델

롤링 리텐션

Unbounded Retention

💡 3줄 핵심 꿀팁 요약

롤링 리텐션(Unbounded Retention)은 첫 방문(Install) 일자 이후 특정 N일차 이후에 단 한 번이라도 재방문한 유저의 비율을 구하는 방식입니다. 비주기적 서비스에서 유저가 이탈했는지를 판단하는 데 필수적이며, 공식은 (N일차 이후 재방문 유저 수 / 최초 코호트 유저 수) * 100 입니다.

📖 개념 정의 및 실무 적용

여행, 부동산, 중고거래 등 비주기적 성격을 띤 서비스에서는 매일 혹은 매주 접속하는 전통적 N-Day 리텐션을 적용하면 지표가 바닥을 치게 되어 정확한 프로덕트-마켓 피트(PMF)를 측정하기 어렵습니다. 롤링 리텐션은 유저가 언제 돌아오든 ‘N일 이후에 최소 한 번이라도 다시 왔는가’를 측정하므로, 주기가 불규칙한 서비스에서 장기 잔존 트렌드를 파악하는 데 가장 적합한 비효율 해결책을 제공합니다.

이 지표를 활용하면 단기적인 푸시 알림 효과에 가려진 진정한 서비스 체류 가치를 발견할 수 있으며, 마케팅 채널별 유저의 장기 락인(Lock-in) 효과를 비교하여 예산 배분의 효율성을 극대화할 수 있습니다. 특히 코호트 분석과 결합할 때 리텐션 커브가 수평으로 수렴하는 지점을 찾아내어 실질적인 진성 고객 규모를 정의하는 핵심 기준이 됩니다.

SQL SNIPPET
WITH first_seen AS (SELECT user_id, MIN(DATE(event_timestamp)) AS install_date FROM analytics_events GROUP BY user_id), user_activity AS (SELECT DISTINCT u.user_id, u.install_date, DATE(e.event_timestamp) AS activity_date FROM first_seen u JOIN analytics_events e ON u.user_id = e.user_id WHERE DATE(e.event_timestamp) >= u.install_date), unbounded_retention AS (SELECT install_date, DATE_DIFF(activity_date, install_date, DAY) AS day_number, COUNT(DISTINCT user_id) AS active_users FROM user_activity GROUP BY 1, 2) SELECT install_date, (SELECT COUNT(DISTINCT user_id) FROM first_seen f WHERE f.install_date = r.install_date) AS total_users, day_number, active_users FROM unbounded_retention r WHERE day_number = 30 ORDER BY install_date;

⚡ 5분 만에 적용하는 실행 스텝

STEP 1

유저별 최초 발생 이벤트(Install 또는 Sign up)의 날짜를 추출하여 코호트 베이스를 정의합니다.

STEP 2

최초 유입일 이후 발생한 모든 재방문(Session/Event) 날짜를 유저 ID 기준으로 조인합니다.

STEP 3

재방문 날짜와 최초 유입일의 차이(Day Diff)를 계산하여 N일차 이후의 활동 여부를 마킹합니다.

STEP 4

타겟으로 하는 N일차(예: 30일차) 이상 시점에 서비스에 접속한 유저 수를 최초 코호트 유저 수로 나누어 롤링 리텐션 퍼센트를 산출합니다.

🚀 실무자만 아는 한 끗 차이 Pro Tip

첫째, 롤링 리텐션은 시간이 지날수록 최근 코호트의 모수가 비어있어(아직 N일이 지나지 않아서) 값이 왜곡되므로, 분석 시점에 도달한 코호트만 필터링(예: 30일 롤링 리텐션은 최소 30일 전에 가입한 유저만)하여 시각화하세요. 둘째, 가입 후 즉시 이탈한 오인 유입(Spam/Bot)을 제거하기 위해 가입일 당일 최소 2개 이상의 핵심 액션을 수행한 유저를 진성 코호트로 재정의하면 지표의 신뢰도가 급상승합니다.

⚠️ 흔히 하는 실수 & 주의사항 (삽질 방지)

첫째, 시차 계산 시 타임존(Timezone) 처리를 누락하면 하루 차이로 유저가 누락되거나 과대 집계되는 왜곡이 발생하므로 항상 서비스 국가 기준(예: KST)으로 일자(Date)를 통일해야 합니다. 둘째, N일차 리텐션을 구할 때 '정확히 N일차'가 아니라 'N일차 이상'이라는 점을 간과하여 날짜 범위를 잘못 지정하면 전통적 N-Day 리텐션과 혼동하여 잘못된 마케팅 의사결정을 내릴 수 있으므로 주의하세요.

❓ 자주 묻는 질문 (FAQ)

비주기적 서비스인데 N-Day 리텐션과 롤링 리텐션 중 무엇을 메인 지표로 써야 하나요?

매일 접속을 유도하는 유틸리티나 소셜 앱이 아니라면 롤링 리텐션을 메인으로 두어야 합니다. 부동산이나 여행 앱은 매일 쓰지 않는 것이 자연스럽기 때문에, N-Day로 측정하면 리텐션이 0에 수렴하여 인사이트를 얻을 수 없습니다.

최근 가입한 코호트의 롤링 리텐션이 갑자기 0%로 나오는데 에러인가요?

에러가 아닙니다. 롤링 리텐션은 N일이 경과해야만 데이터가 채워지는 구조이므로, 가입한 지 며칠 안 된 최신 코호트는 아직 해당 N일차에 도달하지 않아 데이터가 비어 있는 것이 정상입니다. 분석 시 쿼리에서 충분히 시간이 지난 코호트만 필터링해야 합니다.

💡 [] 꿀팁은 현재 검증/작성 중입니다!
위로 스크롤