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

163 lines
3.8 KiB
Markdown

# 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