리텐션이 0에 수렴해서 데이터부터 다시 들여다봤더니
Foundry는 백엔드 엔지니어를 위한 기초 지식 학습 플랫폼입니다. 시험을 보고, 틀린 문제를 오답노트에 정리하고, 개념을 복습하는 서비스인데요. 베타 오픈 후 커뮤니티에 올려서 유저도 좀 모았고, 기능도 하나하나 잘 만들어놨다고 생각했습니다.
그런데 GA4를 열어보니 현실은 달랐거든요.
문제: 숫자가 말해주는 현실
GA4 리포트를 열어봤더니 대시보드 페이지뷰는 429인데, 시험 결과 페이지뷰는 고작 몇십 건이었습니다. 오답노트 페이지는 거의 방문이 없었고요.
"리텐션이 안 좋은 것 같다"는 느낌은 있었는데, 정확히 어디서 얼마나 빠지는지 모르고 있었습니다. 그래서 이번에 제대로 파보기로 했습니다.
데이터 파이프라인부터 만들었습니다
보통은 GA4 화면을 캡처해서 공유하고, DB는 SQL 쿼리를 하나하나 돌리는데요. 이번엔 다른 방식을 써봤습니다. Claude Code(AI 코딩 에이전트)가 직접 데이터를 조회하고 분석할 수 있도록 파이프라인을 구성했거든요.
Supabase DB 직접 조회
Supabase는 REST API를 제공하고 있어서, Service Role Key만 있으면 바로 쿼리가 가능합니다.
curl -s "https://{url}/rest/v1/exams?select=user_id,status,created_at" \
-H "apikey: {SERVICE_ROLE_KEY}" \
-H "Authorization: Bearer {SERVICE_ROLE_KEY}"
GA4 Data API 연동
GA4는 서비스 계정을 만들고 Python google-analytics-data 라이브러리로 접근했습니다. 트래픽, 이벤트 퍼널, 트래픽 소스 같은 데이터를 프로그래밍으로 뽑을 수 있게 됐거든요.
이렇게 세팅해두니까 "가입 전환율이 몇 %야?", "오답노트 사용률은?" 같은 질문에 바로 데이터로 답할 수 있게 되었습니다. 감이 아니라 숫자로 판단할 수 있는 환경이 된 거죠.
퍼널을 뜯어봤더니
GA4 이벤트 데이터와 DB 데이터를 교차 분석해서 전체 퍼널을 그려봤습니다.
방문 131명 → 가입 40명(31%) → 시험시작 28명 → 시험완료 22명 → 재방문 3명(11%)
이벤트 기반으로 더 상세하게 보면
| 단계 | 유저 수 | 전환율 |
|---|---|---|
| CTA 클릭 | 71명 | - |
| 로그인 시도 | 49명 | 69% |
| 가입 완료 | 29명 | 59% (로그인 시도 대비) |
| 시험 시작 | 29명 | 100% |
| 시험 완료 | 20명 | 69% |
여기서 눈에 띄는 건 두 가지였는데요.
첫째, CTA를 클릭한 71명 중 가입 완료는 29명뿐이었습니다. 카카오 로그인 과정에서 42%가 이탈하고 있었거든요.
둘째, 가입하면 시험은 거의 100% 시작합니다. 근데 그 다음이 문제였습니다.
DB를 파보니 더 심각했습니다
DB에서 유저별 행동 패턴을 분류해봤더니 이런 그림이 나왔습니다.
| 유형 | 비율 |
|---|---|
| 가입 후 시험 미완료 | 32% |
| 시험 1번 보고 영구 이탈 | 43% |
| 당일 2-3번 보고 이후 미복귀 | 14% |
| 다른 날 재방문 | 11% (3명) |
75%가 첫날 이후 돌아오지 않는 거였습니다. 그리고 오답노트 데이터를 보면 더 놀라운데요.
오답노트 126개 생성, 6개 열람(5%), 메모 작성은 4개(3%)
핵심 기능이라고 생각했던 오답노트를 아무도 안 쓰고 있었습니다.
한 가지 더 확인한 건 점수와 이탈의 상관관계였는데요. 이탈 유저 평균 60점, 재방문 유저 평균 62점으로 유의미한 차이가 없었습니다. 시험을 못 봐서 떠나는 게 아니었던 거죠.
진단: 새는 양동이에 물 붓기
데이터를 종합해보니 사용자 여정이 이렇게 흘러가고 있었습니다.
랜딩 방문 → 가입 → 시험 시작 → 시험 완료 → 점수 확인 → "그래서?" → 이탈
문제의 핵심은 시험 완료 후 "다음 행동"이 없다는 거였습니다. 점수를 확인하고 나면 할 게 없거든요. 오답노트 페이지는 별도로 찾아가야 했고, 재시험을 보려면 처음부터 새로 만들어야 했습니다.
처음에는 "마케팅을 더 열심히 해야 하나?" 싶었는데요. 데이터를 보니 정반대였습니다.
지금 상태로 마케팅 예산을 2배 써서 262명이 와도, 재방문하는 건 6명뿐입니다. 전환율은 변하지 않거든요.
리텐션을 해결하지 않고 마케팅을 늘리는 건 새는 양동이에 물을 더 붓는 거였습니다.
실행 계획: P0부터 차근차근
분석 결과를 토대로 우선순위를 매겼습니다. 기준은 간단했는데요 - 퍼널에서 가장 많이 새는 곳부터 막는 겁니다.
P0: 활성화 루프 만들기 (가장 시급)
시험 완료 후 "다음에 뭘 해야 하지?"를 해결하는 게 1순위입니다.
결과 화면 강화 - 현재는 점수와 오답 리스트만 보여주는데, 약점 토픽 분석("인덱싱에서 0/2 틀림")과 함께 "이 개념 복습하기" 링크로 학습 가이드에 바로 연결하려고 합니다.
오답노트 인라인 표시 - 별도 페이지로 이동해야 보이던 오답노트를 결과 화면 하단에 바로 보여줍니다. 사용자가 "찾아가는" 게 아니라 "자동으로 보이는" 경험으로 바꾸는 거죠.
오답만 재시험 - 틀린 문제만 모아서 바로 다시 풀 수 있게 합니다. 전부 맞출 때까지 반복하면 당일 학습 루프가 완성되는 구조입니다.
P1: 랜딩 전환율 개선 (31% → 50%)
CTA 클릭 71명 중 가입은 29명이었는데요. 카카오 로그인 허들이 큰 게 문제였습니다. 그래서 로그인 없이 3문제를 체험할 수 있게 하고, 결과를 보려면 가입하도록 유도하려 합니다.
P2: 재방문 동기 만들기
학습 현황 대시보드(토픽별 마스터율 시각화), 약점 기반 시험 추천 같은 것들입니다. P0가 해결되고 나서 진행할 예정입니다.
AI를 분석 도구로 쓴 소감
이번에 인상적이었던 건, AI한테 "리텐션이 낮은데 어떡해?"라고 물어본 게 아니라 GA4와 DB 데이터를 직접 조회할 수 있는 환경을 만들어줬다는 점입니다.
Claude Code에 Supabase REST API 접근 권한과 GA4 서비스 계정을 연결해두니, "유저별 시험 횟수 분포 보여줘", "이벤트 퍼널 그려봐" 같은 요청에 즉시 데이터를 뽑아서 분석해주더라고요. 사람이 GA4 화면을 캡처해서 공유하는 것보다 훨씬 빠르고, 교차 분석도 바로 가능했습니다.
핵심은 AI한테 "답을 달라"고 한 게 아니라 "데이터를 볼 수 있는 눈을 줬다"는 것인데요. 데이터에 접근할 수 있으니 추측이 아닌 근거 기반 분석이 나온 거죠.
정리하며
느낌으로 "리텐션이 안 좋다"를 알고 있는 것과, 데이터로 "75%가 첫날 이탈하고 오답노트 사용률은 5%"를 확인하는 건 전혀 다른 문제였습니다.
전자는 "마케팅을 더 해볼까?" 같은 막연한 대응으로 이어지는 반면, 후자는 "시험 결과 화면 다음에 할 게 없어서 나간다"는 구체적인 진단이 되거든요.
사이드 프로젝트에서 데이터 파이프라인을 만드는 게 거창하게 느껴질 수 있는데요. Supabase REST API + GA4 Data API 조합이면 생각보다 간단하게 세팅할 수 있었습니다. 비슷한 상황에 계신 분들 참고가 되면 좋겠습니다.

