From b4c979e9bf960d6b0a656f463346ef55b6afad51 Mon Sep 17 00:00:00 2001 From: Novus Bot Date: Sun, 26 Apr 2026 11:44:00 -0400 Subject: [PATCH] Instrument Pendo Track Events --- src/components/Chat/ChatWidget.tsx | 12 ++++++++++++ src/components/OKR/ObjectiveCard.tsx | 10 ++++++++++ src/pages/Register.tsx | 3 +++ 3 files changed, 25 insertions(+) diff --git a/src/components/Chat/ChatWidget.tsx b/src/components/Chat/ChatWidget.tsx index d219cb6..ea3d563 100644 --- a/src/components/Chat/ChatWidget.tsx +++ b/src/components/Chat/ChatWidget.tsx @@ -47,6 +47,9 @@ export function ChatWidget() { localStorage.setItem(API_KEY_STORAGE, trimmed); setApiKey(trimmed); setKeyInput(''); + pendo.track("ai_chat_api_key_configured", { + has_existing_messages: messages.length > 0, + }); }; const clearKey = () => { @@ -83,6 +86,15 @@ export function ChatWidget() { const response = await sendChatMessage(history, apiKey); setMessages((prev) => [...prev, { role: 'assistant', content: response }]); + const quarterObjectives = objectives.filter((o) => o.quarter === selectedQuarter); + pendo.track("ai_chat_message_sent", { + message_length: trimmed.length, + conversation_message_count: messages.length + 2, + quarter: selectedQuarter, + objectives_count_in_context: quarterObjectives.length, + response_length: response.length, + is_first_message: messages.length === 0, + }); } catch (err) { const msg = err instanceof Error ? err.message : 'Something went wrong.'; setError(msg); diff --git a/src/components/OKR/ObjectiveCard.tsx b/src/components/OKR/ObjectiveCard.tsx index d4d40a5..9298287 100644 --- a/src/components/OKR/ObjectiveCard.tsx +++ b/src/components/OKR/ObjectiveCard.tsx @@ -17,6 +17,16 @@ export function ObjectiveCard({ objective, onEdit }: ObjectiveCardProps) { const handleDelete = () => { if (confirm('Are you sure you want to delete this objective?')) { + const childAlignments = objectives.filter((o) => o.parentId === objective.id); + const progressVal = calculateProgress(); + pendo.track("objective_deleted", { + objective_level: objective.level, + quarter: objective.quarter, + key_result_count: objective.keyResults.length, + had_progress: progressVal.current > 0, + had_child_alignments: childAlignments.length > 0, + progress_percentage: progressVal.current, + }); deleteObjective(objective.id); } }; diff --git a/src/pages/Register.tsx b/src/pages/Register.tsx index 878fce8..b3c0f59 100644 --- a/src/pages/Register.tsx +++ b/src/pages/Register.tsx @@ -33,6 +33,9 @@ export function Register() { }); navigate('/'); } else { + pendo.track("user_registration_failed", { + error_reason: result.error || "Registration failed", + }); setError(result.error || 'Registration failed'); } };