Skip to content

Comments

[WEB-4603] feat: add missing event trackers#7513

Merged
sriramveeraghanta merged 4 commits intopreviewfrom
feat-missing-event-trackers
Jul 30, 2025
Merged

[WEB-4603] feat: add missing event trackers#7513
sriramveeraghanta merged 4 commits intopreviewfrom
feat-missing-event-trackers

Conversation

@prateekshourya29
Copy link
Member

@prateekshourya29 prateekshourya29 commented Jul 30, 2025

Description

Type of Change

  • Feature (non-breaking change which adds functionality)

Summary by CodeRabbit

  • New Features

    • Enhanced event tracking for user interactions across password creation, project view management, onboarding steps, and product changelog access.
    • Added tracking attributes and event calls to buttons, modals, command palettes, context menus, and onboarding flows for improved analytics and telemetry.
  • Refactor

    • Updated component interfaces to accept new tracking-related properties where applicable.
  • Chores

    • Expanded event and element tracking constants to support more granular user interaction analytics.
  • Bug Fixes

    • No user-facing bug fixes included.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 30, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

This change introduces and standardizes event tracking across multiple UI components and flows, particularly for project view actions, onboarding, authentication, and product updates. It adds new event and element constants, updates component props to support tracking, and injects tracking calls and data attributes to capture user interactions throughout the application.

Changes

Cohort / File(s) Change Summary
Project View Event Tracking (UI/Logic)
apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/header.tsx, apps/web/ce/helpers/command-palette.ts, apps/web/core/components/command-palette/actions/project-actions.tsx, apps/web/core/components/views/views-list.tsx, apps/web/core/components/views/quick-actions.tsx
Added imports and usage of PROJECT_VIEW_TRACKER_ELEMENTS, injected data-ph-element attributes, and/or called captureClick to track user interactions with project view creation, command palette actions, quick actions, and context menus.
Save/Update View Button Tracking
apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/cycle-root.tsx, apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/module-root.tsx, apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/project-root.tsx, apps/web/core/components/issues/issue-layouts/save-filter-view.tsx, apps/web/core/components/views/update-view-component.tsx, apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/global-view-root.tsx, apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/project-view-root.tsx
Extended component props to accept a trackerElement string, passed appropriate tracking constants, and set data-ph-element attributes on save/update view buttons. Updated interface/type definitions where required.
View Modal Event Tracking
apps/web/core/components/views/modal.tsx, apps/web/core/components/views/delete-view-modal.tsx
Added event tracking calls (captureSuccess, captureError) for project view creation, update, and deletion actions, passing relevant event names and payloads.
Authentication & Onboarding Tracking
apps/web/app/(all)/accounts/set-password/page.tsx, apps/web/core/components/onboarding/profile-setup.tsx
Introduced event tracking for password creation, success, and error events in set password and onboarding flows. Updated wrapper props and event constants.
Product Updates Tracking
apps/web/core/components/global/product-updates/footer.tsx, apps/web/core/components/global/product-updates/modal.tsx
Added tracking attributes and view events for product changelog links and modal views, using new constants and captureView.
Event Tracker Constants
packages/constants/src/event-tracker/core.ts
Added/extended constants for event and element tracking, including new groups for project views, user events, onboarding, and authentication. No changes to logic, only new exports.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant UI_Component
  participant EventTracker

  User->>UI_Component: Interacts (e.g., clicks button)
  UI_Component->>EventTracker: captureClick/captureView/captureSuccess/captureError(event, data)
  EventTracker-->>UI_Component: (Event recorded)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • makeplane/plane#7304: Expands tracker element constants for project pages and UI elements, related to the constants and tracking attributes added here.
  • makeplane/plane#7289: Refactors and extends event tracker constants and usage, overlapping with this PR’s introduction of PROJECT_VIEW_TRACKER_ELEMENTS.
  • makeplane/plane#7276: Refactors event constants structure and payload functions, related through modifications to event-tracker constants.

Suggested labels

🌟improvement, requires approval

Suggested reviewers

  • sriramveeraghanta

Poem

Hopping through code with nimble delight,
I sprinkle trackers left and right.
From views to modals, buttons too,
Every click and save I now pursue!
With constants new and events in tow,
Analytics will surely grow.
🐇✨

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 851e914 and 3b3ad92.

