diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewMetaData/LinkDialogue.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewMetaData/LinkDialogue.tsx index 1784a532a2..3cebc32fe9 100644 --- a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewMetaData/LinkDialogue.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewMetaData/LinkDialogue.tsx @@ -6,6 +6,7 @@ import { useFeature } from 'hooks/api/getters/useFeature/useFeature'; import useToast from 'hooks/useToast'; import { formatUnknownError } from 'utils/formatUnknownError'; import type { FeatureLink } from 'interfaces/featureToggle'; +import { usePlausibleTracker } from 'hooks/usePlausibleTracker'; const StyledTextField = styled(TextField)(({ theme }) => ({ width: '100%', @@ -43,6 +44,7 @@ const LinkDialogue: FC = ({ const isEditMode = mode === 'edit'; const dialogueTitle = isEditMode ? 'Edit link' : 'Add link'; const successMessage = isEditMode ? 'Link updated' : 'Link added'; + const { trackEvent } = usePlausibleTracker(); useEffect(() => { if (isEditMode && link) { @@ -60,8 +62,18 @@ const LinkDialogue: FC = ({ try { if (isEditMode) { await editLink(id, { url, title: title || null }); + trackEvent('feature-links', { + props: { + eventType: 'edit-link', + }, + }); } else { await addLink({ url, title: title || null }); + trackEvent('feature-links', { + props: { + eventType: 'add-link', + }, + }); } setToastData({ text: successMessage, type: 'success' }); diff --git a/frontend/src/component/project/Project/ProjectEnterpriseSettingsForm/ProjectLinkTemplates/ProjectLinkTemplateEditor.tsx b/frontend/src/component/project/Project/ProjectEnterpriseSettingsForm/ProjectLinkTemplates/ProjectLinkTemplateEditor.tsx index 2419acbe28..d409f256c9 100644 --- a/frontend/src/component/project/Project/ProjectEnterpriseSettingsForm/ProjectLinkTemplates/ProjectLinkTemplateEditor.tsx +++ b/frontend/src/component/project/Project/ProjectEnterpriseSettingsForm/ProjectLinkTemplates/ProjectLinkTemplateEditor.tsx @@ -1,6 +1,7 @@ import { useState } from 'react'; import { Button, styled, TextField } from '@mui/material'; import type { ProjectLinkTemplateSchema } from 'openapi'; +import { usePlausibleTracker } from 'hooks/usePlausibleTracker'; interface IProjectLinkTemplateEditorProps { template?: ProjectLinkTemplateSchema; @@ -34,6 +35,7 @@ const ProjectLinkTemplateEditor = ({ title?: string; url?: string; }>({}); + const { trackEvent } = usePlausibleTracker(); const validateTemplateForm = () => { const errors: { title?: string; url?: string } = {}; @@ -48,6 +50,11 @@ const ProjectLinkTemplateEditor = ({ const handleSave = () => { if (validateTemplateForm()) { + trackEvent('feature-links', { + props: { + eventType: isAdding ? 'add-template' : 'edit-template', + }, + }); onSave({ title: templateTitle || null, urlTemplate: templateUrl, diff --git a/frontend/src/hooks/usePlausibleTracker.ts b/frontend/src/hooks/usePlausibleTracker.ts index fa17bf3d1d..ba796e3dec 100644 --- a/frontend/src/hooks/usePlausibleTracker.ts +++ b/frontend/src/hooks/usePlausibleTracker.ts @@ -73,7 +73,8 @@ export type CustomEvents = | 'order-environments' | 'project-navigation' | 'productivity-report' - | 'release-management'; + | 'release-management' + | 'feature-links'; export const usePlausibleTracker = () => { const plausible = useContext(PlausibleContext);