aboutsummaryrefslogtreecommitdiff
path: root/apps/web/lib/analytics.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/lib/analytics.ts')
-rw-r--r--apps/web/lib/analytics.ts101
1 files changed, 101 insertions, 0 deletions
diff --git a/apps/web/lib/analytics.ts b/apps/web/lib/analytics.ts
index 84eda62b..6d8c00eb 100644
--- a/apps/web/lib/analytics.ts
+++ b/apps/web/lib/analytics.ts
@@ -62,4 +62,105 @@ export const analytics = {
mcpModalOpened: () => safeCapture("mcp_modal_opened"),
addDocumentModalOpened: () => safeCapture("add_document_modal_opened"),
+
+ // onboarding analytics
+ onboardingStepViewed: (props: { step: string; trigger: "user" | "auto" }) =>
+ safeCapture("onboarding_step_viewed", props),
+
+ onboardingNameSubmitted: (props: { name_length: number }) =>
+ safeCapture("onboarding_name_submitted", props),
+
+ onboardingProfileSubmitted: (props: {
+ has_twitter: boolean
+ has_linkedin: boolean
+ other_links_count: number
+ description_length: number
+ }) => safeCapture("onboarding_profile_submitted", props),
+
+ onboardingRelatableSelected: (props: { options: string[] }) =>
+ safeCapture("onboarding_relatable_selected", props),
+
+ onboardingIntegrationClicked: (props: { integration: string }) =>
+ safeCapture("onboarding_integration_clicked", props),
+
+ onboardingChromeExtensionClicked: (props: {
+ source: "onboarding" | "settings"
+ }) => safeCapture("onboarding_chrome_extension_clicked", props),
+
+ onboardingMcpDetailOpened: () => safeCapture("onboarding_mcp_detail_opened"),
+
+ onboardingXBookmarksDetailOpened: () =>
+ safeCapture("onboarding_x_bookmarks_detail_opened"),
+
+ onboardingCompleted: () => safeCapture("onboarding_completed"),
+
+ // main app analytics
+ searchOpened: (props: {
+ source: "hotkey" | "header" | "highlight_related"
+ }) => safeCapture("search_opened", props),
+
+ documentModalOpened: (props: { document_id: string }) =>
+ safeCapture("document_modal_opened", props),
+
+ fullscreenNoteModalOpened: () => safeCapture("fullscreen_note_modal_opened"),
+
+ highlightClicked: (props: {
+ highlight_id: string
+ action: "chat" | "related"
+ }) => safeCapture("highlight_clicked", props),
+
+ // chat analytics
+ chatMessageSent: (props: {
+ source: "typed" | "suggested" | "highlight" | "follow_up"
+ }) => safeCapture("chat_message_sent", props),
+
+ chatFollowUpClicked: (props: { thread_id?: string }) =>
+ safeCapture("chat_follow_up_clicked", props),
+
+ chatSuggestedQuestionClicked: () =>
+ safeCapture("chat_suggested_question_clicked"),
+
+ chatMessageLiked: (props: { message_id: string }) =>
+ safeCapture("chat_message_liked", props),
+
+ chatMessageDisliked: (props: { message_id: string }) =>
+ safeCapture("chat_message_disliked", props),
+
+ chatMessageCopied: (props: { message_id: string }) =>
+ safeCapture("chat_message_copied", props),
+
+ chatMemoryExpanded: (props: { message_id: string }) =>
+ safeCapture("chat_memory_expanded", props),
+
+ chatMemoryCollapsed: (props: { message_id: string }) =>
+ safeCapture("chat_memory_collapsed", props),
+
+ chatThreadLoaded: (props: { thread_id: string }) =>
+ safeCapture("chat_thread_loaded", props),
+
+ chatThreadDeleted: (props: { thread_id: string }) =>
+ safeCapture("chat_thread_deleted", props),
+
+ modelChanged: (props: { model: string }) =>
+ safeCapture("model_changed", props),
+
+ // settings / spaces / docs analytics
+ settingsTabChanged: (props: {
+ tab: "account" | "integrations" | "connections" | "support"
+ }) => safeCapture("settings_tab_changed", props),
+
+ spaceCreated: () => safeCapture("space_created"),
+
+ spaceSwitched: (props: { space_id: string }) =>
+ safeCapture("space_switched", props),
+
+ quickNoteCreated: () => safeCapture("quick_note_created"),
+
+ quickNoteEdited: () => safeCapture("quick_note_edited"),
+
+ documentDeleted: (props: { document_id: string }) =>
+ safeCapture("document_deleted", props),
+
+ documentEdited: (props: { document_id: string }) =>
+ safeCapture("document_edited", props),
}