Analytics¶
Last reviewed: April 2, 2026
Current analytics surface¶
BeFam uses Firebase Analytics instrumentation for authentication, member search, genealogy discovery join-request funnels, and onboarding journeys. Event and property identifiers are centralized in:
mobile/befam/lib/core/services/analytics_event_names.dart
Event constants in use¶
Auth analytics events¶
Tracked from AuthAnalyticsService:
auth_method_selectedauth_otp_requestedauth_child_context_resolvedauth_session_establishedauth_failureauth_logout
Member search analytics events¶
Tracked from MemberSearchAnalyticsService:
member_search_submitmember_search_failedmember_search_filters_updatedmember_search_retrymember_search_open_result
Genealogy discovery analytics events¶
Tracked from GenealogyDiscoveryAnalyticsService:
genealogy_discovery_search_submittedgenealogy_discovery_search_failedgenealogy_my_join_requests_openedgenealogy_join_request_sheet_openedgenealogy_join_request_sheet_dismissedgenealogy_join_request_duplicate_blockedgenealogy_join_request_submittedgenealogy_join_request_submit_failedgenealogy_join_request_canceledgenealogy_join_request_cancel_failedgenealogy_join_request_review_submittedgenealogy_join_request_review_failed
Onboarding analytics events¶
Tracked from OnboardingAnalyticsService:
onboarding_startedonboarding_step_viewedonboarding_completedonboarding_skippedonboarding_interruptedonboarding_anchor_missing
User properties¶
auth_methodmember_access_mode
Instrumentation rules¶
- new analytics events must be added to
AnalyticsEventNamesbefore use - user properties must be added to
AnalyticsUserPropertyNames - event names use lowercase snake_case
- debug-only flows may use noop analytics service implementations
Current operational behavior¶
- member search analytics default to noop in debug mode
- genealogy discovery analytics default to noop when Firebase is not bootstrapped
- onboarding analytics default to noop when Firebase is not bootstrapped
- production-mode paths emit events through Firebase Analytics
- push and notification delivery outcomes are logged in backend function logs
Onboarding funnel operations¶
- flow definitions can be seeded from:
mobile/befam/config/onboarding/sample_onboarding_flows.json- rollout gates are documented in:
mobile/befam/config/onboarding/README.md- BigQuery validation query lives at:
mobile/befam/config/onboarding/onboarding_funnel_bigquery.sql
Recommended dashboard cuts:
- flow starts by
flow_id - completion rate by
flow_idandflow_version - drop-off by
step_index anchor_missingcount byroute_id- skip vs interrupted ratio per flow
Join-request funnel operations¶
- discovery funnel covers:
- search
- join-request sheet open and dismiss
- submit success and failure
- user-side cancellation
- reviewer approval and rejection
- my request queue health can be segmented with:
genealogy_my_join_requests_openedgenealogy_join_request_canceledgenealogy_join_request_cancel_failed- review throughput can be segmented with:
genealogy_join_request_review_submittedgenealogy_join_request_review_failed
Next analytics opportunities¶
- instrument genealogy interaction depth and focus actions
- add conversion funnel metrics for tiered subscription checkout:
subscription_screen_viewsubscription_plan_viewed(free/base/plus/pro)subscription_mode_changed(auto/manual)checkout_started(card/vnpay)checkout_completedcheckout_failedad_impression_served(free/base only)ad_suppressed_by_plan(plus/pro)renewal_reminder_opened- align dashboard definitions with release and adoption KPIs