diff --git a/apps/docs/components/Feedback/Feedback.tsx b/apps/docs/components/Feedback/Feedback.tsx index f16063a9209..693a25c7bc7 100644 --- a/apps/docs/components/Feedback/Feedback.tsx +++ b/apps/docs/components/Feedback/Feedback.tsx @@ -13,7 +13,6 @@ import { } from 'react' import { type Database, useConstant, useIsLoggedIn } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { Button, cn } from 'ui' import { IS_PLATFORM } from '~/lib/constants' @@ -109,7 +108,7 @@ function Feedback({ className }: { className?: string }) { function handleVote(response: Response) { sendTelemetryEvent({ - action: TelemetryActions.DOCS_FEEDBACK_CLICKED, + action: 'docs_feedback_clicked', properties: { response }, }) sendFeedbackVote(response) diff --git a/apps/studio/components/grid/components/grid/Grid.tsx b/apps/studio/components/grid/components/grid/Grid.tsx index e59a571e5da..e19e199e3b4 100644 --- a/apps/studio/components/grid/components/grid/Grid.tsx +++ b/apps/studio/components/grid/components/grid/Grid.tsx @@ -4,7 +4,6 @@ import { forwardRef, useRef } from 'react' import DataGrid, { DataGridHandle, RowsChangeData } from 'react-data-grid' import { memo } from 'react-tracked' -import { TelemetryActions } from 'common/telemetry-constants' import { formatClipboardValue } from 'components/grid/utils/common' import { TableGridInnerLoadingState } from 'components/interfaces/TableGridEditor/LoadingState' import { formatForeignKeys } from 'components/interfaces/TableGridEditor/SidePanelEditor/ForeignKeySelector/ForeignKeySelector.utils' @@ -224,7 +223,7 @@ export const Grid = memo( onClick={() => { onImportData() sendEvent({ - action: TelemetryActions.IMPORT_DATA_BUTTON_CLICKED, + action: 'import_data_button_clicked', properties: { tableType: 'Existing Table' }, groups: { project: project?.ref ?? 'Unknown', diff --git a/apps/studio/components/grid/components/header/Header.tsx b/apps/studio/components/grid/components/header/Header.tsx index c86b0e44424..08660d160fe 100644 --- a/apps/studio/components/grid/components/header/Header.tsx +++ b/apps/studio/components/grid/components/header/Header.tsx @@ -7,7 +7,6 @@ import { ReactNode, useState } from 'react' import { toast } from 'sonner' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { useDispatch, useTrackedState } from 'components/grid/store/Store' import type { Filter, Sort, SupaTable } from 'components/grid/types' import { formatTableRowsToSQL } from 'components/interfaces/TableGridEditor/TableEntity.utils' @@ -207,7 +206,7 @@ const DefaultHeader = ({ table, onAddColumn, onAddRow, onImportData }: DefaultHe onClick={() => { onImportData() sendEvent({ - action: TelemetryActions.IMPORT_DATA_BUTTON_CLICKED, + action: 'import_data_button_clicked', properties: { tableType: 'Existing Table' }, groups: { project: ref ?? 'Unknown', diff --git a/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx b/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx index bfd8d5a3ada..295bc56f7c6 100644 --- a/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx +++ b/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx @@ -2,7 +2,6 @@ import { ExternalLink, Eye, EyeOff, FlaskConical } from 'lucide-react' import Link from 'next/link' import { useEffect, useState } from 'react' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useFlag } from 'hooks/ui/useFlag' import { useAppStateSnapshot } from 'state/app-state' @@ -33,9 +32,7 @@ const FeaturePreviewModal = () => { const toggleFeature = () => { onUpdateFlag(selectedFeatureKey, !isSelectedFeatureEnabled) sendEvent({ - action: isSelectedFeatureEnabled - ? TelemetryActions.FEATURE_PREVIEW_DISABLED - : TelemetryActions.FEATURE_PREVIEW_ENABLED, + action: isSelectedFeatureEnabled ? 'feature_preview_disabled' : 'feature_preview_enabled', properties: { feature: selectedFeatureKey }, groups: { project: projectRef ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) @@ -57,7 +54,7 @@ const FeaturePreviewModal = () => { useEffect(() => { if (snap.showFeaturePreviewModal) { sendEvent({ - action: TelemetryActions.FEATURE_PREVIEWS_CLICKED, + action: 'feature_previews_clicked', groups: { project: projectRef ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) } diff --git a/apps/studio/components/interfaces/Connect/DatabaseConnectionString.tsx b/apps/studio/components/interfaces/Connect/DatabaseConnectionString.tsx index 9e3817a5ff2..deedd3bfcb7 100644 --- a/apps/studio/components/interfaces/Connect/DatabaseConnectionString.tsx +++ b/apps/studio/components/interfaces/Connect/DatabaseConnectionString.tsx @@ -2,7 +2,6 @@ import { ChevronDown } from 'lucide-react' import { HTMLAttributes, ReactNode, useState } from 'react' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { getAddons } from 'components/interfaces/Billing/Subscription/Subscription.utils' import AlertError from 'components/ui/AlertError' import DatabaseSelector from 'components/ui/DatabaseSelector' @@ -103,7 +102,7 @@ export const DatabaseConnectionString = () => { const connectionType = connectionInfo?.label ?? 'Unknown' const lang = connectionInfo?.lang ?? 'Unknown' sendEvent({ - action: TelemetryActions.CONNECTION_STRING_COPIED, + action: 'connection_string_copied', properties: { connectionType, lang, connectionMethod }, groups: { project: projectRef ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) diff --git a/apps/studio/components/interfaces/Home/ExampleProject.tsx b/apps/studio/components/interfaces/Home/ExampleProject.tsx index 41c28e25b49..2c8bcf1f0d6 100644 --- a/apps/studio/components/interfaces/Home/ExampleProject.tsx +++ b/apps/studio/components/interfaces/Home/ExampleProject.tsx @@ -3,7 +3,6 @@ import { useTheme } from 'next-themes' import Link from 'next/link' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' import { BASE_PATH } from 'lib/constants' @@ -29,7 +28,7 @@ const ExampleProject = ({ framework, title, description, url }: ExampleProjectPr rel="noreferrer" onClick={() => sendEvent({ - action: TelemetryActions.EXAMPLE_PROJECT_CARD_CLICKED, + action: 'example_project_card_clicked', properties: { cardTitle: title }, groups: { project: projectRef ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CreateCronJobSheet.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/CreateCronJobSheet.tsx index 6f55214def4..c821de8ccfa 100644 --- a/apps/studio/components/interfaces/Integrations/CronJobs/CreateCronJobSheet.tsx +++ b/apps/studio/components/interfaces/Integrations/CronJobs/CreateCronJobSheet.tsx @@ -7,7 +7,6 @@ import { toast } from 'sonner' import z from 'zod' import { useWatch } from '@ui/components/shadcn/ui/form' -import { TelemetryActions } from 'common/telemetry-constants' import { urlRegex } from 'components/interfaces/Auth/Auth.constants' import EnableExtensionModal from 'components/interfaces/Database/Extensions/EnableExtensionModal' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' @@ -333,7 +332,7 @@ export const CreateCronJobSheet = ({ if (isEditing) { sendEvent({ - action: TelemetryActions.CRON_JOB_UPDATED, + action: 'cron_job_updated', properties: { type: values.type, schedule: schedule, @@ -345,7 +344,7 @@ export const CreateCronJobSheet = ({ }) } else { sendEvent({ - action: TelemetryActions.CRON_JOB_CREATED, + action: 'cron_job_created', properties: { type: values.type, schedule: schedule, diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobCard.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobCard.tsx index 8f2f925a8ea..294a65efe43 100644 --- a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobCard.tsx +++ b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobCard.tsx @@ -4,7 +4,6 @@ import Link from 'next/link' import { useState } from 'react' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import { CronJob } from 'data/database-cron-jobs/database-cron-jobs-query' import { useCronJobRunQuery } from 'data/database-cron-jobs/database-cron-jobs-run-query' @@ -94,7 +93,7 @@ export const CronJobCard = ({ job, onEditCronJob, onDeleteCronJob }: CronJobCard icon={} onClick={() => { sendEvent({ - action: TelemetryActions.CRON_JOB_HISTORY_CLICKED, + action: 'cron_job_history_clicked', groups: { project: selectedProject?.ref ?? 'Unknown', organization: org?.slug ?? 'Unknown', @@ -116,7 +115,7 @@ export const CronJobCard = ({ job, onEditCronJob, onDeleteCronJob }: CronJobCard { sendEvent({ - action: TelemetryActions.CRON_JOB_UPDATE_CLICKED, + action: 'cron_job_update_clicked', groups: { project: selectedProject?.ref ?? 'Unknown', organization: org?.slug ?? 'Unknown', @@ -131,7 +130,7 @@ export const CronJobCard = ({ job, onEditCronJob, onDeleteCronJob }: CronJobCard { sendEvent({ - action: TelemetryActions.CRON_JOB_DELETE_CLICKED, + action: 'cron_job_delete_clicked', groups: { project: selectedProject?.ref ?? 'Unknown', organization: org?.slug ?? 'Unknown', diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.tsx index 68772da0d66..097293ccfc5 100644 --- a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.tsx +++ b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.tsx @@ -2,7 +2,6 @@ import { Search } from 'lucide-react' import { parseAsBoolean, parseAsString, useQueryState } from 'nuqs' import { useState } from 'react' -import { TelemetryActions } from 'common/telemetry-constants' import { CreateCronJobSheet } from 'components/interfaces/Integrations/CronJobs/CreateCronJobSheet' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader' @@ -69,7 +68,7 @@ export const CronjobsTab = () => { const onOpenCreateJobSheet = () => { sendEvent({ - action: TelemetryActions.CRON_JOB_CREATE_CLICKED, + action: 'cron_job_create_clicked', groups: { project: project?.ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) setCreateCronJobSheetShown(true) diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/DeleteCronJob.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/DeleteCronJob.tsx index 5d7d8dd00a2..fbdc7691214 100644 --- a/apps/studio/components/interfaces/Integrations/CronJobs/DeleteCronJob.tsx +++ b/apps/studio/components/interfaces/Integrations/CronJobs/DeleteCronJob.tsx @@ -1,6 +1,5 @@ import { toast } from 'sonner' -import { TelemetryActions } from 'common/telemetry-constants' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import { useDatabaseCronJobDeleteMutation } from 'data/database-cron-jobs/database-cron-jobs-delete-mutation' import { CronJob } from 'data/database-cron-jobs/database-cron-jobs-query' @@ -22,7 +21,7 @@ export const DeleteCronJob = ({ cronJob, visible, onClose }: DeleteCronJobProps) const { mutate: deleteDatabaseCronJob, isLoading } = useDatabaseCronJobDeleteMutation({ onSuccess: () => { sendEvent({ - action: TelemetryActions.CRON_JOB_DELETED, + action: 'cron_job_deleted', groups: { project: project?.ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) toast.success(`Successfully removed cron job ${cronJob.jobname}`) diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/EnterpriseCard.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/EnterpriseCard.tsx index ca95e95f628..2bad5161fce 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/EnterpriseCard.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/EnterpriseCard.tsx @@ -1,6 +1,5 @@ import { Check } from 'lucide-react' -import { TelemetryActions } from 'common/telemetry-constants' import { useOrgSubscriptionQuery } from 'data/subscriptions/org-subscription-query' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' @@ -55,7 +54,7 @@ export const EnterpriseCard = ({ plan, isCurrentPlan, billingPartner }: Enterpri size="tiny" onClick={() => sendEvent({ - action: TelemetryActions.STUDIO_PRICING_PLAN_CTA_CLICKED, + action: 'studio_pricing_plan_cta_clicked', properties: { selectedPlan: 'Enterprise', currentPlan }, groups: { organization: orgSlug ?? 'Unknown' }, }) @@ -92,7 +91,7 @@ export const EnterpriseCard = ({ plan, isCurrentPlan, billingPartner }: Enterpri size="tiny" onClick={() => sendEvent({ - action: TelemetryActions.STUDIO_PRICING_PLAN_CTA_CLICKED, + action: 'studio_pricing_plan_cta_clicked', properties: { selectedPlan: 'Enterprise', currentPlan }, groups: { organization: orgSlug ?? 'Unknown' }, }) diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/PlanUpdateSidePanel.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/PlanUpdateSidePanel.tsx index 21945136396..33779470807 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/PlanUpdateSidePanel.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/PlanUpdateSidePanel.tsx @@ -7,7 +7,7 @@ import { useRouter } from 'next/router' import { useEffect, useRef, useState } from 'react' import { toast } from 'sonner' -import { StudioPricingSidePanelOpenedEvent, TelemetryActions } from 'common/telemetry-constants' +import { StudioPricingSidePanelOpenedEvent } from 'common/telemetry-constants' import { billingPartnerLabel } from 'components/interfaces/Billing/Subscription/Subscription.utils' import Table from 'components/to-be-cleaned/Table' import AlertError from 'components/ui/AlertError' @@ -136,7 +136,7 @@ const PlanUpdateSidePanel = () => { properties.origin = source } sendEvent({ - action: TelemetryActions.STUDIO_PRICING_SIDE_PANEL_OPENED, + action: 'studio_pricing_side_panel_opened', properties, groups: { organization: slug ?? 'Unknown' }, }) @@ -280,7 +280,7 @@ const PlanUpdateSidePanel = () => { onClick={() => { setSelectedTier(plan.id as any) sendEvent({ - action: TelemetryActions.STUDIO_PRICING_PLAN_CTA_CLICKED, + action: 'studio_pricing_plan_cta_clicked', properties: { selectedPlan: plan.name, currentPlan: subscription?.plan?.name, diff --git a/apps/studio/components/interfaces/ProjectCreation/SchemaGenerator.tsx b/apps/studio/components/interfaces/ProjectCreation/SchemaGenerator.tsx index 3b1731e059a..d44f1d7fc24 100644 --- a/apps/studio/components/interfaces/ProjectCreation/SchemaGenerator.tsx +++ b/apps/studio/components/interfaces/ProjectCreation/SchemaGenerator.tsx @@ -1,7 +1,6 @@ import { useChat } from 'ai/react' import { useEffect, useState } from 'react' -import { TelemetryActions } from 'common/telemetry-constants' import { Markdown } from 'components/interfaces/Markdown' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { BASE_PATH } from 'lib/constants' @@ -172,14 +171,14 @@ export const SchemaGenerator = ({ // distinguish between initial step or second step if (step === 'initial') { sendEvent({ - action: TelemetryActions.PROJECT_CREATION_INITIAL_STEP_PROMPT_INTENDED, + action: 'project_creation_initial_step_prompt_intended', properties: { isNewPrompt, }, }) } else { sendEvent({ - action: TelemetryActions.PROJECT_CREATION_SECOND_STEP_PROMPT_INTENDED, + action: 'project_creation_second_step_prompt_intended', properties: { isNewPrompt, }, diff --git a/apps/studio/components/interfaces/Realtime/Inspector/ChooseChannelPopover/index.tsx b/apps/studio/components/interfaces/Realtime/Inspector/ChooseChannelPopover/index.tsx index 94ddde52839..78ff9059186 100644 --- a/apps/studio/components/interfaces/Realtime/Inspector/ChooseChannelPopover/index.tsx +++ b/apps/studio/components/interfaces/Realtime/Inspector/ChooseChannelPopover/index.tsx @@ -5,7 +5,6 @@ import { Dispatch, SetStateAction, useState } from 'react' import { useForm } from 'react-hook-form' import * as z from 'zod' -import { TelemetryActions } from 'common/telemetry-constants' import { DocsButton } from 'components/ui/DocsButton' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' @@ -56,7 +55,7 @@ export const ChooseChannelPopover = ({ config, onChangeConfig }: ChooseChannelPo const onSubmit = () => { setOpen(false) sendEvent({ - action: TelemetryActions.REALTIME_INSPECTOR_LISTEN_CHANNEL_CLICKED, + action: 'realtime_inspector_listen_channel_clicked', groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown', diff --git a/apps/studio/components/interfaces/Realtime/Inspector/Header.tsx b/apps/studio/components/interfaces/Realtime/Inspector/Header.tsx index 10c10ad7c2c..6645037ede1 100644 --- a/apps/studio/components/interfaces/Realtime/Inspector/Header.tsx +++ b/apps/studio/components/interfaces/Realtime/Inspector/Header.tsx @@ -2,7 +2,6 @@ import { PlayCircle, StopCircle } from 'lucide-react' import { Dispatch, SetStateAction } from 'react' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { ButtonTooltip } from 'components/ui/ButtonTooltip' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' @@ -37,7 +36,7 @@ export const Header = ({ config, onChangeConfig }: HeaderProps) => { if (!config.enabled) { // the user has clicked to start listening sendEvent({ - action: TelemetryActions.REALTIME_INSPECTOR_LISTEN_CHANNEL_CLICKED, + action: 'realtime_inspector_listen_channel_clicked', groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown', diff --git a/apps/studio/components/interfaces/Realtime/Inspector/MessageSelection.tsx b/apps/studio/components/interfaces/Realtime/Inspector/MessageSelection.tsx index 020ea5daf0d..72d519dd7a3 100644 --- a/apps/studio/components/interfaces/Realtime/Inspector/MessageSelection.tsx +++ b/apps/studio/components/interfaces/Realtime/Inspector/MessageSelection.tsx @@ -2,7 +2,6 @@ import { X } from 'lucide-react' import { useMemo } from 'react' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import CopyButton from 'components/ui/CopyButton' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' @@ -79,7 +78,7 @@ const MessageSelection = ({ log, onClose }: MessageSelectionProps) => { title="Copy log to clipboard" onClick={() => { sendEvent({ - action: TelemetryActions.REALTIME_INSPECTOR_COPY_MESSAGE_CLICKED, + action: 'realtime_inspector_copy_message_clicked', groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) }} diff --git a/apps/studio/components/interfaces/Realtime/Inspector/MessagesTable.tsx b/apps/studio/components/interfaces/Realtime/Inspector/MessagesTable.tsx index f7674bcca37..bb2a21c889d 100644 --- a/apps/studio/components/interfaces/Realtime/Inspector/MessagesTable.tsx +++ b/apps/studio/components/interfaces/Realtime/Inspector/MessagesTable.tsx @@ -5,7 +5,6 @@ import { useEffect, useState } from 'react' import DataGrid, { Row } from 'react-data-grid' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { DocsButton } from 'components/ui/DocsButton' import ShimmerLine from 'components/ui/ShimmerLine' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' @@ -182,7 +181,7 @@ const MessagesTable = ({ selectedCellIdx={undefined} onClick={() => { sendEvent({ - action: TelemetryActions.REALTIME_INSPECTOR_MESSAGE_CLICKED, + action: 'realtime_inspector_message_clicked', groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown', diff --git a/apps/studio/components/interfaces/Realtime/Inspector/RealtimeFilterPopover/index.tsx b/apps/studio/components/interfaces/Realtime/Inspector/RealtimeFilterPopover/index.tsx index 7225e6c228c..71a229b4660 100644 --- a/apps/studio/components/interfaces/Realtime/Inspector/RealtimeFilterPopover/index.tsx +++ b/apps/studio/components/interfaces/Realtime/Inspector/RealtimeFilterPopover/index.tsx @@ -3,7 +3,6 @@ import Link from 'next/link' import { Dispatch, SetStateAction, useState } from 'react' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' import { @@ -206,7 +205,7 @@ export const RealtimeFilterPopover = ({ config, onChangeConfig }: RealtimeFilter onCancel={() => setApplyConfigOpen(false)} onConfirm={() => { sendEvent({ - action: TelemetryActions.REALTIME_INSPECTOR_FILTERS_APPLIED, + action: 'realtime_inspector_filters_applied', groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) onChangeConfig(tempConfig) diff --git a/apps/studio/components/interfaces/Realtime/Inspector/RealtimeTokensPopover/index.tsx b/apps/studio/components/interfaces/Realtime/Inspector/RealtimeTokensPopover/index.tsx index a9851e6f622..1c99059a2d4 100644 --- a/apps/studio/components/interfaces/Realtime/Inspector/RealtimeTokensPopover/index.tsx +++ b/apps/studio/components/interfaces/Realtime/Inspector/RealtimeTokensPopover/index.tsx @@ -1,7 +1,6 @@ import { Dispatch, SetStateAction, useEffect, useRef } from 'react' import { toast } from 'sonner' -import { TelemetryActions } from 'common/telemetry-constants' import { RoleImpersonationPopover } from 'components/interfaces/RoleImpersonationSelector' import { useProjectPostgrestConfigQuery } from 'data/config/project-postgrest-config-query' import { getAPIKeys, useProjectSettingsV2Query } from 'data/config/project-settings-v2-query' @@ -40,7 +39,7 @@ export const RealtimeTokensPopover = ({ config, onChangeConfig }: RealtimeTokens useEffect(() => { if (isMounted.current) { sendEvent({ - action: TelemetryActions.REALTIME_INSPECTOR_DATABASE_ROLE_UPDATED, + action: 'realtime_inspector_database_role_updated', groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) } diff --git a/apps/studio/components/interfaces/Realtime/Inspector/index.tsx b/apps/studio/components/interfaces/Realtime/Inspector/index.tsx index 737534f40fc..2b330efc327 100644 --- a/apps/studio/components/interfaces/Realtime/Inspector/index.tsx +++ b/apps/studio/components/interfaces/Realtime/Inspector/index.tsx @@ -1,7 +1,6 @@ import { useParams } from 'common' import { useState } from 'react' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { Header } from './Header' import MessagesTable from './MessagesTable' @@ -54,7 +53,7 @@ export const RealtimeInspector = () => { onSelectCancel={() => setSendMessageShown(false)} onSelectConfirm={(v) => { sendEvent({ - action: TelemetryActions.REALTIME_INSPECTOR_BROADCAST_SENT, + action: 'realtime_inspector_broadcast_sent', groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) sendMessage(v.message, v.payload, () => setSendMessageShown(false)) diff --git a/apps/studio/components/interfaces/Reports/GridResize.tsx b/apps/studio/components/interfaces/Reports/GridResize.tsx index a313d557ca1..11c4023fd9b 100644 --- a/apps/studio/components/interfaces/Reports/GridResize.tsx +++ b/apps/studio/components/interfaces/Reports/GridResize.tsx @@ -4,7 +4,6 @@ import 'react-resizable/css/styles.css' import { toast } from 'sonner' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import { DEFAULT_CHART_CONFIG } from 'components/ui/QueryBlock/QueryBlock' import { AnalyticsInterval } from 'data/analytics/constants' @@ -135,7 +134,7 @@ export const GridResize = ({ }, } ) - sendEvent({ action: TelemetryActions.CUSTOM_REPORT_ASSISTANT_SQL_BLOCK_ADDED }) + sendEvent({ action: 'custom_report_assistant_sql_block_added' }) } if (!editableReport) return null diff --git a/apps/studio/components/interfaces/Reports/MetricOptions.tsx b/apps/studio/components/interfaces/Reports/MetricOptions.tsx index c3aefc251fe..ce4abd60978 100644 --- a/apps/studio/components/interfaces/Reports/MetricOptions.tsx +++ b/apps/studio/components/interfaces/Reports/MetricOptions.tsx @@ -3,7 +3,6 @@ import { Home } from 'lucide-react' import { useState } from 'react' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { useContentQuery } from 'data/content/content-query' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled' @@ -138,7 +137,7 @@ export const MetricOptions = ({ config, handleChartSelection }: MetricOptionsPro isAddingChart: true, }) sendEvent({ - action: TelemetryActions.CUSTOM_REPORT_ADD_SQL_BLOCK_CLICKED, + action: 'custom_report_add_sql_block_clicked', }) } }} diff --git a/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx b/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx index 62b818680c8..4c7b0f2b197 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx +++ b/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx @@ -9,7 +9,6 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { toast } from 'sonner' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { GridFooter } from 'components/ui/GridFooter' import { useSqlTitleGenerateMutation } from 'data/ai/sql-title-mutation' import { useEntityDefinitionsQuery } from 'data/database/entity-definitions-query' @@ -317,7 +316,7 @@ export const SQLEditor = () => { }) sendEvent({ - action: TelemetryActions.SQL_EDITOR_QUERY_RUN_BUTTON_CLICKED, + action: 'sql_editor_query_run_button_clicked', groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) } @@ -418,7 +417,7 @@ export const SQLEditor = () => { } sendEvent({ - action: TelemetryActions.ASSISTANT_SQL_DIFF_HANDLER_EVALUATED, + action: 'assistant_sql_diff_handler_evaluated', properties: { handlerAccepted: true }, groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) @@ -443,7 +442,7 @@ export const SQLEditor = () => { const discardAiHandler = useCallback(() => { sendEvent({ - action: TelemetryActions.ASSISTANT_SQL_DIFF_HANDLER_EVALUATED, + action: 'assistant_sql_diff_handler_evaluated', properties: { handlerAccepted: false }, groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) diff --git a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx index f16788ddf32..f952613295b 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx +++ b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx @@ -4,7 +4,6 @@ import { useRouter } from 'next/router' import { toast } from 'sonner' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { SQL_TEMPLATES } from 'components/interfaces/SQLEditor/SQLEditor.queries' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' @@ -79,7 +78,7 @@ const SQLQuickstarts = () => { onClick={(sql, title) => { handleNewQuery(sql, title) sendEvent({ - action: TelemetryActions.SQL_EDITOR_QUICKSTART_CLICKED, + action: 'sql_editor_quickstart_clicked', properties: { quickstartName: title }, groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) diff --git a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx index 717b9dc9ed6..aa0d35adf5b 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx +++ b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx @@ -4,7 +4,6 @@ import { useRouter } from 'next/router' import { toast } from 'sonner' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { SQL_TEMPLATES } from 'components/interfaces/SQLEditor/SQLEditor.queries' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' @@ -79,7 +78,7 @@ const SQLTemplates = () => { onClick={(sql, title) => { handleNewQuery(sql, title) sendEvent({ - action: TelemetryActions.SQL_EDITOR_TEMPLATE_CLICKED, + action: 'sql_editor_template_clicked', properties: { templateName: title }, groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) diff --git a/apps/studio/components/interfaces/SQLEditor/UtilityPanel/UtilityPanel.tsx b/apps/studio/components/interfaces/SQLEditor/UtilityPanel/UtilityPanel.tsx index 27cc2312686..df4bd9d7292 100644 --- a/apps/studio/components/interfaces/SQLEditor/UtilityPanel/UtilityPanel.tsx +++ b/apps/studio/components/interfaces/SQLEditor/UtilityPanel/UtilityPanel.tsx @@ -1,7 +1,6 @@ import { toast } from 'sonner' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { DownloadResultsButton } from 'components/ui/DownloadResultsButton' import { useContentUpsertMutation } from 'data/content/content-upsert-mutation' import { Snippet } from 'data/content/sql-folders-query' @@ -127,19 +126,19 @@ const UtilityPanel = ({ fileName={`Supabase Snippet ${snippet.name}`} onDownloadAsCSV={() => sendEvent({ - action: TelemetryActions.SQL_EDITOR_RESULT_DOWNLOAD_CSV_CLICKED, + action: 'sql_editor_result_download_csv_clicked', groups: { project: ref ?? '', organization: org?.slug ?? '' }, }) } onCopyAsMarkdown={() => { sendEvent({ - action: TelemetryActions.SQL_EDITOR_RESULT_COPY_MARKDOWN_CLICKED, + action: 'sql_editor_result_copy_markdown_clicked', groups: { project: ref ?? '', organization: org?.slug ?? '' }, }) }} onCopyAsJSON={() => { sendEvent({ - action: TelemetryActions.SQL_EDITOR_RESULT_COPY_JSON_CLICKED, + action: 'sql_editor_result_copy_json_clicked', groups: { project: ref ?? '', organization: org?.slug ?? '' }, }) }} diff --git a/apps/studio/components/interfaces/SignIn/SignInForm.tsx b/apps/studio/components/interfaces/SignIn/SignInForm.tsx index c1135ab07d2..b44e1f82b8e 100644 --- a/apps/studio/components/interfaces/SignIn/SignInForm.tsx +++ b/apps/studio/components/interfaces/SignIn/SignInForm.tsx @@ -8,7 +8,6 @@ import { useRef, useState } from 'react' import { toast } from 'sonner' import { object, string } from 'yup' -import { TelemetryActions } from 'common/telemetry-constants' import { useAddLoginEvent } from 'data/misc/audit-login-mutation' import { getMfaAuthenticatorAssuranceLevel } from 'data/profile/mfa-authenticator-assurance-level-query' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' @@ -63,7 +62,7 @@ const SignInForm = () => { toast.success(`Signed in successfully!`, { id: toastId }) sendEvent({ - action: TelemetryActions.SIGN_IN, + action: 'sign_in', properties: { category: 'account', method: 'email' }, }) addLoginEvent({}) diff --git a/apps/studio/components/interfaces/TableGridEditor/GridHeaderActions.tsx b/apps/studio/components/interfaces/TableGridEditor/GridHeaderActions.tsx index 72e3eb1181e..26ec9127c70 100644 --- a/apps/studio/components/interfaces/TableGridEditor/GridHeaderActions.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/GridHeaderActions.tsx @@ -15,7 +15,6 @@ import { useDatabasePublicationsQuery } from 'data/database-publications/databas import { useDatabasePublicationUpdateMutation } from 'data/database-publications/database-publications-update-mutation' import { useProjectLintsQuery } from 'data/lint/lint-query' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' -import { TelemetryActions } from 'common/telemetry-constants' import { Entity, isTableLike, @@ -151,7 +150,7 @@ const GridHeaderActions = ({ table }: GridHeaderActionsProps) => { .map((x: any) => `${x.schema}.${x.name}`) sendEvent({ - action: TelemetryActions.REALTIME_TOGGLE_TABLE_CLICKED, + action: 'realtime_toggle_table_clicked', properties: { newState: exists ? 'disabled' : 'enabled', origin: 'tableGridHeader', diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImport.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImport.tsx index 2be1b7819df..692be3d37a8 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImport.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImport.tsx @@ -6,7 +6,6 @@ import { useCallback, useEffect, useState } from 'react' import { toast } from 'sonner' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' import { Button, SidePanel, Tabs } from 'ui' @@ -172,7 +171,7 @@ const SpreadsheetImport = ({ } else { saveContent({ file: uploadedFile, ...spreadsheetData, selectedHeaders, resolve }) sendEvent({ - action: TelemetryActions.IMPORT_DATA_ADDED, + action: 'import_data_added', groups: { project: projectRef ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) } diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/ColumnManagement.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/ColumnManagement.tsx index 03796f84668..bee42ddd7e5 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/ColumnManagement.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/ColumnManagement.tsx @@ -10,7 +10,6 @@ import { } from 'react-beautiful-dnd' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import InformationBox from 'components/ui/InformationBox' import type { EnumeratedType } from 'data/enumerated-types/enumerated-types-query' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' @@ -170,7 +169,7 @@ const ColumnManagement = ({ onClick={() => { onSelectImportData() sendEvent({ - action: TelemetryActions.IMPORT_DATA_BUTTON_CLICKED, + action: 'import_data_button_clicked', properties: { tableType: 'New Table' }, groups: { project: projectRef ?? 'Unknown', diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx index cbd89aa0a32..4a78fa7af46 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx @@ -42,7 +42,6 @@ import { validateFields, } from './TableEditor.utils' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' -import { TelemetryActions } from 'common/telemetry-constants' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' export interface TableEditorProps { @@ -359,7 +358,7 @@ const TableEditor = ({ checked={tableFields.isRealtimeEnabled} onChange={() => { sendEvent({ - action: TelemetryActions.REALTIME_TOGGLE_TABLE_CLICKED, + action: 'realtime_toggle_table_clicked', properties: { newState: tableFields.isRealtimeEnabled ? 'disabled' : 'enabled', origin: 'tableSidePanel', diff --git a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx index 14e527074d8..1742f30ef73 100644 --- a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx +++ b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx @@ -6,7 +6,6 @@ import { ChangeEvent, useEffect, useRef, useState } from 'react' import { toast } from 'sonner' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendFeedbackMutation } from 'data/feedback/feedback-send' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' @@ -273,7 +272,7 @@ const FeedbackWidget = ({ onClick={() => { sendFeedback() sendEvent({ - action: TelemetryActions.SEND_FEEDBACK_BUTTON_CLICKED, + action: 'send_feedback_button_clicked', groups: { project: ref, organization: org?.slug }, }) }} diff --git a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx index 35de6f6164c..9ac784dbce9 100644 --- a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx +++ b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx @@ -4,7 +4,6 @@ import Link from 'next/link' import { useRouter } from 'next/router' import SVG from 'react-inlinesvg' -import { TelemetryActions } from 'common/telemetry-constants' import { ButtonTooltip } from 'components/ui/ButtonTooltip' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' @@ -38,7 +37,7 @@ const HelpPopover = () => { tooltip={{ content: { side: 'bottom', text: 'Help' } }} onClick={() => { sendEvent({ - action: TelemetryActions.HELP_BUTTON_CLICKED, + action: 'help_button_clicked', groups: { project: project?.ref, organization: org?.slug }, }) }} diff --git a/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx b/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx index da9803891d3..7af8600b5b2 100644 --- a/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx +++ b/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx @@ -9,7 +9,6 @@ import { memo, useEffect, useMemo, useRef, useState } from 'react' import { toast } from 'sonner' import { useParams, useSearchParamsShallow } from 'common/hooks' -import { TelemetryActions } from 'common/telemetry-constants' import { subscriptionHasHipaaAddon } from 'components/interfaces/Billing/Subscription/Subscription.utils' import { Markdown } from 'components/interfaces/Markdown' import OptInToOpenAIToggle from 'components/interfaces/Organization/GeneralSettings/OptInToOpenAIToggle' @@ -186,12 +185,12 @@ export const AIAssistant = ({ if (content.includes('Help me to debug')) { sendEvent({ - action: TelemetryActions.ASSISTANT_DEBUG_SUBMITTED, + action: 'assistant_debug_submitted', groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) } else { sendEvent({ - action: TelemetryActions.ASSISTANT_PROMPT_SUBMITTED, + action: 'assistant_prompt_submitted', groups: { project: ref ?? 'Unknown', organization: org?.slug ?? 'Unknown' }, }) } diff --git a/apps/studio/components/ui/AIAssistantPanel/MessageMarkdown.tsx b/apps/studio/components/ui/AIAssistantPanel/MessageMarkdown.tsx index 019eab1197a..1a9375afe1d 100644 --- a/apps/studio/components/ui/AIAssistantPanel/MessageMarkdown.tsx +++ b/apps/studio/components/ui/AIAssistantPanel/MessageMarkdown.tsx @@ -2,7 +2,6 @@ import { useRouter } from 'next/router' import { DragEvent, memo, ReactNode, useContext, useEffect, useMemo, useRef } from 'react' import { PermissionAction } from '@supabase/shared-types/out/constants' -import { TelemetryActions } from 'common/telemetry-constants' import { ChartConfig } from 'components/interfaces/SQLEditor/UtilityPanel/ChartConfig' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' @@ -181,7 +180,7 @@ export const MarkdownPre = ({ children }: { children: any }) => { const onRunQuery = async (queryType: 'select' | 'mutation') => { sendEvent({ - action: TelemetryActions.ASSISTANT_SUGGESTION_RUN_QUERY_CLICKED, + action: 'assistant_suggestion_run_query_clicked', properties: { queryType, ...(queryType === 'mutation' diff --git a/apps/studio/components/ui/QueryBlock/EditQueryButton.tsx b/apps/studio/components/ui/QueryBlock/EditQueryButton.tsx index af75ce53b02..eb74f710c92 100644 --- a/apps/studio/components/ui/QueryBlock/EditQueryButton.tsx +++ b/apps/studio/components/ui/QueryBlock/EditQueryButton.tsx @@ -2,7 +2,6 @@ import { Edit } from 'lucide-react' import { useRouter } from 'next/router' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { DiffType } from 'components/interfaces/SQLEditor/SQLEditor.types' import useNewQuery from 'components/interfaces/SQLEditor/hooks' import { useSendEventMutation } from 'data/telemetry/send-event-mutation' @@ -93,7 +92,7 @@ export const EditQueryButton = ({ handleEditInSQLEditor() } sendEvent({ - action: TelemetryActions.ASSISTANT_EDIT_IN_SQL_EDITOR_CLICKED, + action: 'assistant_edit_in_sql_editor_clicked', properties: { isInSQLEditor, isInNewSnippet, diff --git a/apps/studio/lib/profile.tsx b/apps/studio/lib/profile.tsx index 97664b3756a..2064a9cffa6 100644 --- a/apps/studio/lib/profile.tsx +++ b/apps/studio/lib/profile.tsx @@ -4,7 +4,6 @@ import { useRouter } from 'next/router' import { PropsWithChildren, createContext, useContext, useMemo } from 'react' import { toast } from 'sonner' -import { TelemetryActions } from 'common/telemetry-constants' import { usePermissionsQuery } from 'data/permissions/permissions-query' import { useProfileCreateMutation } from 'data/profile/profile-create-mutation' import { useProfileQuery } from 'data/profile/profile-query' @@ -38,7 +37,7 @@ export const ProfileProvider = ({ children }: PropsWithChildren<{}>) => { const { mutate: sendEvent } = useSendEventMutation() const { mutate: createProfile, isLoading: isCreatingProfile } = useProfileCreateMutation({ onSuccess: () => { - sendEvent({ action: TelemetryActions.SIGN_UP, properties: { category: 'conversion' } }) + sendEvent({ action: 'sign_up', properties: { category: 'conversion' } }) }, onError: (error) => { Sentry.captureMessage('Failed to create users profile: ' + error.message) diff --git a/apps/studio/pages/new/[slug].tsx b/apps/studio/pages/new/[slug].tsx index ae80bda7314..621b4e42399 100644 --- a/apps/studio/pages/new/[slug].tsx +++ b/apps/studio/pages/new/[slug].tsx @@ -12,7 +12,6 @@ import { z } from 'zod' import { PopoverSeparator } from '@ui/components/shadcn/ui/popover' import { components } from 'api-types' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import { FreeProjectLimitWarning, NotOrganizationOwnerWarning, @@ -201,7 +200,7 @@ const Wizard: NextPageWithLayout = () => { } = useProjectCreateMutation({ onSuccess: (res) => { sendEvent({ - action: TelemetryActions.PROJECT_CREATION_SIMPLE_VERSION_SUBMITTED, + action: 'project_creation_simple_version_submitted', }) router.push(`/project/${res.ref}/building`) }, diff --git a/apps/studio/pages/new/v2/[slug].tsx b/apps/studio/pages/new/v2/[slug].tsx index 29f5d2712cf..6fd8906961e 100644 --- a/apps/studio/pages/new/v2/[slug].tsx +++ b/apps/studio/pages/new/v2/[slug].tsx @@ -14,7 +14,6 @@ import { toast } from 'sonner' import { z } from 'zod' import { PopoverSeparator } from '@ui/components/shadcn/ui/popover' -import { TelemetryActions } from 'common/telemetry-constants' import { FreeProjectLimitWarning, NotOrganizationOwnerWarning, @@ -309,7 +308,7 @@ const WizardForm = () => { // too important to cause disruption here, make sure to catch and skip any errors try { sendEvent({ - action: TelemetryActions.PROJECT_CREATION_SECOND_STEP_SUBMITTED, + action: 'project_creation_second_step_submitted', }) } catch (error) {} @@ -538,7 +537,7 @@ const WizardForm = () => { 'We have generated a starting schema for you based on your description' ) sendEvent({ - action: TelemetryActions.PROJECT_CREATION_INITIAL_STEP_SUBMITTED, + action: 'project_creation_initial_step_submitted', properties: { onboardingPath: 'use_prompt' }, }) setStep(2) @@ -547,7 +546,7 @@ const WizardForm = () => { setFormTitle('Start from Scratch') setFormDescription('Configure your new blank project') sendEvent({ - action: TelemetryActions.PROJECT_CREATION_INITIAL_STEP_SUBMITTED, + action: 'project_creation_initial_step_submitted', properties: { onboardingPath: 'start_blank' }, }) setStep(2) @@ -558,7 +557,7 @@ const WizardForm = () => { 'First we need to create a new project to migrate your database to' ) sendEvent({ - action: TelemetryActions.PROJECT_CREATION_INITIAL_STEP_SUBMITTED, + action: 'project_creation_initial_step_submitted', properties: { onboardingPath: 'migrate' }, }) setStep(2) diff --git a/apps/studio/pages/sign-in-mfa.tsx b/apps/studio/pages/sign-in-mfa.tsx index 7be3a948707..06d3ca751e6 100644 --- a/apps/studio/pages/sign-in-mfa.tsx +++ b/apps/studio/pages/sign-in-mfa.tsx @@ -4,7 +4,6 @@ import { useEffect, useState } from 'react' import { toast } from 'sonner' import { useParams } from 'common' -import { TelemetryActions } from 'common/telemetry-constants' import SignInMfaForm from 'components/interfaces/SignIn/SignInMfaForm' import SignInLayout from 'components/layouts/SignInLayout/SignInLayout' import { Loading } from 'components/ui/Loading' @@ -54,7 +53,7 @@ const SignInMfaPage: NextPageWithLayout = () => { if (data.currentLevel === data.nextLevel) { sendEvent({ - action: TelemetryActions.SIGN_IN, + action: 'sign_in', properties: { category: 'account', method: signInMethodRef.current, diff --git a/apps/www/components/CTABanner/index.tsx b/apps/www/components/CTABanner/index.tsx index b954272d6f0..fe1ca3e4af0 100644 --- a/apps/www/components/CTABanner/index.tsx +++ b/apps/www/components/CTABanner/index.tsx @@ -1,6 +1,5 @@ import Link from 'next/link' import { Button, cn } from 'ui' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendTelemetryEvent } from '~/lib/telemetry' interface Props { @@ -30,7 +29,7 @@ const CTABanner = ({ darkerBg, className }: Props) => { href="https://supabase.com/dashboard" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.START_PROJECT_BUTTON_CLICKED, + action: 'start_project_button_clicked', properties: { buttonLocation: 'CTA Banner' }, }) } @@ -43,7 +42,7 @@ const CTABanner = ({ darkerBg, className }: Props) => { href="/contact/sales" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.REQUEST_DEMO_BUTTON_CLICKED, + action: 'request_demo_button_clicked', properties: { buttonLocation: 'CTA Banner' }, }) } diff --git a/apps/www/components/CustomerStories/index.tsx b/apps/www/components/CustomerStories/index.tsx index e12541dfe85..c28ed8e150e 100644 --- a/apps/www/components/CustomerStories/index.tsx +++ b/apps/www/components/CustomerStories/index.tsx @@ -13,7 +13,6 @@ import Panel from '~/components/Panel' import customerStories from '~/data/CustomerStories' import type { CustomerStoryType } from '~/data/CustomerStories' import { useSendTelemetryEvent } from '~/lib/telemetry' -import { TelemetryActions } from 'common/telemetry-constants' const CustomersSliderMobile = dynamic(() => import('./CustomersSliderMobile')) const CutomsersSliderDesktop = dynamic(() => import('./CutomsersSliderDesktop')) @@ -112,7 +111,7 @@ export const CompositionCol: React.FC = ({ column, classNam className="col-span-12 md:col-span-4 w-full md:w-[450px] h-full" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.HOMEPAGE_CUSTOMER_STORY_CARD_CLICKED, + action: 'homepage_customer_story_card_clicked', properties: { customer: customer.organization, cardType: 'expanded' }, }) } @@ -126,7 +125,7 @@ export const CompositionCol: React.FC = ({ column, classNam className="col-span-12 md:col-span-4 w-full h-full flex-grow" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.HOMEPAGE_CUSTOMER_STORY_CARD_CLICKED, + action: 'homepage_customer_story_card_clicked', properties: { customer: customer.organization, cardType: 'narrow' }, }) } diff --git a/apps/www/components/ExampleCard.tsx b/apps/www/components/ExampleCard.tsx index 0af2ba6c350..7b19d77b6bc 100644 --- a/apps/www/components/ExampleCard.tsx +++ b/apps/www/components/ExampleCard.tsx @@ -6,7 +6,6 @@ import { useBreakpoint } from 'common' import { Button } from 'ui' import Panel from './Panel' import { useSendTelemetryEvent } from '~/lib/telemetry' -import { TelemetryActions } from 'common/telemetry-constants' function ExampleCard(props: any) { const isXs = useBreakpoint() @@ -27,7 +26,7 @@ function ExampleCard(props: any) { onClick={() => { if (props.inHomepage) sendTelemetryEvent({ - action: TelemetryActions.HOMEPAGE_PROJECT_TEMPLATE_CARD_CLICKED, + action: 'homepage_project_template_card_clicked', properties: { templateTitle: props.title }, }) }} diff --git a/apps/www/components/Forms/RequestADemoForm.tsx b/apps/www/components/Forms/RequestADemoForm.tsx index 34ea23443e3..2cc8018afc3 100644 --- a/apps/www/components/Forms/RequestADemoForm.tsx +++ b/apps/www/components/Forms/RequestADemoForm.tsx @@ -3,7 +3,6 @@ import Link from 'next/link' import { CircleAlert } from 'lucide-react' import { Button, cn, Input_Shadcn_, Label_Shadcn_, Separator, TextArea_Shadcn_ } from 'ui' import { Alert } from 'ui/src/components/shadcn/ui/alert' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendTelemetryEvent } from '~/lib/telemetry' interface FormData { @@ -267,7 +266,7 @@ const RequestADemoForm: FC = ({ className }) => { loading={isSubmitting} onClick={() => sendTelemetryEvent({ - action: TelemetryActions.REQUEST_DEMO_BUTTON_CLICKED, + action: 'request_demo_button_clicked', properties: { buttonLocation: 'Enterprise Request Demo Form' }, }) } diff --git a/apps/www/components/Hero/Hero.tsx b/apps/www/components/Hero/Hero.tsx index c94b76246fa..e9464537bf3 100644 --- a/apps/www/components/Hero/Hero.tsx +++ b/apps/www/components/Hero/Hero.tsx @@ -2,7 +2,6 @@ import Link from 'next/link' import { Button } from 'ui' import SectionContainer from '~/components/Layouts/SectionContainer' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendTelemetryEvent } from '~/lib/telemetry' const Hero = () => { @@ -34,7 +33,7 @@ const Hero = () => { as="https://supabase.com/dashboard" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.START_PROJECT_BUTTON_CLICKED, + action: 'start_project_button_clicked', properties: { buttonLocation: 'Homepage Hero' }, }) } @@ -48,7 +47,7 @@ const Hero = () => { as="/contact/sales" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.REQUEST_DEMO_BUTTON_CLICKED, + action: 'request_demo_button_clicked', properties: { buttonLocation: 'Homepage Hero' }, }) } diff --git a/apps/www/components/Hero/HeroFrameworks.tsx b/apps/www/components/Hero/HeroFrameworks.tsx index a1f8d38e9d1..55cc6a5fc1f 100644 --- a/apps/www/components/Hero/HeroFrameworks.tsx +++ b/apps/www/components/Hero/HeroFrameworks.tsx @@ -4,7 +4,6 @@ import Link from 'next/link' import { useState } from 'react' import { cn } from 'ui' import { EASE_IN, EASE_OUT } from '~/lib/animations' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendTelemetryEvent } from '~/lib/telemetry' import SectionContainer from '../Layouts/SectionContainer' @@ -127,7 +126,7 @@ const HeroFrameworks = ({ className }: { className?: string }) => { className="transition-opacity group" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.HOMEPAGE_FRAMEWORK_QUICKSTART_CLICKED, + action: 'homepage_framework_quickstart_clicked', properties: { frameworkName: framework.name }, }) } diff --git a/apps/www/components/Nav/GitHubButton.tsx b/apps/www/components/Nav/GitHubButton.tsx index 16d58b039af..9211dd0ce44 100644 --- a/apps/www/components/Nav/GitHubButton.tsx +++ b/apps/www/components/Nav/GitHubButton.tsx @@ -2,7 +2,6 @@ import React from 'react' import { Button } from 'ui' import { githubStars } from '~/.contentlayer/generated/staticContent/_index.json' with { type: 'json' } import { useSendTelemetryEvent } from '~/lib/telemetry' -import { TelemetryActions } from 'common/telemetry-constants' const GitHubButton = () => { const kFormatter = (num: number) => { @@ -28,9 +27,7 @@ const GitHubButton = () => { className="hidden group lg:flex text-foreground-light hover:text-foreground" type="text" asChild - onClick={() => - sendTelemetryEvent({ action: TelemetryActions.HOMEPAGE_GITHUB_BUTTON_CLICKED }) - } + onClick={() => sendTelemetryEvent({ action: 'homepage_github_button_clicked' })} > diff --git a/apps/www/components/Nav/MobileMenu.tsx b/apps/www/components/Nav/MobileMenu.tsx index 99bccf7b033..c87274771d2 100644 --- a/apps/www/components/Nav/MobileMenu.tsx +++ b/apps/www/components/Nav/MobileMenu.tsx @@ -15,7 +15,6 @@ import { ChevronRight } from 'lucide-react' import ProductModulesData from '~/data/ProductModules' import { jobsCount } from '~/.contentlayer/generated/staticContent/_index.json' with { type: 'json' } -import { TelemetryActions } from 'common/telemetry-constants' import { useSendTelemetryEvent } from '~/lib/telemetry' interface Props { @@ -250,7 +249,7 @@ const MobileMenu = ({ open, setOpen, menu }: Props) => { legacyBehavior onClick={() => sendTelemetryEvent({ - action: TelemetryActions.SIGN_IN_BUTTON_CLICKED, + action: 'sign_in_button_clicked', properties: { buttonLocation: 'Mobile Nav' }, }) } @@ -267,7 +266,7 @@ const MobileMenu = ({ open, setOpen, menu }: Props) => { legacyBehavior onClick={() => sendTelemetryEvent({ - action: TelemetryActions.START_PROJECT_BUTTON_CLICKED, + action: 'start_project_button_clicked', properties: { buttonLocation: 'Mobile Nav' }, }) } diff --git a/apps/www/components/Nav/index.tsx b/apps/www/components/Nav/index.tsx index dee4035ed59..bced494601a 100644 --- a/apps/www/components/Nav/index.tsx +++ b/apps/www/components/Nav/index.tsx @@ -23,7 +23,6 @@ import MenuItem from './MenuItem' import MobileMenu from './MobileMenu' import RightClickBrandLogo from './RightClickBrandLogo' import { useSendTelemetryEvent } from '~/lib/telemetry' -import { TelemetryActions } from 'common/telemetry-constants' interface Props { hideNavbar: boolean @@ -141,7 +140,7 @@ const Nav = ({ hideNavbar, stickyNavbar = true }: Props) => { href="https://supabase.com/dashboard" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.SIGN_IN_BUTTON_CLICKED, + action: 'sign_in_button_clicked', properties: { buttonLocation: 'Header Nav' }, }) } @@ -154,7 +153,7 @@ const Nav = ({ hideNavbar, stickyNavbar = true }: Props) => { href="https://supabase.com/dashboard" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.START_PROJECT_BUTTON_CLICKED, + action: 'start_project_button_clicked', properties: { buttonLocation: 'Header Nav' }, }) } diff --git a/apps/www/components/OpenSource/RepoCard.tsx b/apps/www/components/OpenSource/RepoCard.tsx index 06032cd0847..8cdcf75dd0b 100644 --- a/apps/www/components/OpenSource/RepoCard.tsx +++ b/apps/www/components/OpenSource/RepoCard.tsx @@ -4,7 +4,6 @@ import Link from 'next/link' import Panel from '~/components/Panel' import { useSendTelemetryEvent } from '~/lib/telemetry' -import { TelemetryActions } from 'common/telemetry-constants' const RepoCard = ({ repo, activeTab, index }: { repo: any; activeTab: number; index: number }) => { const sendTelemetryEvent = useSendTelemetryEvent() @@ -22,7 +21,7 @@ const RepoCard = ({ repo, activeTab, index }: { repo: any; activeTab: number; in className="h-full" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.OPEN_SOURCE_REPO_CARD_CLICKED, + action: 'open_source_repo_card_clicked', properties: { repoName: repo.name }, }) } diff --git a/apps/www/components/Pricing/PricingComparisonTable.tsx b/apps/www/components/Pricing/PricingComparisonTable.tsx index a8857901c8b..2735a0c3700 100644 --- a/apps/www/components/Pricing/PricingComparisonTable.tsx +++ b/apps/www/components/Pricing/PricingComparisonTable.tsx @@ -7,7 +7,6 @@ import { Button, Select, cn } from 'ui' import { PricingTableRowDesktop, PricingTableRowMobile } from '~/components/Pricing/PricingTableRow' import Solutions from '~/data/MainProducts' import { Organization } from '~/data/organizations' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendTelemetryEvent } from '~/lib/telemetry' import UpgradePlan from './UpgradePlan' @@ -57,7 +56,7 @@ const MobileHeader = ({ organizations={organizations} onClick={() => sendTelemetryEvent({ - action: TelemetryActions.WWW_PRICING_PLAN_CTA_CLICKED, + action: 'www_pricing_plan_cta_clicked', properties: { plan, showUpgradeText: true, @@ -74,7 +73,7 @@ const MobileHeader = ({ href={selectedPlan.href} onClick={() => sendTelemetryEvent({ - action: TelemetryActions.WWW_PRICING_PLAN_CTA_CLICKED, + action: 'www_pricing_plan_cta_clicked', properties: { plan, showUpgradeText: false, @@ -403,7 +402,7 @@ const PricingComparisonTable = ({ organizations={organizations} onClick={() => sendTelemetryEvent({ - action: TelemetryActions.WWW_PRICING_PLAN_CTA_CLICKED, + action: 'www_pricing_plan_cta_clicked', properties: { plan: plan.name, showUpgradeText: true, @@ -425,7 +424,7 @@ const PricingComparisonTable = ({ href={plan.href} onClick={() => sendTelemetryEvent({ - action: TelemetryActions.WWW_PRICING_PLAN_CTA_CLICKED, + action: 'www_pricing_plan_cta_clicked', properties: { plan: plan.name, showUpgradeText: false, diff --git a/apps/www/components/Pricing/PricingPlans.tsx b/apps/www/components/Pricing/PricingPlans.tsx index 79869937bf1..22ef35423a6 100644 --- a/apps/www/components/Pricing/PricingPlans.tsx +++ b/apps/www/components/Pricing/PricingPlans.tsx @@ -6,7 +6,6 @@ import { Button, cn } from 'ui' import { Organization } from '~/data/organizations' import { useSendTelemetryEvent } from '~/lib/telemetry' import UpgradePlan from './UpgradePlan' -import { TelemetryActions } from 'common/telemetry-constants' interface PricingPlansProps { organizations?: Organization[] @@ -29,7 +28,7 @@ const PricingPlans = ({ organizations, hasExistingOrganizations }: PricingPlansP const sendPricingEvent = () => { sendTelemetryEvent({ - action: TelemetryActions.WWW_PRICING_PLAN_CTA_CLICKED, + action: 'www_pricing_plan_cta_clicked', properties: { plan: plan.name, showUpgradeText: isUpgradablePlan && hasExistingOrganizations ? true : false, diff --git a/apps/www/components/Products/index.tsx b/apps/www/components/Products/index.tsx index 1df8fb69ff4..af4b8fbb375 100644 --- a/apps/www/components/Products/index.tsx +++ b/apps/www/components/Products/index.tsx @@ -11,7 +11,6 @@ import StorageVisual from './StorageVisual' import VectorVisual from './VectorVisual' import { PRODUCT_MODULES_SHORTNAMES, PRODUCT_SHORTNAMES } from 'shared-data/products' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendTelemetryEvent } from '~/lib/telemetry' import type { ProductType } from '~/data/MainProducts' @@ -27,7 +26,7 @@ const Products: React.FC = (props) => { product: PRODUCT_SHORTNAMES | PRODUCT_MODULES_SHORTNAMES | 'data-api' ) => { return await _sendTelemetryEvent({ - action: TelemetryActions.HOMEPAGE_PRODUCT_CARD_CLICKED, + action: 'homepage_product_card_clicked', properties: { product }, }) } diff --git a/apps/www/components/Sections/ProductHeader.tsx b/apps/www/components/Sections/ProductHeader.tsx index c8cd7b55191..5a43dc97435 100644 --- a/apps/www/components/Sections/ProductHeader.tsx +++ b/apps/www/components/Sections/ProductHeader.tsx @@ -2,7 +2,6 @@ import Link from 'next/link' import { Button } from 'ui' import ProductIcon from '../ProductIcon' import { BookOpen } from 'lucide-react' -import { TelemetryActions } from 'common/telemetry-constants' import { useSendTelemetryEvent } from '~/lib/telemetry' type subheader = string @@ -56,7 +55,7 @@ const ProductHeader = (props: Types) => { as="https://supabase.com/dashboard" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.START_PROJECT_BUTTON_CLICKED, + action: 'start_project_button_clicked', properties: { buttonLocation: 'Product Page Header - ' + props.title }, }) } @@ -72,7 +71,7 @@ const ProductHeader = (props: Types) => { className="ml-2" onClick={() => sendTelemetryEvent({ - action: TelemetryActions.SEE_DOCUMENTATION_BUTTON_CLICKED, + action: 'see_documentation_button_clicked', properties: { buttonLocation: 'Product Page Header - ' + props.title, }, diff --git a/apps/www/components/TwitterSocialSection.tsx b/apps/www/components/TwitterSocialSection.tsx index 90696c18635..c0bd4131911 100644 --- a/apps/www/components/TwitterSocialSection.tsx +++ b/apps/www/components/TwitterSocialSection.tsx @@ -7,7 +7,6 @@ import TwitterSocialProofMobile from './Sections/TwitterSocialProofMobile' import Tweets from '~/data/tweets/Tweets.json' import { useSendTelemetryEvent } from '~/lib/telemetry' -import { TelemetryActions } from 'common/telemetry-constants' const TwitterSocialSection = () => { const tweets = Tweets.slice(0, 18) @@ -28,7 +27,7 @@ const TwitterSocialSection = () => { tabIndex={-1} onClick={() => sendTelemetryEvent({ - action: TelemetryActions.HOMEPAGE_GITHUB_DISCUSSIONS_BUTTON_CLICKED, + action: 'homepage_github_discussions_button_clicked', }) } > @@ -42,7 +41,7 @@ const TwitterSocialSection = () => { tabIndex={-1} onClick={() => sendTelemetryEvent({ - action: TelemetryActions.HOMEPAGE_DISCORD_BUTTON_CLICKED, + action: 'homepage_discord_button_clicked', }) } > diff --git a/apps/www/pages/events/[slug].tsx b/apps/www/pages/events/[slug].tsx index 49555085c82..4812128cfc2 100644 --- a/apps/www/pages/events/[slug].tsx +++ b/apps/www/pages/events/[slug].tsx @@ -14,7 +14,6 @@ import NextImage from 'next/image' import Link from 'next/link' import authors from 'lib/authors.json' -import { TelemetryActions } from 'common/telemetry-constants' import { isNotNullOrUndefined } from '~/lib/helpers' import mdxComponents from '~/lib/mdx/mdxComponents' import { mdxSerialize } from '~/lib/mdx/mdxSerialize' @@ -287,7 +286,7 @@ const EventPage = ({ event }: InferGetStaticPropsType) => target={event.main_cta?.target ? event.main_cta?.target : undefined} onClick={() => sendTelemetryEvent({ - action: TelemetryActions.EVENT_PAGE_CTA_CLICKED, + action: 'www_pricing_plan_cta_clicked', properties: { eventTitle: event.title }, }) } diff --git a/packages/common/telemetry-constants.ts b/packages/common/telemetry-constants.ts index f85df320c22..65752ed0a4e 100644 --- a/packages/common/telemetry-constants.ts +++ b/packages/common/telemetry-constants.ts @@ -1,79 +1,13 @@ -// These events are tracked only when users opt in. -// Standardization as per document: https://www.notion.so/supabase/Event-tracking-standardization-1195004b775f80f98ee3fa9e70cf4d05 - -export enum TelemetryActions { - SIGN_UP = 'sign_up', - SIGN_IN = 'sign_in', - - ASSISTANT_PROMPT_SUBMITTED = 'assistant_prompt_submitted', - ASSISTANT_DEBUG_SUBMITTED = 'assistant_debug_submitted', - ASSISTANT_SUGGESTION_RUN_QUERY_CLICKED = 'assistant_suggestion_run_query_clicked', - ASSISTANT_SQL_DIFF_HANDLER_EVALUATED = 'assistant_sql_diff_handler_evaluated', - ASSISTANT_EDIT_IN_SQL_EDITOR_CLICKED = 'assistant_edit_in_sql_editor_clicked', - - CONNECTION_STRING_COPIED = 'connection_string_copied', - CUSTOM_REPORT_ADD_SQL_BLOCK_CLICKED = 'custom-report-add-sql-block-clicked', - CUSTOM_REPORT_ASSISTANT_SQL_BLOCK_ADDED = 'custom-report-assistant-sql-block-added', - - CRON_JOB_CREATED = 'cron_job_created', - CRON_JOB_UPDATED = 'cron_job_updated', - CRON_JOB_DELETED = 'cron_job_deleted', - CRON_JOB_DELETE_CLICKED = 'cron_job_delete_clicked', - CRON_JOB_UPDATE_CLICKED = 'cron_job_update_clicked', - CRON_JOB_CREATE_CLICKED = 'cron_job_create_clicked', - CRON_JOB_HISTORY_CLICKED = 'cron_job_history_clicked', - - FEATURE_PREVIEWS_CLICKED = 'feature_previews_clicked', - FEATURE_PREVIEW_ENABLED = 'feature_preview_enabled', - FEATURE_PREVIEW_DISABLED = 'feature_preview_disabled', - - PROJECT_CREATION_SIMPLE_VERSION_SUBMITTED = 'project_creation_simple_version_submitted', - PROJECT_CREATION_INITIAL_STEP_PROMPT_INTENDED = 'project_creation_initial_step_prompt_intended', - PROJECT_CREATION_INITIAL_STEP_SUBMITTED = 'project_creation_initial_step_submitted', - PROJECT_CREATION_SECOND_STEP_PROMPT_INTENDED = 'project_creation_second_step_prompt_intended', - PROJECT_CREATION_SECOND_STEP_SUBMITTED = 'project_creation_second_step_submitted', - - REALTIME_INSPECTOR_LISTEN_CHANNEL_CLICKED = 'realtime_inspector_listen_channel_clicked', - REALTIME_INSPECTOR_BROADCAST_SENT = 'realtime_inspector_broadcast_sent', - REALTIME_INSPECTOR_MESSAGE_CLICKED = 'realtime_inspector_message_clicked', - REALTIME_INSPECTOR_COPY_MESSAGE_CLICKED = 'realtime_inspector_copy_message_clicked', - REALTIME_INSPECTOR_FILTERS_APPLIED = 'realtime_inspector_filters_applied', - REALTIME_INSPECTOR_DATABASE_ROLE_UPDATED = 'realtime_inspector_database_role_updated', - REALTIME_TOGGLE_TABLE_CLICKED = 'realtime_toggle_table_clicked', - - SQL_EDITOR_QUICKSTART_CLICKED = 'sql_editor_quickstart_clicked', - SQL_EDITOR_TEMPLATE_CLICKED = 'sql_editor_template_clicked', - SQL_EDITOR_RESULT_DOWNLOAD_CSV_CLICKED = 'sql_editor_result_download_csv_clicked', - SQL_EDITOR_RESULT_COPY_MARKDOWN_CLICKED = 'sql_editor_result_copy_markdown_clicked', - SQL_EDITOR_RESULT_COPY_JSON_CLICKED = 'sql_editor_result_copy_json_clicked', - - DOCS_FEEDBACK_CLICKED = 'docs_feedback_clicked', - - HOMEPAGE_HERO_REQUEST_DEMO_CLICKED = 'homepage_hero_request_demo_clicked', - HOMEPAGE_FRAMEWORK_QUICKSTART_CLICKED = 'homepage_framework_quickstart_clicked', - HOMEPAGE_PRODUCT_CARD_CLICKED = 'homepage_product_card_clicked', - WWW_PRICING_PLAN_CTA_CLICKED = 'www_pricing_plan_cta_clicked', - EVENT_PAGE_CTA_CLICKED = 'event_page_cta_clicked', - HOMEPAGE_GITHUB_BUTTON_CLICKED = 'homepage_github_button_clicked', - HOMEPAGE_GITHUB_DISCUSSIONS_BUTTON_CLICKED = 'homepage_github_discussions_button_clicked', - HOMEPAGE_DISCORD_BUTTON_CLICKED = 'homepage_discord_button_clicked', - HOMEPAGE_CUSTOMER_STORY_CARD_CLICKED = 'homepage_customer_story_card_clicked', - HOMEPAGE_PROJECT_TEMPLATE_CARD_CLICKED = 'homepage_project_template_card_clicked', - OPEN_SOURCE_REPO_CARD_CLICKED = 'open_source_repo_card_clicked', - START_PROJECT_BUTTON_CLICKED = 'start_project_button_clicked', - SEE_DOCUMENTATION_BUTTON_CLICKED = 'see_documentation_button_clicked', - REQUEST_DEMO_BUTTON_CLICKED = 'request_demo_button_clicked', - SIGN_IN_BUTTON_CLICKED = 'sign_in_button_clicked', - - HELP_BUTTON_CLICKED = 'help_button_clicked', - SEND_FEEDBACK_BUTTON_CLICKED = 'send_feedback_button_clicked', - EXAMPLE_PROJECT_CARD_CLICKED = 'example_project_card_clicked', - IMPORT_DATA_BUTTON_CLICKED = 'import_data_button_clicked', - IMPORT_DATA_ADDED = 'import_data_added', - SQL_EDITOR_QUERY_RUN_BUTTON_CLICKED = 'sql_editor_query_run_button_clicked', - STUDIO_PRICING_PLAN_CTA_CLICKED = 'studio_pricing_plan_cta_clicked', - STUDIO_PRICING_SIDE_PANEL_OPENED = 'studio_pricing_side_panel_opened', -} +/** + * Consolidated event definitions coming from the frontend, including studio, www, and docs. + * + * Note that events are not emitted for users that have opted out of telemetry. + * + * Original definitions located at: + * https://github.com/supabase/supabase/blob/master/packages/common/telemetry-constants.ts + * + * @module telemetry-frontend + */ /** * Triggered when a user signs up. When signing up with Email and Password, this is only triggered once user confirms their email. @@ -83,7 +17,7 @@ export enum TelemetryActions { * @page /sign-up */ export interface SignUpEvent { - action: TelemetryActions.SIGN_UP + action: 'sign_up' properties: { category: 'conversion' } @@ -100,7 +34,7 @@ export interface SignUpEvent { * @page /sign-in-mfa */ export interface SignInEvent { - action: TelemetryActions.SIGN_IN + action: 'sign_in' properties: { category: 'account' /** @@ -117,7 +51,7 @@ export interface SignInEvent { * @source studio */ export interface ConnectionStringCopiedEvent { - action: TelemetryActions.CONNECTION_STRING_COPIED + action: 'connection_string_copied' properties: { /** * Method selected by user, e.g. URI, PSQL, SQLAlchemy, etc. @@ -146,7 +80,7 @@ export interface ConnectionStringCopiedEvent { * @page /dashboard/project/{ref}/integrations/cron/jobs?dialog-shown=true */ export interface CronJobCreatedEvent { - action: TelemetryActions.CRON_JOB_CREATED + action: 'cron_job_created' properties: { /** * What the cron job executes, e.g. sql_function or sql_snippet @@ -171,7 +105,7 @@ export interface CronJobCreatedEvent { * @page /dashboard/project/{ref}/integrations/cron/jobs?dialog-shown=true */ export interface CronJobUpdatedEvent { - action: TelemetryActions.CRON_JOB_UPDATED + action: 'cron_job_updated' properties: { /** * What the cron job executes, e.g. sql_function or sql_snippet @@ -196,7 +130,7 @@ export interface CronJobUpdatedEvent { * @page /dashboard/project/{ref}/integrations/cron/jobs */ export interface CronJobDeletedEvent { - action: TelemetryActions.CRON_JOB_DELETED + action: 'cron_job_deleted' groups: { project: string organization: string @@ -211,7 +145,7 @@ export interface CronJobDeletedEvent { * @page /dashboard/project/{ref}/integrations/cron/jobs */ export interface CronJobCreateClickedEvent { - action: TelemetryActions.CRON_JOB_CREATE_CLICKED + action: 'cron_job_create_clicked' groups: { project: string organization: string @@ -226,7 +160,7 @@ export interface CronJobCreateClickedEvent { * @page /dashboard/project/{ref}/integrations/cron/jobs */ export interface CronJobUpdateClickedEvent { - action: TelemetryActions.CRON_JOB_UPDATE_CLICKED + action: 'cron_job_update_clicked' groups: { project: string organization: string @@ -241,7 +175,7 @@ export interface CronJobUpdateClickedEvent { * @page /dashboard/project/{ref}/integrations/cron/jobs */ export interface CronJobDeleteClickedEvent { - action: TelemetryActions.CRON_JOB_DELETE_CLICKED + action: 'cron_job_delete_clicked' groups: { project: string organization: string @@ -256,7 +190,7 @@ export interface CronJobDeleteClickedEvent { * @page /dashboard/project/{ref}/integrations/cron/jobs */ export interface CronJobHistoryClickedEvent { - action: TelemetryActions.CRON_JOB_HISTORY_CLICKED + action: 'cron_job_history_clicked' groups: { project: string organization: string @@ -272,7 +206,7 @@ export interface CronJobHistoryClickedEvent { * @source studio */ export interface FeaturePreviewsClickedEvent { - action: TelemetryActions.FEATURE_PREVIEWS_CLICKED + action: 'feature_previews_clicked' groups: { project: string organization: string @@ -288,7 +222,7 @@ export interface FeaturePreviewsClickedEvent { * @source studio */ export interface FeaturePreviewEnabledEvent { - action: TelemetryActions.FEATURE_PREVIEW_ENABLED + action: 'feature_preview_enabled' properties: { /** * Feature key of the preview that was enabled. e.g. supabase-ui-api-side-panel @@ -310,7 +244,7 @@ export interface FeaturePreviewEnabledEvent { * @source studio */ export interface FeaturePreviewDisabledEvent { - action: TelemetryActions.FEATURE_PREVIEW_DISABLED + action: 'feature_preview_disabled' properties: { /** * Feature key of the preview that was disabled. e.g. supabase-ui-api-side-panel @@ -331,7 +265,7 @@ export interface FeaturePreviewDisabledEvent { * @page new/{slug} */ export interface ProjectCreationSimpleVersionSubmittedEvent { - action: TelemetryActions.PROJECT_CREATION_SIMPLE_VERSION_SUBMITTED + action: 'project_creation_simple_version_submitted' } /** @@ -343,7 +277,7 @@ export interface ProjectCreationSimpleVersionSubmittedEvent { * @page new/v2/{slug} */ export interface ProjectCreationInitialStepPromptIntendedEvent { - action: TelemetryActions.PROJECT_CREATION_INITIAL_STEP_PROMPT_INTENDED + action: 'project_creation_initial_step_prompt_intended' /** * Is this a new prompt (e.g. when following the start blank route where no prompt has been filled in the InitialStep). In other * words, was this not just an edit. In this case, it should always be true. @@ -361,7 +295,7 @@ export interface ProjectCreationInitialStepPromptIntendedEvent { * @page new/v2/{slug} */ export interface ProjectCreationInitialStepSubmittedEvent { - action: TelemetryActions.PROJECT_CREATION_INITIAL_STEP_SUBMITTED + action: 'project_creation_initial_step_submitted' properties: { /** * Records what the user selected in the first step of project creation. @@ -378,7 +312,7 @@ export interface ProjectCreationInitialStepSubmittedEvent { * @page new/v2/{slug} */ export interface ProjectCreationSecondStepPromptIntendedEvent { - action: TelemetryActions.PROJECT_CREATION_SECOND_STEP_PROMPT_INTENDED + action: 'project_creation_second_step_prompt_intended' properties: { /** * Is this a new prompt (e.g. when following the start blank route where no prompt has been filled in the InitialStep). In other @@ -397,7 +331,7 @@ export interface ProjectCreationSecondStepPromptIntendedEvent { * @page new/v2/{slug} */ export interface ProjectCreationSecondStepSubmittedEvent { - action: TelemetryActions.PROJECT_CREATION_SECOND_STEP_SUBMITTED + action: 'project_creation_second_step_submitted' } /** @@ -408,7 +342,7 @@ export interface ProjectCreationSecondStepSubmittedEvent { * @page /dashboard/project/{ref}/realtime/inspector */ export interface RealtimeInspectorListenChannelClickedEvent { - action: TelemetryActions.REALTIME_INSPECTOR_LISTEN_CHANNEL_CLICKED + action: 'realtime_inspector_listen_channel_clicked' groups: { project: string organization: string @@ -423,7 +357,7 @@ export interface RealtimeInspectorListenChannelClickedEvent { * @page /dashboard/project/{ref}/realtime/inspector */ export interface RealtimeInspectorBroadcastSentEvent { - action: TelemetryActions.REALTIME_INSPECTOR_BROADCAST_SENT + action: 'realtime_inspector_broadcast_sent' groups: { project: string organization: string @@ -438,7 +372,7 @@ export interface RealtimeInspectorBroadcastSentEvent { * @page /dashboard/project/{ref}/realtime/inspector */ export interface RealtimeInspectorMessageClickedEvent { - action: TelemetryActions.REALTIME_INSPECTOR_MESSAGE_CLICKED + action: 'realtime_inspector_message_clicked' groups: { project: string organization: string @@ -453,7 +387,7 @@ export interface RealtimeInspectorMessageClickedEvent { * @page /dashboard/project/{ref}/realtime/inspector */ export interface RealtimeInspectorCopyMessageClickedEvent { - action: TelemetryActions.REALTIME_INSPECTOR_COPY_MESSAGE_CLICKED + action: 'realtime_inspector_copy_message_clicked' groups: { project: string organization: string @@ -468,7 +402,7 @@ export interface RealtimeInspectorCopyMessageClickedEvent { * @page /dashboard/project/{ref}/realtime/inspector */ export interface RealtimeInspectorFiltersAppliedEvent { - action: TelemetryActions.REALTIME_INSPECTOR_FILTERS_APPLIED + action: 'realtime_inspector_filters_applied' groups: { project: string organization: string @@ -483,7 +417,7 @@ export interface RealtimeInspectorFiltersAppliedEvent { * @page /dashboard/project/{ref}/realtime/inspector */ export interface RealtimeInspectorDatabaseRoleUpdatedEvent { - action: TelemetryActions.REALTIME_INSPECTOR_DATABASE_ROLE_UPDATED + action: 'realtime_inspector_database_role_updated' groups: { project: string organization: string @@ -498,7 +432,7 @@ export interface RealtimeInspectorDatabaseRoleUpdatedEvent { * @page /dashboard/project/{ref}/editor */ export interface RealtimeToggleTableClickedEvent { - action: TelemetryActions.REALTIME_TOGGLE_TABLE_CLICKED + action: 'realtime_toggle_table_clicked' properties: { /** * The state of the toggle. @@ -523,7 +457,7 @@ export interface RealtimeToggleTableClickedEvent { * @page /dashboard/project/{ref}/sql */ export interface SqlEditorQuickstartClickedEvent { - action: TelemetryActions.SQL_EDITOR_QUICKSTART_CLICKED + action: 'sql_editor_quickstart_clicked' properties: { /** * The title of the quickstart card clicked. @@ -544,7 +478,7 @@ export interface SqlEditorQuickstartClickedEvent { * @page /dashboard/project/{ref}/sql */ export interface SqlEditorTemplateClickedEvent { - action: TelemetryActions.SQL_EDITOR_TEMPLATE_CLICKED + action: 'sql_editor_template_clicked' properties: { /** * The name of the template card clicked. @@ -565,7 +499,7 @@ export interface SqlEditorTemplateClickedEvent { * @page /dashboard/project/{ref}/sql */ export interface SqlEditorResultDownloadCsvClickedEvent { - action: TelemetryActions.SQL_EDITOR_RESULT_DOWNLOAD_CSV_CLICKED + action: 'sql_editor_result_download_csv_clicked' groups: { project: string organization: string @@ -580,7 +514,7 @@ export interface SqlEditorResultDownloadCsvClickedEvent { * @page /dashboard/project/{ref}/sql */ export interface SqlEditorResultCopyMarkdownClickedEvent { - action: TelemetryActions.SQL_EDITOR_RESULT_COPY_MARKDOWN_CLICKED + action: 'sql_editor_result_copy_markdown_clicked' groups: { project: string organization: string @@ -595,7 +529,7 @@ export interface SqlEditorResultCopyMarkdownClickedEvent { * @page /dashboard/project/{ref}/sql */ export interface SqlEditorResultCopyJsonClickedEvent { - action: TelemetryActions.SQL_EDITOR_RESULT_COPY_JSON_CLICKED + action: 'sql_editor_result_copy_json_clicked' groups: { project: string organization: string @@ -609,7 +543,7 @@ export interface SqlEditorResultCopyJsonClickedEvent { * @source studio */ export interface AssistantPromptSubmittedEvent { - action: TelemetryActions.ASSISTANT_PROMPT_SUBMITTED + action: 'assistant_prompt_submitted' groups: { project: string organization: string @@ -623,7 +557,7 @@ export interface AssistantPromptSubmittedEvent { * @source studio */ export interface AssistantDebugSubmittedEvent { - action: TelemetryActions.ASSISTANT_DEBUG_SUBMITTED + action: 'assistant_debug_submitted' groups: { project: string organization: string @@ -637,7 +571,7 @@ export interface AssistantDebugSubmittedEvent { * @source studio */ export interface AssistantSuggestionRunQueryClickedEvent { - action: TelemetryActions.ASSISTANT_SUGGESTION_RUN_QUERY_CLICKED + action: 'assistant_suggestion_run_query_clicked' properties: { /** * The type of suggestion that was run by the user. Mutate or Select query types only. @@ -658,7 +592,7 @@ export interface AssistantSuggestionRunQueryClickedEvent { * @page /dashboard/project/{ref}/sql */ export interface AssistantSqlDiffHandlerEvaluatedEvent { - action: TelemetryActions.ASSISTANT_SQL_DIFF_HANDLER_EVALUATED + action: 'assistant_sql_diff_handler_evaluated' properties: { /** * Whether the user accepted or rejected the changes. @@ -678,7 +612,7 @@ export interface AssistantSqlDiffHandlerEvaluatedEvent { * @source studio */ export interface AssistantEditInSqlEditorClickedEvent { - action: TelemetryActions.ASSISTANT_EDIT_IN_SQL_EDITOR_CLICKED + action: 'assistant_edit_in_sql_editor_clicked' properties: { /** * Whether the user is in the SQL editor page or in a new snippet. @@ -700,7 +634,7 @@ export interface AssistantEditInSqlEditorClickedEvent { * @page /dashboard/project/{ref}/reports/{id} */ export interface CustomReportAddSQLBlockClicked { - action: TelemetryActions.CUSTOM_REPORT_ADD_SQL_BLOCK_CLICKED + action: 'custom_report_add_sql_block_clicked' } /** @@ -711,7 +645,7 @@ export interface CustomReportAddSQLBlockClicked { * @page /dashboard/project/{ref}/reports/{id} */ export interface CustomReportAssistantSQLBlockAdded { - action: TelemetryActions.CUSTOM_REPORT_ASSISTANT_SQL_BLOCK_ADDED + action: 'custom_report_assistant_sql_block_added' } /** @@ -721,7 +655,7 @@ export interface CustomReportAssistantSQLBlockAdded { * @source docs */ export interface DocsFeedbackClickedEvent { - action: TelemetryActions.DOCS_FEEDBACK_CLICKED + action: 'docs_feedback_clicked' properties: { /** * 'yes' means clicking on the tick button, 'no' means clicking on the cross button. @@ -730,17 +664,6 @@ export interface DocsFeedbackClickedEvent { } } -/** - * User clicked the "Request a Demo" button in the homepage hero section. - * - * @group Events - * @source www - * @page / - */ -export interface HomepageHeroRequestDemoClickedEvent { - action: TelemetryActions.HOMEPAGE_HERO_REQUEST_DEMO_CLICKED -} - /** * User clicked the framework quickstart card on the homepage, leading to the specific framework documentation. * @@ -749,7 +672,7 @@ export interface HomepageHeroRequestDemoClickedEvent { * @page / */ export interface HomepageFrameworkQuickstartClickedEvent { - action: TelemetryActions.HOMEPAGE_FRAMEWORK_QUICKSTART_CLICKED + action: 'homepage_framework_quickstart_clicked' properties: { /** * The name of the framework quickstart card clicked. @@ -766,7 +689,7 @@ export interface HomepageFrameworkQuickstartClickedEvent { * @page / */ export interface HomepageProductCardClickedEvent { - action: TelemetryActions.HOMEPAGE_PRODUCT_CARD_CLICKED + action: 'homepage_product_card_clicked' properties: { product: string } @@ -780,7 +703,7 @@ export interface HomepageProductCardClickedEvent { * @page /pricing */ export interface WwwPricingPlanCtaClickedEvent { - action: TelemetryActions.WWW_PRICING_PLAN_CTA_CLICKED + action: 'www_pricing_plan_cta_clicked' properties: { /** * The plan type that was clicked. @@ -808,7 +731,7 @@ export interface WwwPricingPlanCtaClickedEvent { * @page /events/* */ export interface EventPageCtaClickedEvent { - action: TelemetryActions.EVENT_PAGE_CTA_CLICKED + action: 'www_pricing_plan_cta_clicked' properties: { /** * The title of the event clicked. @@ -825,7 +748,7 @@ export interface EventPageCtaClickedEvent { * @page / */ export interface HomepageGitHubButtonClickedEvent { - action: TelemetryActions.HOMEPAGE_GITHUB_BUTTON_CLICKED + action: 'homepage_github_button_clicked' } /** @@ -836,7 +759,7 @@ export interface HomepageGitHubButtonClickedEvent { * @page / */ export interface HomepageGitHubDiscussionsButtonClickedEvent { - action: TelemetryActions.HOMEPAGE_GITHUB_DISCUSSIONS_BUTTON_CLICKED + action: 'homepage_github_discussions_button_clicked' } /** @@ -847,7 +770,7 @@ export interface HomepageGitHubDiscussionsButtonClickedEvent { * @page / */ export interface HomepageDiscordButtonClickedEvent { - action: TelemetryActions.HOMEPAGE_DISCORD_BUTTON_CLICKED + action: 'homepage_discord_button_clicked' } /** @@ -858,7 +781,7 @@ export interface HomepageDiscordButtonClickedEvent { * @page / */ export interface HomepageCustomerStoryCardClickedEvent { - action: TelemetryActions.HOMEPAGE_CUSTOMER_STORY_CARD_CLICKED + action: 'homepage_customer_story_card_clicked' properties: { customer?: string /** @@ -876,7 +799,7 @@ export interface HomepageCustomerStoryCardClickedEvent { * @page / */ export interface HomepageProjectTemplateCardClickedEvent { - action: TelemetryActions.HOMEPAGE_PROJECT_TEMPLATE_CARD_CLICKED + action: 'homepage_project_template_card_clicked' properties: { /** * The title of the project template card clicked. @@ -893,7 +816,7 @@ export interface HomepageProjectTemplateCardClickedEvent { * @page /open-source */ export interface OpenSourceRepoCardClickedEvent { - action: TelemetryActions.OPEN_SOURCE_REPO_CARD_CLICKED + action: 'open_source_repo_card_clicked' properties: { /** * The name of the open source repository clicked. @@ -909,7 +832,7 @@ export interface OpenSourceRepoCardClickedEvent { * @source www */ export interface StartProjectButtonClickedEvent { - action: TelemetryActions.START_PROJECT_BUTTON_CLICKED + action: 'start_project_button_clicked' properties: { /** * The source of the button click, e.g. homepage hero, product page header. @@ -925,7 +848,7 @@ export interface StartProjectButtonClickedEvent { * @source www */ export interface SeeDocumentationButtonClickedEvent { - action: TelemetryActions.SEE_DOCUMENTATION_BUTTON_CLICKED + action: 'see_documentation_button_clicked' properties: { /** * The source of the button click, e.g. homepage hero, product page header - product name. @@ -941,7 +864,7 @@ export interface SeeDocumentationButtonClickedEvent { * @source www */ export interface RequestDemoButtonClickedEvent { - action: TelemetryActions.REQUEST_DEMO_BUTTON_CLICKED + action: 'request_demo_button_clicked' properties: { /** * The source of the button click, e.g. homepage hero, cta banner, product page header. @@ -958,7 +881,7 @@ export interface RequestDemoButtonClickedEvent { * @source www */ export interface SignInButtonClickedEvent { - action: TelemetryActions.SIGN_IN_BUTTON_CLICKED + action: 'sign_in_button_clicked' properties: { /** * The source of the button click, e.g. homepage hero, cta banner, product page header. @@ -974,7 +897,7 @@ export interface SignInButtonClickedEvent { * @source studio */ export interface HelpButtonClickedEvent { - action: TelemetryActions.HELP_BUTTON_CLICKED + action: 'help_button_clicked' groups: { project?: string organization?: string @@ -988,7 +911,7 @@ export interface HelpButtonClickedEvent { * @source studio */ export interface SendFeedbackButtonClickedEvent { - action: TelemetryActions.SEND_FEEDBACK_BUTTON_CLICKED + action: 'send_feedback_button_clicked' groups: { project?: string organization?: string @@ -1003,7 +926,7 @@ export interface SendFeedbackButtonClickedEvent { * @page /project/{ref} */ export interface ExampleProjectCardClickedEvent { - action: TelemetryActions.EXAMPLE_PROJECT_CARD_CLICKED + action: 'example_project_card_clicked' properties: { /** * The title of the example project card clicked. @@ -1024,7 +947,7 @@ export interface ExampleProjectCardClickedEvent { * @page /dashboard/project/{ref}/editor */ export interface ImportDataButtonClickedEvent { - action: TelemetryActions.IMPORT_DATA_BUTTON_CLICKED + action: 'import_data_button_clicked' properties: { /** * The type of table the data is imported to. @@ -1047,7 +970,7 @@ export interface ImportDataButtonClickedEvent { * @page /dashboard/project/{ref}/editor */ export interface ImportDataAddedEvent { - action: TelemetryActions.IMPORT_DATA_ADDED + action: 'import_data_added' groups: { project: string organization: string @@ -1062,7 +985,7 @@ export interface ImportDataAddedEvent { * @page /dashboard/project/{ref}/sql/{id} */ export interface SqlEditorQueryRunButtonClickedEvent { - action: TelemetryActions.SQL_EDITOR_QUERY_RUN_BUTTON_CLICKED + action: 'sql_editor_query_run_button_clicked' groups: { project: string organization: string @@ -1077,7 +1000,7 @@ export interface SqlEditorQueryRunButtonClickedEvent { * @page /billing?panel=subscriptionPlan */ export interface StudioPricingPlanCtaClickedEvent { - action: TelemetryActions.STUDIO_PRICING_PLAN_CTA_CLICKED + action: 'studio_pricing_plan_cta_clicked' properties: { /** * The plan type that was clicked. @@ -1099,7 +1022,7 @@ export interface StudioPricingPlanCtaClickedEvent { * @page /billing?panel=subscriptionPlan */ export interface StudioPricingSidePanelOpenedEvent { - action: TelemetryActions.STUDIO_PRICING_SIDE_PANEL_OPENED + action: 'studio_pricing_side_panel_opened' properties: { currentPlan?: string /** @@ -1110,6 +1033,9 @@ export interface StudioPricingSidePanelOpenedEvent { groups: { organization: string } } +/** + * @hidden + */ export type TelemetryEvent = | SignUpEvent | SignInEvent @@ -1147,7 +1073,6 @@ export type TelemetryEvent = | AssistantSqlDiffHandlerEvaluatedEvent | AssistantEditInSqlEditorClickedEvent | DocsFeedbackClickedEvent - | HomepageHeroRequestDemoClickedEvent | HomepageFrameworkQuickstartClickedEvent | HomepageProductCardClickedEvent | WwwPricingPlanCtaClickedEvent