Skip to content

πŸ“± λ¦¬ν…μ…˜(μž”μ‘΄μœ¨) λΆ„μ„μ΄λž€?

Written on 2025λ…„ 06μ›” 10일 by seonice90

Categories: λ―ΈλΆ„λ₯˜

βœ… λ¦¬ν…μ…˜ λΆ„μ„μ΄λž€?

**λ¦¬ν…μ…˜ 뢄석(Retention Analysis)**은 앱을 μ„€μΉ˜ν•˜κ±°λ‚˜ νšŒμ›κ°€μž…ν•œ μ‚¬μš©μžκ°€ 일정 μ‹œκ°„ 이후에도 μ—¬μ „νžˆ ν™œλ™ν•˜κ³  μžˆλŠ”μ§€λ₯Ό ν™•μΈν•˜λŠ” λΆ„μ„μž…λ‹ˆλ‹€.


❓ μ™œ λ¦¬ν…μ…˜ 뢄석을 ν•΄μ•Ό ν•˜λ‚˜μš”?

  1. λ§ˆμΌ€νŒ… 효율 μΈ‘μ •
    μœ μ €κ°€ 앱을 μ„€μΉ˜ν•œ ν›„ μ΄νƒˆν•˜μ§€ μ•Šκ³  λ‚¨μ•„μžˆλŠ” λΉ„μœ¨μ„ 보면, κ΄‘κ³  캠페인이 νš¨κ³Όμ μ΄μ—ˆλŠ”μ§€ 평가할 수 μžˆμ–΄μš”.
  2. μ„œλΉ„μŠ€ 초기 κ²½ν—˜ 평가
    μ„€μΉ˜ ν›„ 1~2일 λ‚΄ μ΄νƒˆμœ¨μ΄ λ†’λ‹€λ©΄, μ˜¨λ³΄λ”© UX κ°œμ„ μ΄ ν•„μš”ν•˜λ‹€λŠ” μ‹ ν˜ΈμΌ 수 μžˆμ–΄μš”.
  3. κΈ°λŠ₯ μ—…λ°μ΄νŠΈλ‚˜ 이벀트 효과 μΈ‘μ •
    νŠΉμ • κΈ°κ°„ 이후 λ¦¬ν…μ…˜μ΄ κ°œμ„ λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜λ©΄, 기획이 μ„±κ³΅μ μ΄μ—ˆλŠ”μ§€ νŒλ‹¨ν•  수 μžˆμ–΄μš”.

πŸ” μ–΄λ–€ μΈμ‚¬μ΄νŠΈλ₯Ό 얻을 수 μžˆμ„κΉŒ?

  • μ„€μΉ˜μΌ κΈ°μ€€μœΌλ‘œ λ‹€μŒλ‚ (N+1) μœ μ €κ°€ μ–Όλ§ˆλ‚˜ ν™œλ™ν–ˆλŠ”μ§€
  • 1일, 3일, 7일, 14일, 30일 κΈ°μ€€ λ¦¬ν…μ…˜ 비ꡐ
  • κ΄‘κ³  μœ μž… 채널별 λ¦¬ν…μ…˜ 뢄석 β†’ 유료 κ΄‘κ³  효율 κ°œμ„ 
  • κΈ°κΈ°/OS/성별/μ—°λ ΉλŒ€ λ“± μ„Έκ·Έλ¨ΌνŠΈλ³„ λ¦¬ν…μ…˜ 차이

πŸ’‘ GA4 BigQuery둜 λ¦¬ν…μ…˜ λΆ„μ„ν•˜λŠ” 방법

πŸ”§ μ€€λΉ„ 사항

  • event_name = 'first_open' β†’ μ„€μΉ˜μΌ κΈ°μ€€
  • event_name = 'session_start' or user_engagement β†’ ν™œλ™ ν™•μΈμš©

πŸ“Œ SQL 예제: 1일, 7일, 30일 λ¦¬ν…μ…˜ 계산

WITH first_open_users AS (
  SELECT
    user_pseudo_id,
    MIN(DATE(event_timestamp, "Asia/Seoul")) AS install_date
  FROM `your_project.analytics_XXXX.events_*`
  WHERE event_name = 'first_open'
    AND _TABLE_SUFFIX BETWEEN '20240501' AND '20240531'
  GROUP BY user_pseudo_id
),

