Files
slopus--happy/docs/product-analytics.md
wehub-resource-sync 98e40dac97
CLI Smoke Test / smoke-test-linux (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-linux (24) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (24) (push) Has been cancelled
Expo App TypeScript typecheck / typecheck (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:40:49 +08:00

3.8 KiB

Product Analytics

[auto]

Navigation

  • $screen
    • $screen_name

Lifecycle

  • Application Installed
  • Application Updated
    • previous_version?
    • previous_build?
  • Application Opened
    • url?
  • Application Became Active
  • Application Backgrounded

[explicit]

Auth

  • account_created
  • account_restored
    • note: this is restore-flow start, not restore success

Core

  • connect_attempt
  • message_sent
    • source
    • session_agent
    • session_started_source
    • happy_cli_version
    • ota_version
    • ota_runtime_version
  • session_switched
    • session_id
    • session_created_at
    • last_active_at
    • last_updated_at

Voice

  • voice_permission_response
    • allowed
  • voice_session_started
    • session_id
    • elevenlabs_conversation_id
  • voice_session_error
    • session_id
    • elevenlabs_conversation_id
    • error
  • voice_session_stopped
    • session_id
    • elevenlabs_conversation_id
    • duration_seconds

Paywall

all include flow property which customizes the upsell screen shown by revenue cat.

  • paywall_button_clicked
  • paywall_presented
  • paywall_purchased
  • paywall_restored
  • paywall_cancelled
  • paywall_error
    • error

Review

  • review_prompt_shown
  • review_prompt_response
    • likes_app
  • review_store_shown
  • review_retry_scheduled
    • days_until_retry

Updates

  • ota_update_available
    • ota_version
    • ota_runtime_version
  • ota_update_applied
    • ota_version
    • ota_runtime_version
  • whats_new_clicked

GitHub

  • github_connected

Friends

  • friends_search
  • friends_profile_view
  • friends_connect

Appendix

Shared SDK Properties

  • every capture(...) send also includes:
    • $lib
    • $lib_version
    • $session_id
    • $screen_height
    • $screen_width
    • $process_person_profile
    • $is_identified
    • $device_type
    • $app_build?
    • $app_name?
    • $app_namespace?
    • $app_version?
    • $device_manufacturer?
    • $device_name?
    • $os_name?
    • $os_version?
    • $locale?
    • $timezone?
    • $screen_name?
    • event
    • distinct_id

Identity And Control Sends

  • $identify
  • $set
  • reset
  • optIn
  • optOut

Strong Preferences

  • Prefer a small number of core events with explicit properties over a growing set of overlapping events.
  • message_sent is the canonical outbound send event. Do not add parallel send events for specific surfaces like voice. Add or use source instead.
  • If a new analytics question can be answered by extending an existing event, prefer adding a property over inventing a new event.
  • session_switched should carry stable identity, not just recency. Keep session_id and session_created_at on it.
  • OTA context is first-class and should travel with the events that matter. Keep ota_version and ota_runtime_version on message_sent, ota_update_available, and ota_update_applied.
  • Prefer direct, explicit property objects at capture sites. Do not hide event shape behind generic helper layers that silently add, remove, or filter fields.
  • If we ever care about session-switch entry source, add an explicit source property. Do not try to reconstruct it later from navigation context.

Notes

  • session_switched now includes stable identity (session_id, session_created_at) plus recency. Entry source is still merged until we add an explicit source property.
  • elevenlabs_conversation_id is the conversation id returned by the ElevenLabs voice session layer.
  • github_connected is a plain event with no GitHub profile data attached.

Relevant Sources

  • packages/happy-app/sources/track/index.ts
  • packages/happy-app/sources/hooks/useNavigateToSession.ts
  • packages/happy-app/sources/-session/SessionView.tsx
  • packages/happy-app/sources/realtime/RealtimeSession.ts
  • packages/happy-app/sources/components/SettingsView.tsx
  • packages/happy-app/sources/sync/sync.ts
  • packages/happy-app/sources/track/useTrackScreens.ts
  • packages/happy-app/sources/track/tracking.ts