diff --git a/apps/studio/components/ui/BannerStack/Banners/BannerExplorer.tsx b/apps/studio/components/ui/BannerStack/Banners/BannerExplorer.tsx index 78120cc7b39..70979ff5054 100644 --- a/apps/studio/components/ui/BannerStack/Banners/BannerExplorer.tsx +++ b/apps/studio/components/ui/BannerStack/Banners/BannerExplorer.tsx @@ -1,5 +1,6 @@ import { LOCAL_STORAGE_KEYS } from 'common' import { AnimatePresence, motion } from 'framer-motion' +import { useEffect } from 'react' import { Badge, Button } from 'ui' import { BannerCard } from '../BannerCard' @@ -8,6 +9,8 @@ import { useFeaturePreviewModal } from '@/components/interfaces/App/FeaturePrevi import { useLocalStorageQuery } from '@/hooks/misc/useLocalStorage' import { useTrack } from '@/lib/telemetry/track' +let hasTrackedExposureThisPageLoad = false + export const BannerExplorer = () => { const track = useTrack() const { dismissBanner } = useBannerStack() @@ -18,6 +21,13 @@ export const BannerExplorer = () => { false ) + useEffect(() => { + if (hasTrackedExposureThisPageLoad) return + hasTrackedExposureThisPageLoad = true + + track('explorer_banner_exposed') + }, [track]) + return ( { diff --git a/packages/common/telemetry-constants.ts b/packages/common/telemetry-constants.ts index bafb97da937..a164992611f 100644 --- a/packages/common/telemetry-constants.ts +++ b/packages/common/telemetry-constants.ts @@ -1531,6 +1531,19 @@ export interface DatabaseConnectionsBannerCtaButtonClickedEvent { groups: TelemetryGroups } +/** + * The Explorer feature preview banner was rendered in studio project pages, fired at most once + * per page load. Acts as the denominator for the banner's dismiss and CTA rates; dedupe per + * session or per user at query time. + * + * @group Events + * @source studio + */ +export interface ExplorerBannerExposedEvent { + action: 'explorer_banner_exposed' + groups: TelemetryGroups +} + /** * User clicked the dismiss button on the Explorer feature preview banner in studio project pages. * @@ -3834,6 +3847,7 @@ export type TelemetryEvent = | DatabaseConnectionsBlockerViewClickedEvent | DatabaseConnectionsBannerDismissButtonClickedEvent | DatabaseConnectionsBannerCtaButtonClickedEvent + | ExplorerBannerExposedEvent | ExplorerBannerDismissButtonClickedEvent | ExplorerBannerCtaButtonClickedEvent | SessionTerminateButtonClickedEvent