# Analytics Taxonomy ## Rules - All analytics events are structured - No JSONB payloads - Events live in `analytics_events` - Attributes live in `analytics_event_attributes` ## Event Groups ### Lifecycle - `app_opened` - `app_backgrounded` - `app_closed` - `session_started` - `session_ended` ### Onboarding - `language_selected` - `consent_viewed` - `consent_accepted` ### Feed and Round Load - `feed_viewed` - `round_card_viewed` - `round_loaded` - `event_manifest_received` - `preview_prefetch_started` - `preview_prefetch_completed` ### Playback - `preview_started` - `preview_paused` - `preview_resumed` - `preview_completed` - `reveal_started` - `reveal_completed` - `playback_error` - `stream_reconnected` ### Timing and Odds - `countdown_visible` - `countdown_warning_threshold_hit` - `odds_panel_viewed` - `odds_version_received` - `odds_changed` ### Selection and Settlement - `outcome_focused` - `outcome_selected` - `selection_submitted` - `selection_accepted` - `selection_rejected` - `duplicate_selection_attempt` - `market_locked` - `result_viewed` - `next_round_requested` ### UI and Input - `screen_viewed` - `cta_pressed` - `gesture_swipe` - `gesture_tap` - `gesture_cancelled` - `haptic_triggered` ### Localization and Errors - `localization_bundle_loaded` - `locale_changed` - `network_error` ## Common Attributes - `screen_name` - `event_id` - `market_id` - `outcome_id` - `odds_version_id` - `countdown_ms_remaining` - `locale_code` - `experiment_variant` - `network_type` - `device_orientation` - `playback_position_ms` - `latency_ms` ## Research Metrics - Decision latency - Round completion rate - Missed rounds - Post-lock selection attempts - Replay desire - Exit rate - Control vs modern comparison - Locale effects - Device platform effects