StageUp
웹 SDK이벤트

사용자 속성 관리

사용자의 특성과 행동 패턴을 추적하여 개인화된 서비스와 타겟 마케팅을 구현할 수 있습니다.

🔍 사용자 식별

고유 사용자 추적

고유한 사용자를 식별하고 세션 간 추적을 연결합니다:

// 로그인 시 사용자 ID 설정
AdStage.events.setUserId('user_12345');
 
// 현재 사용자 ID 확인
const userId = AdStage.events.getUserId();
console.log('현재 사용자 ID:', userId);

익명 사용자 추적

로그인하지 않은 사용자도 세션 기반으로 자동 추적됩니다:

// 익명 ID는 SDK에서 자동 생성 및 관리
// 별도 설정이나 조회 API는 제공되지 않습니다
// 세션 기반으로 자동으로 추적됩니다

👤 사용자 속성 설정

지원되는 표준 속성

SDK에서 지원하는 표준 사용자 속성입니다:

// 여러 속성 한번에 설정 (권장 방법)
AdStage.events.setUserProperties({
  age: '25',           // 연령 (문자열)
  gender: 'female',    // 'male' | 'female' | 'other' | 'unknown'
  country: 'KR',       // ISO 국가 코드 (ISO 3166-1 alpha-2)
  city: 'Seoul',       // 도시명
  language: 'ko-KR'    // 언어 코드 (BCP 47)
});
 
// 개별 속성 설정 API는 현재 제공되지 않습니다
// 모든 속성은 setUserProperties()를 통해 설정하세요

자동 수집되는 속성

SDK가 브라우저에서 자동으로 수집하는 정보:

// 브라우저 언어 설정에서 자동 추출
// navigator.language → language, country 자동 설정
// 예: 'ko-KR' → language: 'ko-KR', country: 'KR'
 
// 자동 수집된 사용자 정보 확인
const userInfo = AdStage.events.getUserInfo();
console.log(userInfo);
// { language: 'ko-KR', country: 'KR' }
 
// 타임존 기반 지역 추정은 내부적으로 수행되며
// 별도 API로 노출되지 않습니다

속성 제한사항

현재 AdStage Web SDK는 표준 속성만 지원합니다:

// ✅ 지원되는 표준 속성
AdStage.events.setUserProperties({
  gender: 'female',      // 'male' | 'female' | 'other' | 'unknown'
  country: 'KR',         // ISO 국가 코드
  city: 'Seoul',         // 도시명
  age: '25',             // 연령 (문자열)
  language: 'ko-KR'      // 언어 코드
});
 
// ❌ 커스텀 속성은 지원하지 않음
// 대신 이벤트 파라미터를 사용하세요
AdStage.events.track('user_profile_updated', {
  subscription_tier: 'premium',    // 이벤트 파라미터로 전송
  account_type: 'business',
  last_login: '2024-01-15'
});

📊 사용자 속성 관리

속성 조회 및 관리

// 현재 설정된 사용자 속성 조회
const currentProperties = AdStage.events.getUserProperties();
console.log('현재 사용자 속성:', currentProperties);
 
// 개별 속성 조회 및 속성 초기화 API는 현재 제공되지 않습니다
// 모든 속성은 getUserProperties()를 통해 일괄 조회하세요
 
// 속성을 초기화하려면 빈 객체로 설정
AdStage.events.setUserProperties({});

지역 정보 활용

// 브라우저 기반 자동 수집 정보 확인
const userInfo = AdStage.events.getUserInfo();
console.log('자동 수집된 사용자 정보:', userInfo);
// { language: 'ko-KR', country: 'KR' }
 
// 지역 정보는 내부적으로 자동 추정되어 설정됩니다
// 수동으로 더 정확한 정보가 있다면 덮어쓸 수 있습니다
AdStage.events.setUserProperties({
  country: 'KR',
  city: 'Seoul',
  language: 'ko-KR'
});

🎯 개인화 활용

사용자 속성 기반 개인화

// 사용자 속성 기반 콘텐츠 추천
function personalizeContent() {
  const userProperties = AdStage.events.getUserProperties();
  
  // 연령대별 콘텐츠
  if (userProperties.age && parseInt(userProperties.age) < 30) {
    showYoungAdultContent();
  }
  
  // 지역별 콘텐츠
  if (userProperties.country === 'KR') {
    showKoreanContent();
  }
  
  // 언어별 콘텐츠
  if (userProperties.language?.startsWith('ko')) {
    setKoreanLanguage();
  }
}
 
// 속성 변경 시 개인화 업데이트
AdStage.events.setUserProperties({
  country: 'KR',
  language: 'ko-KR',
  age: '28'
});
personalizeContent();

이벤트와 함께 활용

// 사용자 속성은 모든 이벤트에 자동으로 포함됩니다
AdStage.events.track('page_view', {
  page: 'product_detail',
  product_id: 'prod_123'
});
// 서버에서 받는 데이터에는 설정된 사용자 속성이 포함됩니다:
// {
//   eventName: 'page_view',
//   user: {
//     gender: 'female',
//     country: 'KR',
//     city: 'Seoul',
//     age: '28',
//     language: 'ko-KR'
//   },
//   params: { page: 'product_detail', product_id: 'prod_123' }
// }

목차