Activation(활성화)은 서비스별로 정의는 다를 수 있지만, 일반적으로 Acquisition 단계에서 유입된 사용자가 제품의 핵심 기능을 직접 경험했는지를 확인하는 과정이다.
가입만 하고 떠나는 사용자와 실제로 서비스를 써보는 사용자를 구분할 수 있는 지표이기도 하다.
일반적으로 회원가입 이후 7일 이내의 행동 분석을 통해 제품의 핵심 가치를 얼마나 빠르게 전달했는지를 측정하며, 전환율(CVR)과 같은 지표를 사용한다.
따라서 Activation을 제대로 분석하면 다음 단계인 Retention, Referral, Revenue로 이어지는 핵심 전환점이 된다.
💡 체류 시간(TS, Time spent)
: 프로덕트에서 소요한 시간 = 마지막 페이지 접속 시간 - 첫페이지 접속 시간💡 전환율(CVR, Conversion Ratio)
: 프로덕트가 제공하는 가치에 도달한 비율 = (상품 구매 수) / (서비스 총 방문자 수)CVR은 일반적으로 Acquisition 이후 Revenue 사이의 핵심 전환율 지표로 사용되며, Activation 단계에서는 '핵심 기능 경험율'처럼 별도의 정의를 사용하는 경우가 많다.
사용자가 회원가입 후 며칠 내에 검색을 했는지를 분석하기 위해, 아래와 같이 데이터를 구성했다.
signup_date: 회원가입 날짜first_search_date: 첫 검색 날짜purchase_amount: 추후 구매 분석을 위한 금액 정보import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 가상의 데이터 생성
np.random.seed(42)
num_users = 100
data = {
'user_id': range(1, num_users + 1),
'signup_date': pd.date_range(start='2024-10-01', periods=num_users, freq='D'),
'first_search_date': pd.date_range(start='2024-10-02', periods=num_users, freq='D') +
pd.to_timedelta(np.random.randint(0, 10, size=num_users), unit='D'),
'purchase_amount': np.random.randint(0, 100000, size=num_users)
}
df = pd.DataFrame(data)
| user_id | signup_date | first_search_date | purchase_amount |
|---------|-------------|-------------------|------------------|
| 1 | 2024-10-01 | 2024-10-08 | 78603 |
| 2 | 2024-10-02 | 2024-10-06 | 52256 |
| 3 | 2024-10-03 | 2024-10-11 | 89135 |
정량적인 Activation 지표를 만들기 위해서는 명확한 기준이 필요하다.
해당 예시에서는 "가입 후 7일 이내에 첫 검색을 했는가?"를 기준으로 Activation 여부를 판단한다. Activation의 기준은 ‘회원가입 후 7일 이내 첫 검색 여부’로 설정한다.
is_activated : 조건: 첫 검색이 회원가입 후 7일 이내면 활성화로 간주total_users : 총 사용자수activated_users: 활성화된 사용자수Activation Rate: 활성화 %Activation Rate = (7일 이내 검색한 사용자 수) / (전체 사용자 수)
# 가입일로부터 7일 이내 첫 검색 시 True로 간주
df['is_activated'] = (df['first_search_date'] - df['signup_date']).dt.days <= 7
total_users = len(df)
activated_users = df['is_activated'].sum()
activation_rate = activated_users / total_users
print(f"총 사용자 수: {total_users}")
print(f"Activation된 사용자 수: {activated_users}")
print(f"Activation Rate: {activation_rate:.2%}")
총 사용자 수: 100
Activation된 사용자 수: 62
Activation Rate: 62.00%
이탈률을 줄이고 활성화 비율을 높이기 위해 초기 온보딩이나 안내 메세지를 개선 등을 고려해 볼 수 있다.
plt.figure(figsize=(8, 5))
df['is_activated'].value_counts().plot(kind='bar', color=['skyblue', 'orange'])
plt.title('Activation Status')
plt.xticks(ticks=[0, 1], labels=['Not Activated', 'Activated'], rotation=0)
plt.xlabel('Activation Status')
plt.ylabel('Number of Users')
plt.show()

시각화를 통해 비활성 사용자 비중을 직관적으로 파악할 수 있고, Activation된 사용자만을 타겟으로 후속 마케팅을 시행할 수도 있다.
Activation된 사용자와 아닌 사용자 간 구매 행동 차이를 분석하여, Activation의 기준이 실제 전환율에 의미 있는지를 확인해야 한다.
# 사용자 그룹 분리
activated_df = df[df['is_activated'] == True]
non_activated_df = df[df['is_activated'] == False]
# 평균 구매 금액 비교
avg_purchase_activated = activated_df['purchase_amount'].mean()
avg_purchase_non_activated = non_activated_df['purchase_amount'].mean()
print(f"Activation된 사용자의 평균 구매 금액: {avg_purchase_activated:.2f} 원")
print(f"Activation되지 않은 사용자의 평균 구매 금액: {avg_purchase_non_activated:.2f} 원")
Activation된 사용자의 평균 구매 금액: 55826.39 원
Activation되지 않은 사용자의 평균 구매 금액: 55457.42 원
두 그룹 간 구매 금액 차이는 크지 않지만, Activation된 사용자가 더 높은 평균 구매액을 기록했다.
단일 지표보다는 다른 전환 행동(장바구니 추가, 첫 구매 등)과 병행하여 분석하면 더 의미 있는 기준을 만들 수 있다.
지금까지 가입 후 첫 행동(검색)을 기준으로 Activation을 정의했고, 활성 사용자 비율을 계산하고 행동 차이를 분석해 보았다. Activation 단계는 단지 가입 유저 수를 세는 것이 아니라, 제품의 진짜 가치를 경험한 사용자 비율을 측정하는 것이 핵심이다.
서비스 특성에 따라 Activation의 기준은 달라질 수 있다. 하지만 어떤 기준이든, 그 정의가 명확하고 전환 행동과 연결될수록 실질적인 인사이트를 제공하게 된다.