diff --git a/WooCommerce/Classes/Analytics/WooAnalyticsEvent.swift b/WooCommerce/Classes/Analytics/WooAnalyticsEvent.swift index 845b80c5765..434f5d760d5 100644 --- a/WooCommerce/Classes/Analytics/WooAnalyticsEvent.swift +++ b/WooCommerce/Classes/Analytics/WooAnalyticsEvent.swift @@ -1780,6 +1780,8 @@ extension WooAnalyticsEvent { enum AnalyticsHub { enum Keys: String { case option + case calendar + case timezone } /// Tracks when the "See more" button is tapped in My Store, to open the Analytics Hub. @@ -1799,5 +1801,14 @@ extension WooAnalyticsEvent { static func dateRangeOptionSelected(_ option: String) -> WooAnalyticsEvent { WooAnalyticsEvent(statName: .analyticsHubDateRangeOptionSelected, properties: [Keys.option.rawValue: option]) } + + /// Tracks when the date range selection fails, due to an error generating the date range from the selection. + /// Includes the current device calendar and timezone, for debugging the failure. + /// + static func dateRangeSelectionFailed(for option: AnalyticsHubTimeRangeSelection.SelectionType) -> WooAnalyticsEvent { + WooAnalyticsEvent(statName: .analyticsHubDateRangeSelectionFailed, properties: [Keys.option.rawValue: option.rawValue, + Keys.calendar.rawValue: Locale.current.calendar.debugDescription, + Keys.timezone.rawValue: TimeZone.current.debugDescription]) + } } } diff --git a/WooCommerce/Classes/Analytics/WooAnalyticsStat.swift b/WooCommerce/Classes/Analytics/WooAnalyticsStat.swift index f5868c5c97b..f533218e681 100644 --- a/WooCommerce/Classes/Analytics/WooAnalyticsStat.swift +++ b/WooCommerce/Classes/Analytics/WooAnalyticsStat.swift @@ -154,6 +154,7 @@ public enum WooAnalyticsStat: String { // case analyticsHubDateRangeButtonTapped = "analytics_hub_date_range_button_tapped" case analyticsHubDateRangeOptionSelected = "analytics_hub_date_range_option_selected" + case analyticsHubDateRangeSelectionFailed = "analytics_hub_date_range_selection_failed" // MARK: Products Onboarding Events // diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModel.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModel.swift index b0abfc4391c..671eb850ad4 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModel.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsHubViewModel.swift @@ -84,6 +84,7 @@ final class AnalyticsHubViewModel: ObservableObject { try await retrieveOrderStats() } catch is AnalyticsHubTimeRangeSelection.TimeRangeGeneratorError { dismissNotice = Notice(title: Localization.timeRangeGeneratorError, feedbackType: .error) + ServiceLocator.analytics.track(event: .AnalyticsHub.dateRangeSelectionFailed(for: timeRangeSelectionType)) DDLogWarn("⚠️ Error selecting analytics time range: \(timeRangeSelectionType.description)") } catch { switchToErrorState()