📒 Files selected for processing (3)
  • apps/web/core/components/global/product-updates/footer.tsx (2 hunks)
  • apps/web/core/components/global/product-updates/modal.tsx (3 hunks)
  • packages/constants/src/event-tracker/core.ts (4 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat-missing-event-trackers

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@makeplane
Copy link

makeplane bot commented Jul 30, 2025

Pull Request Linked with Plane Work Items

Comment Automatically Generated by Plane

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c4d2c5b and 851e914.

📒 Files selected for processing (19)
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/header.tsx (2 hunks)
  • apps/web/app/(all)/accounts/set-password/page.tsx (4 hunks)
  • apps/web/ce/helpers/command-palette.ts (2 hunks)
  • apps/web/core/components/command-palette/actions/project-actions.tsx (2 hunks)
  • apps/web/core/components/global/product-updates/footer.tsx (2 hunks)
  • apps/web/core/components/global/product-updates/modal.tsx (3 hunks)
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/cycle-root.tsx (2 hunks)
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/global-view-root.tsx (2 hunks)
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/module-root.tsx (2 hunks)
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/project-root.tsx (2 hunks)
  • apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/project-view-root.tsx (2 hunks)
  • apps/web/core/components/issues/issue-layouts/save-filter-view.tsx (2 hunks)
  • apps/web/core/components/onboarding/profile-setup.tsx (3 hunks)
  • apps/web/core/components/views/delete-view-modal.tsx (2 hunks)
  • apps/web/core/components/views/modal.tsx (2 hunks)
  • apps/web/core/components/views/quick-actions.tsx (4 hunks)
  • apps/web/core/components/views/update-view-component.tsx (3 hunks)
  • apps/web/core/components/views/views-list.tsx (3 hunks)
  • packages/constants/src/event-tracker/core.ts (5 hunks)
🧰 Additional context used
🧠 Learnings (11)
apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/global-view-root.tsx (1)

Learnt from: mathalav55
PR: #6452
File: web/helpers/issue.helper.ts:6-6
Timestamp: 2025-01-24T09:37:19.339Z
Learning: In the Plane codebase, ISSUE_DISPLAY_FILTERS_BY_LAYOUT and ISSUE_DISPLAY_FILTERS_BY_PAGE are two distinct constants serving different purposes - one for layout-level filters and another for page-level filters. They are not interchangeable and should coexist.

apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/header.tsx (2)

Learnt from: prateekshourya29
PR: #7188
File: web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/header.tsx:40-45
Timestamp: 2025-06-18T09:46:08.566Z
Learning: When reviewing breadcrumb components that accept projectId or similar props, check if empty strings are being passed during loading states, which can result in invalid URLs. The preferred approach is to handle these loading states internally within the component rather than requiring each consumer to manage the loading logic.

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

apps/web/core/components/views/delete-view-modal.tsx (1)

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/project-view-root.tsx (2)

Learnt from: mathalav55
PR: #6452
File: web/helpers/issue.helper.ts:6-6
Timestamp: 2025-01-24T09:37:19.339Z
Learning: In the Plane codebase, ISSUE_DISPLAY_FILTERS_BY_LAYOUT and ISSUE_DISPLAY_FILTERS_BY_PAGE are two distinct constants serving different purposes - one for layout-level filters and another for page-level filters. They are not interchangeable and should coexist.

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

apps/web/core/components/views/views-list.tsx (1)

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/project-root.tsx (2)

Learnt from: mathalav55
PR: #6452
File: web/helpers/issue.helper.ts:6-6
Timestamp: 2025-01-24T09:37:19.339Z
Learning: In the Plane codebase, ISSUE_DISPLAY_FILTERS_BY_LAYOUT and ISSUE_DISPLAY_FILTERS_BY_PAGE are two distinct constants serving different purposes - one for layout-level filters and another for page-level filters. They are not interchangeable and should coexist.

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

apps/web/ce/helpers/command-palette.ts (1)

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

apps/web/core/components/global/product-updates/modal.tsx (1)

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

apps/web/core/components/views/quick-actions.tsx (1)

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

apps/web/core/components/onboarding/profile-setup.tsx (1)

Learnt from: lifeiscontent
PR: #7004
File: tests/integration-tests/tests/auth.setup.ts:11-14
Timestamp: 2025-06-06T19:03:04.891Z
Learning: When setting up Playwright authentication for integration tests, use multiple authentication setups (admin.setup.ts, user.setup.ts, logged-out.setup.ts) with separate projects in playwright.config.ts rather than a single shared authentication state. This prevents architectural debt and makes it easier to test different user roles and logged-out scenarios.

apps/web/core/components/command-palette/actions/project-actions.tsx (1)

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

🔇 Additional comments (46)
apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/header.tsx (2)

6-6: LGTM! Proper import of tracking constants.

The import correctly includes PROJECT_VIEW_TRACKER_ELEMENTS for event tracking functionality.


37-44: LGTM! Tracking attribute correctly applied.

The data-ph-element attribute is properly added to the "Add view" button using the appropriate tracker constant. The button's functionality remains unchanged while enabling analytics tracking.

apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/project-root.tsx (2)

4-9: LGTM! Tracking constants import added correctly.

The import properly includes PROJECT_VIEW_TRACKER_ELEMENTS alongside existing constants for consistent tracking implementation.


102-102: LGTM! Tracking element prop correctly passed.

The trackerElement prop is properly passed to the SaveFilterView component using the appropriate constant for project header save button tracking.

apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/global-view-root.tsx (2)

14-14: LGTM! Global view tracking constants imported correctly.

The import properly includes GLOBAL_VIEW_TRACKER_ELEMENTS which is the appropriate constant set for global view tracking, distinct from project view tracking.


193-193: LGTM! Tracking element prop correctly applied.

The trackerElement prop is properly passed to the UpdateViewComponent using the appropriate global view tracker constant for the save view button.

apps/web/core/components/global/product-updates/footer.tsx (1)

2-2: LGTM! User tracking constants imported correctly.

The import properly includes USER_TRACKER_EVENTS for tracking user interactions with product update elements.

apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/module-root.tsx (2)

3-3: LGTM! Tracking constants import added correctly.

The import properly includes PROJECT_VIEW_TRACKER_ELEMENTS for consistent project view tracking implementation across filter roots.


97-97: LGTM! Module-specific tracking element properly applied.

The trackerElement prop is correctly passed to the SaveFilterView component using the module-specific tracker constant, maintaining consistency with other filter root implementations.

apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/cycle-root.tsx (2)

3-3: LGTM! Import statement correctly updated.

The addition of PROJECT_VIEW_TRACKER_ELEMENTS to the import statement is consistent with the event tracking enhancement.


98-98: LGTM! Tracker element properly integrated.

The trackerElement prop is correctly passed to the SaveFilterView component with the appropriate constant for cycle header tracking.

apps/web/core/components/command-palette/actions/project-actions.tsx (2)

6-11: LGTM! Tracker constants properly imported.

The import statement correctly includes all necessary tracker element constants for comprehensive command palette tracking.


63-63: LGTM! Event tracking attribute added.

The data-ph-element attribute is properly added to the "Create new view" command item for consistent tracking across command palette actions.

apps/web/core/components/issues/issue-layouts/filters/applied-filters/roots/project-view-root.tsx (2)

9-14: LGTM! Import statement properly updated.

The addition of PROJECT_VIEW_TRACKER_ELEMENTS to the existing import statement is correctly formatted and maintains good organization.


153-153: LGTM! Tracker element correctly integrated.

The trackerElement prop is properly passed to the UpdateViewComponent with the appropriate constant for header save view button tracking.

apps/web/core/components/views/delete-view-modal.tsx (3)

7-7: LGTM! Event tracking imports properly added.

The necessary constants and helper functions for event tracking are correctly imported.

Also applies to: 12-12


51-56: LGTM! Success tracking properly implemented.

The captureSuccess call is correctly placed after the success toast and includes appropriate payload data with the view ID.


64-70: LGTM! Error tracking properly implemented.

The captureError call is correctly placed in the catch block and maintains consistency with the success tracking payload structure.

apps/web/core/components/views/update-view-component.tsx (2)

13-13: LGTM! Tracker element prop properly added.

The addition of the required trackerElement prop makes the component more flexible and ensures consistent event tracking across different usage contexts.


25-25: LGTM! Dynamic tracker element properly implemented.

The prop is correctly destructured and used in the data-ph-element attribute, enabling flexible tracking based on the component's usage context.

Also applies to: 67-67

apps/web/ce/helpers/command-palette.ts (2)

7-7: LGTM: Consistent import addition

The import of PROJECT_VIEW_TRACKER_ELEMENTS follows the existing pattern and is properly used in the code.


82-85: LGTM: Proper event tracking implementation

The tracking implementation correctly follows the established pattern in this file. The captureClick call is properly placed after the modal toggle action, consistent with other shortcuts in the same function.

apps/web/core/components/views/views-list.tsx (2)

4-4: LGTM: Proper imports for event tracking

The imports for PROJECT_VIEW_TRACKER_ELEMENTS and captureClick are correctly added to support the new tracking functionality.

Also applies to: 13-13


75-78: LGTM: Consistent event tracking implementation

The tracking implementation is well done:

  • captureClick is called after the modal toggle action
  • Uses the appropriate EMPTY_STATE_CREATE_BUTTON element identifier
  • Maintains the existing functionality while adding proper tracking
apps/web/core/components/issues/issue-layouts/save-filter-view.tsx (2)

17-17: LGTM: Proper interface extension

The addition of trackerElement as a required string property correctly extends the interface to support event tracking.


21-21: LGTM: Clean tracking implementation

The implementation properly:

  • Destructures the new trackerElement prop
  • Applies it as a data-ph-element attribute on the Button
  • Maintains component flexibility by accepting the tracking identifier from parent components

Also applies to: 35-35

apps/web/core/components/global/product-updates/modal.tsx (3)

1-1: LGTM: Proper imports for tracking functionality

The imports are correctly added to support the new event tracking features:

  • useEffect for view tracking on modal open
  • Tracking constants for element and event identifiers
  • captureView helper function

Also applies to: 3-3, 10-10


26-30: LGTM: Proper view tracking implementation

The useEffect correctly captures a view event when the modal opens. The dependency array [isOpen] ensures the tracking only fires when the modal state changes.


44-44: LGTM: Consistent link tracking

The data-ph-element attribute properly tracks clicks on the changelog link using the appropriate event constant.

apps/web/app/(all)/accounts/set-password/page.tsx (4)

12-12: LGTM: Comprehensive tracking imports

The imports properly include all necessary tracking constants and helper functions for authentication event tracking.

Also applies to: 20-20


71-75: LGTM: Proper view tracking on component mount

The useEffect correctly captures a view event when the set password form is displayed. The empty dependency array ensures it only runs once on mount.


103-105: LGTM: Complete success and error tracking

The tracking implementation properly captures both success and error scenarios:

  • captureSuccess is called after successful password creation
  • captureError is called when an error occurs
  • Both use the same event name for consistency
  • Tracking doesn't interfere with existing error handling logic

Also applies to: 113-115


131-131: LGTM: Appropriate pageType update

The change from NON_AUTHENTICATED to SET_PASSWORD provides more specific context for this authentication flow.

apps/web/core/components/views/modal.tsx (3)

6-6: LGTM: Clean import additions for event tracking

The imports for tracking constants and helper functions are well-organized and follow the existing import structure.

Also applies to: 13-13


48-64: LGTM: Comprehensive tracking for view creation

The event tracking implementation correctly captures both success and error scenarios for view creation. The success event includes the view ID as payload, which is valuable for analytics.


71-90: LGTM: Consistent tracking implementation for view updates

The tracking for view updates follows the same pattern as creation, maintaining consistency. Both success and error paths are properly instrumented with appropriate payloads.

apps/web/core/components/onboarding/profile-setup.tsx (3)

9-14: LGTM: Well-organized tracking imports

The import additions for tracking constants are properly structured and include all necessary elements for auth and onboarding tracking.


131-142: LGTM: Proper error handling with tracking

The password creation tracking correctly captures both success and error scenarios, providing valuable telemetry for the authentication flow.


199-210: LGTM: Smart conditional tracking for user choices

The implementation intelligently tracks whether users chose to create a password or skip the step, providing useful insights into onboarding patterns. The tracking is properly placed after the promise resolution.

apps/web/core/components/views/quick-actions.tsx (3)

7-7: LGTM: Clean tracking imports

The imports for tracking elements and helper functions are properly placed and follow the existing import structure.

Also applies to: 15-15


87-93: LGTM: Elegant tracking wrapper for context menu

The approach of mapping menu items to include tracking calls is clean and maintainable. It preserves the original functionality while adding telemetry.


106-106: LGTM: Consistent tracking across menu interactions

The tracking implementation covers both context menu and quick action clicks with appropriate element identifiers, ensuring comprehensive coverage of user interactions.

Also applies to: 116-116

packages/constants/src/event-tracker/core.ts (4)

271-271: LGTM: Appropriate auth tracking constants

The additions for password creation tracking events and elements follow the existing naming conventions and are well-placed within the auth section.

Also applies to: 282-282


304-325: LGTM: Comprehensive project view tracking constants

The new PROJECT_VIEW_TRACKER_EVENTS and PROJECT_VIEW_TRACKER_ELEMENTS sections are well-structured and provide comprehensive coverage for project view interactions. The naming is consistent with existing patterns.


369-374: LGTM: User tracking constants for changelog

The additions for changelog tracking are appropriately placed and follow the established naming conventions.


383-384: LGTM: Onboarding password tracking elements

The new onboarding tracker elements for password creation scenarios are well-named and provide valuable insights into user onboarding choices.

@sriramveeraghanta sriramveeraghanta merged commit ef8e613 into preview Jul 30, 2025
3 of 6 checks passed
@sriramveeraghanta sriramveeraghanta deleted the feat-missing-event-trackers branch July 30, 2025 11:46
lifeiscontent pushed a commit that referenced this pull request Aug 18, 2025
* feat: add event trackers for password creation

* feat: add event trackers for project views

* feat: add event trackers for product updates and changelogs

* chore: use element name instead of event name for changelog redirect link
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants