StageUp
Web SDKEvents

Custom Events

Create domain‑specific events to analyze more precise user behaviors.

🎯 Creating Custom Events

What kind of events should I define?

If a user action matters to your business or product KPIs, make it a tracked event:

// Recipe site example
AdStage.events.track('recipe_bookmarked', {
  recipe_id: 'chicken_curry_123',
  recipe_name: 'Chicken Curry',
  difficulty: 'medium',
  cooking_time: 30
});
 
// E‑commerce example
AdStage.events.track('wishlist_added', {
  product_id: 'PROD_456',
  product_name: 'Wireless Earbuds',
  price: 89000,
  category: 'Electronics'
});

Naming Guidelines

No strict required schema, but use clear, action‑oriented names:

// Easy to distinguish during analysis
AdStage.events.track('video_play_started', { video_id: '123' });
AdStage.events.track('video_play_completed', { video_id: '123' });
 
// Use consistent patterns for similar flows
AdStage.events.track('course_lesson_started', { course_id: 'js101', lesson_id: 'variables' });
AdStage.events.track('course_lesson_completed', { course_id: 'js101', lesson_id: 'variables' });

🏢 Industry Use Cases

E‑commerce

Track behavior patterns to understand intent & friction:

// Quick preview interaction
AdStage.events.track('product_quick_preview', {
  product_id: 'PROD_123',
  product_name: 'Wireless Earbuds',
  price: 89000,
  from_section: 'Recommended'
});
 
// Added to wishlist
AdStage.events.track('added_to_wishlist', {
  product_id: 'PROD_123',
  current_wishlist_count: 5,
  product_price: 89000
});
 
// Restock alert request (helps forecast demand)
AdStage.events.track('restock_alert_requested', {
  product_id: 'PROD_456',
  product_name: 'Sold Out Product',
  user_email_domain: 'gmail.com' // Generalized; avoid raw PII
});
 
// Review created
AdStage.events.track('review_written', {
  product_id: 'PROD_123',
  rating: 5,
  review_has_photo: true
});

Online Learning Platform

Identify learning quality & engagement drivers:

// Lesson watching (helps find difficult segments)
AdStage.events.track('lesson_watched', {
  course_name: 'JavaScript Basics',
  lesson_title: 'Variables & Types',
  watch_percentage: 75,
  watch_time_minutes: 8,
  rewound_count: 2 // Rewind count signals difficulty
});
 
// Quiz result
AdStage.events.track('quiz_finished', {
  quiz_name: 'JS Basic Quiz',
  score: 85,
  total_score: 100,
  attempt_number: 1,
  passed: true
});
 
// Course completion
AdStage.events.track('course_completed', {
  course_name: 'JavaScript Basics',
  completion_days: 14,
  final_score: 92
});

Games

Understand progression, economy, and retention drivers:

// Session start
AdStage.events.track('game_started', {
  game_mode: 'Survival',
  difficulty: 'hard',
  character_level: 15,
  playtime_today_minutes: 45
});
 
// Level up (balance tuning)
AdStage.events.track('level_up', {
  new_level: 15,
  time_to_levelup_minutes: 45,
  main_activity: 'monster_hunting'
});
 
// Item obtained
AdStage.events.track('item_obtained', {
  item_name: 'Legendary Sword',
  item_grade: 'legendary',
  how_obtained: 'boss_drop',
  player_level: 15
});
 
// IAP purchase
AdStage.events.track('item_purchased', {
  item_type: 'in_game_currency',
  amount: 1000,
  real_price: 9900, // KRW
  reason: 'insufficient_balance'
});

Media / Blog

Discover what content engages and converts readers:

// Finished reading article
AdStage.events.track('article_finished_reading', {
  article_title: '2024 Tech Trends',
  category: 'Technology',
  read_time_minutes: 4,
  scroll_percentage: 100,
  word_count: 1200
});
 
// Comment added
AdStage.events.track('comment_added', {
  article_title: 'Interesting Article',
  comment_length: 85,
  is_reply: false,
  user_type: 'regular_reader'
});
 
// Newsletter signup
AdStage.events.track('newsletter_signed_up', {
  newsletter_type: 'Weekly Digest',
  signup_location: 'article_bottom_cta',
  reader_visits_this_month: 5
});
 
// Article shared
AdStage.events.track('article_shared', {
  article_title: 'Popular Article',
  share_platform: 'twitter',
  share_location: 'header_button'
});

💡 Practical Strategy

Always ask: “What decision will this event enable later?”

// Exit intent tracking (understand churn triggers)
AdStage.events.track('page_exit_attempt', {
  page_name: 'product_detail',
  time_on_page_seconds: 30,
  scroll_depth: 25,
  exit_trigger: 'back_button'
});
 
// Feature usage adoption
AdStage.events.track('feature_used', {
  feature_name: 'price_comparison',
  user_type: 'premium',
  usage_count_today: 3
});

By defining the right events, you can power precise Segments and Funnels within the AdStage dashboard.

Table of Contents