user_activity AS (
  SELECT
    user_pseudo_id,
    DATE(event_timestamp, "Asia/Seoul") AS activity_date
  FROM `your_project.analytics_XXXX.events_*`
  WHERE event_name = 'user_engagement'
    AND _TABLE_SUFFIX BETWEEN '20240501' AND '20240630'
),

retention AS (
  SELECT
    f.install_date,
    DATE_DIFF(a.activity_date, f.install_date, DAY) AS day_diff,
    COUNT(DISTINCT a.user_pseudo_id) AS retained_users
  FROM first_open_users f
  JOIN user_activity a
    ON f.user_pseudo_id = a.user_pseudo_id
  WHERE DATE_DIFF(a.activity_date, f.install_date, DAY) IN (0, 1, 7, 30)
  GROUP BY f.install_date, day_diff
)

SELECT
  install_date,
  MAX(CASE WHEN day_diff = 0 THEN retained_users END) AS day_0,
  MAX(CASE WHEN day_diff = 1 THEN retained_users END) AS day_1,
  MAX(CASE WHEN day_diff = 7 THEN retained_users END) AS day_7,
  MAX(CASE WHEN day_diff = 30 THEN retained_users END) AS day_30,
  ROUND(MAX(CASE WHEN day_diff = 1 THEN retained_users END) * 100.0 /
        MAX(CASE WHEN day_diff = 0 THEN retained_users END), 1) AS day1_retention,
  ROUND(MAX(CASE WHEN day_diff = 7 THEN retained_users END) * 100.0 /
        MAX(CASE WHEN day_diff = 0 THEN retained_users END), 1) AS day7_retention,
  ROUND(MAX(CASE WHEN day_diff = 30 THEN retained_users END) * 100.0 /
        MAX(CASE WHEN day_diff = 0 THEN retained_users END), 1) AS day30_retention
FROM retention
GROUP BY install_date
ORDER BY install_date;

πŸ“ˆ κ²°κ³Ό μ˜ˆμ‹œ

install_dateday_0day_1day_7day_30day1_retentionday7_retentionday30_retention
2024-05-01100060040015060.0%40.0%15.0%

πŸ”„ μ‹€λ¬΄μ—μ„œμ˜ ν™œμš© 팁

  • μΌμžλ³„ λ¦¬ν…μ…˜ νŠΈλ Œλ“œλ‘œ μ˜¨λ³΄λ”© κ°œμ„  μ‹œκΈ° νŒŒμ•…
  • μœ μž… 경둜(traffic_source.source)별 λ¦¬ν…μ…˜ 비ꡐ β†’ κ΄‘κ³  효율 μ΅œμ ν™”
  • μœ μ € μ„Έκ·Έλ¨ΌνŠΈλ³„ 뢄석 (예: OS, 성별, λ‚˜μ΄λŒ€) β†’ νƒ€κ²Ÿ 맞좀 μ „λž΅ 수립
  • 캠페인 μ „/ν›„ 비ꡐ λΆ„μ„μœΌλ‘œ A/B ν…ŒμŠ€νŠΈ 효과 μΈ‘μ •

🏁 마무리

λ¦¬ν…μ…˜ 뢄석은 λ‹¨μˆœν•œ 퍼널 뢄석 κ·Έ μ΄μƒμž…λ‹ˆλ‹€.
μ‚¬μš©μž μœ μ§€μœ¨μ„ λ†’μ΄λŠ” μ „λž΅μ˜ 핡심이며,
GA4 BigQueryλ₯Ό ν™œμš©ν•˜λ©΄ μ •λ°€ν•˜κ³  μžλ™ν™”λœ λ¦¬ν…μ…˜ νŠΈλž˜ν‚Ήμ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

λ‹€μŒ λ‹¨κ³„λ‘œλŠ” μ„Έκ·Έλ¨ΌνŠΈλ³„ λ¦¬ν…μ…˜μ΄λ‚˜ LTV λΆ„μ„μœΌλ‘œ ν™•μž₯ν•΄λ³΄λŠ” 것도 μΆ”μ²œλ“œλ €μš”!

Powered by WordPress