adstage
Web SDK事件

使用者屬性管理

透過追蹤使用者的特徵與行為模式,可以實現個人化服務與精準行銷。

🔍 使用者識別

透過使用者屬性進行識別

AdStage Web SDK 不提供另外的使用者 ID 設定 API。取而代之的是,透過使用者屬性(setUserProperties)記錄使用者的特徵,並將其運用於分群與漏斗分析:

// 登入時設定使用者屬性
AdStage.events.setUserProperties({
  gender: 'male',      // 'male' | 'female' | 'other' | 'unknown'
  country: 'KR',       // ISO 國家代碼
  city: 'Seoul',       // 城市名稱
  age: '25-34',        // 年齡層
  language: 'ko-KR'    // 語言代碼
});
 
// 確認目前已設定的使用者屬性
const userProperties = AdStage.events.getUserProperties();
console.log('目前使用者屬性:', userProperties);

匿名使用者追蹤

未登入的使用者也會以工作階段為基礎自動被追蹤:

// 匿名使用者追蹤由 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' }
// }

目錄