diff --git a/WooCommerce/Classes/Analytics/WooAnalyticsEvent.swift b/WooCommerce/Classes/Analytics/WooAnalyticsEvent.swift index 44f18c1b752..845b80c5765 100644 --- a/WooCommerce/Classes/Analytics/WooAnalyticsEvent.swift +++ b/WooCommerce/Classes/Analytics/WooAnalyticsEvent.swift @@ -1773,3 +1773,31 @@ extension WooAnalyticsEvent { } } } + +// MARK: - Analytics Hub +// +extension WooAnalyticsEvent { + enum AnalyticsHub { + enum Keys: String { + case option + } + + /// Tracks when the "See more" button is tapped in My Store, to open the Analytics Hub. + /// + static func seeMoreAnalyticsTapped() -> WooAnalyticsEvent { + WooAnalyticsEvent(statName: .dashboardSeeMoreAnalyticsTapped, properties: [:]) + } + + /// Tracks when the date range selector button is tapped. + /// + static func dateRangeButtonTapped() -> WooAnalyticsEvent { + WooAnalyticsEvent(statName: .analyticsHubDateRangeButtonTapped, properties: [:]) + } + + /// Tracks when a date range option is selected like “today”, “yesterday”, or “custom”. + /// + static func dateRangeOptionSelected(_ option: String) -> WooAnalyticsEvent { + WooAnalyticsEvent(statName: .analyticsHubDateRangeOptionSelected, properties: [Keys.option.rawValue: option]) + } + } +} diff --git a/WooCommerce/Classes/Analytics/WooAnalyticsStat.swift b/WooCommerce/Classes/Analytics/WooAnalyticsStat.swift index 661c95d4f76..f5868c5c97b 100644 --- a/WooCommerce/Classes/Analytics/WooAnalyticsStat.swift +++ b/WooCommerce/Classes/Analytics/WooAnalyticsStat.swift @@ -130,6 +130,7 @@ public enum WooAnalyticsStat: String { case dashboardPulledToRefresh = "dashboard_pulled_to_refresh" case dashboardNewOrdersButtonTapped = "dashboard_unfulfilled_orders_button_tapped" case dashboardShareStoreButtonTapped = "dashboard_share_your_store_button_tapped" + case dashboardSeeMoreAnalyticsTapped = "dashboard_see_more_analytics_tapped" // MARK: Dashboard Data/Action Events // @@ -149,6 +150,11 @@ public enum WooAnalyticsStat: String { case dashboardNewStatsRevertedBannerLearnMoreTapped = "dashboard_new_stats_reverted_banner_learn_more_tapped" case usedAnalytics = "used_analytics" + // MARK: Analytics Hub Events + // + case analyticsHubDateRangeButtonTapped = "analytics_hub_date_range_button_tapped" + case analyticsHubDateRangeOptionSelected = "analytics_hub_date_range_option_selected" + // MARK: Products Onboarding Events // case productsOnboardingEligible = "products_onboarding_store_is_eligible" diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsTimeRangeCard.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsTimeRangeCard.swift index de7c5861ed3..a2c27d89696 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsTimeRangeCard.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/AnalyticsTimeRangeCard.swift @@ -24,13 +24,16 @@ struct AnalyticsTimeRangeCard: View { SelectionList(title: Localization.timeRangeSelectionTitle, items: AnalyticsHubTimeRangeSelection.SelectionType.allCases, contentKeyPath: \.description, - selected: $selectionType) + selected: $selectionType) { selection in + ServiceLocator.analytics.track(event: .AnalyticsHub.dateRangeOptionSelected(selection.rawValue)) + } } } private func createTimeRangeContent() -> some View { VStack(alignment: .leading, spacing: Layout.verticalSpacing) { Button(action: { + ServiceLocator.analytics.track(event: .AnalyticsHub.dateRangeButtonTapped()) showTimeRangeSelectionView.toggle() }, label: { HStack { diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/Time Range/AnalyticsHubTimeRangeSelection.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/Time Range/AnalyticsHubTimeRangeSelection.swift index 4942f4b95a7..fe0279158af 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/Time Range/AnalyticsHubTimeRangeSelection.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Analytics Hub/Time Range/AnalyticsHubTimeRangeSelection.swift @@ -67,17 +67,17 @@ public class AnalyticsHubTimeRangeSelection { // MARK: - Time Range Selection Type extension AnalyticsHubTimeRangeSelection { - enum SelectionType: CaseIterable { - case today - case yesterday - case lastWeek - case lastMonth - case lastQuarter - case lastYear - case weekToDate - case monthToDate - case quarterToDate - case yearToDate + enum SelectionType: String, CaseIterable { + case today = "Today" + case yesterday = "Yesterday" + case lastWeek = "Last Week" + case lastMonth = "Last Month" + case lastQuarter = "Last Quarter" + case lastYear = "Last Year" + case weekToDate = "Week to Date" + case monthToDate = "Month to Date" + case quarterToDate = "Quarter to Date" + case yearToDate = "Year to Date" var description: String { switch self { diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/Stats v4/StoreStatsAndTopPerformersPeriodViewController.swift b/WooCommerce/Classes/ViewRelated/Dashboard/Stats v4/StoreStatsAndTopPerformersPeriodViewController.swift index 9772a546e78..70ee4e08a50 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/Stats v4/StoreStatsAndTopPerformersPeriodViewController.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/Stats v4/StoreStatsAndTopPerformersPeriodViewController.swift @@ -357,6 +357,7 @@ private extension StoreStatsAndTopPerformersPeriodViewController { } @objc func seeMoreButtonTapped() { + ServiceLocator.analytics.track(event: .AnalyticsHub.seeMoreAnalyticsTapped()) let analyticsHubVC = AnalyticsHubHostingViewController(siteID: siteID, timeRange: timeRange) show(analyticsHubVC, sender: self) }