Add aggregate counts for epic related user driven events
This is the implementation issue that came out of https://gitlab.com/gitlab-data/analytics/-/issues/5280
Goal
Track user interactions with epics within the [usage ping] so that we can calculate Monthly Active Users (MAU) for Plan. It is important that we have an accurate reflect of MAU as it is one of the primary metrics that GitLab leadership uses to make informed investment decisions across the product.
Product Planning MAU Definition
[The sum of all unique users that took an action within an epic over a given period of time.]
Proposal
Implement a counter in the [usage ping] that aggregates the total count of unique users that took an action on an epic.
Events To Aggregate In [Usage Ping]
Action | Description | Added To Counter | Assignee | Sisense |
---|---|---|---|---|
epic_created | Epic created | !53651 (merged) | @felipe_artur | view chart |
epic_title | Changed the title of the epic | !56489 (merged) | @cablett | view chart |
epic_description | Changed the description of the epic | !56489 (merged) | @cablett | view chart |
epic_task | Ticked off a task in a task list in the epic description | !59871 (merged) | @jarka | NOT THERE |
epic_opened | Epic opened | - | - | - |
epic_re-opened | Epic re-opened | !56246 (merged) | @jarka | view chart |
epic_closed | Epic closed | !56246 (merged) | @jarka | view chart |
epic_moved | Epic moved to another group | - not possible - | @jarka | |
epic_label | Changed the labels on the epic | !56571 (merged) | @jarka | view chart |
epic_confidential | Marked the issue as confidential | !56483 (merged) | @jarka | view chart |
epic_visible | Marked the epic as not confidential | !56483 (merged) | @jarka | view chart |
epic_issue | Issue added to the epic from any means | !56559 (merged) | @felipe_artur | NOT THERE |
issue_promoted_to_epic | Issue promoted epic | !56706 (merged) | @felipe_artur | view chart |
epic_issue_added | Issue added/created from within an epic detail page | !61822 (merged) | @donaldcook | view chart |
epic_issue_removed | Issue removed from epic | !58426 (merged) | @felipe_artur | view chart |
epic_issue_moved | Issue in epic moved to another project | !58590 (merged) | @felipe_artur | view chart |
epic_note_created | Added a comment to the epic | !56609 (merged) | @cablett | view chart |
epic_note_updated | Edited a comment on the epic | !56610 (merged) | @cablett | view chart |
epic_note_destroyed | Removed (deleted) a comment on the epic | !56617 (merged) | @cablett | view chart |
epic_start_date_fixed | Epic start date is set to fixed | !56619 (merged) | @cablett | view chart |
epic_start_date_inherited | Epic start date is set to inherited | !56619 (merged) | @cablett | view chart |
epic_due_date_fixed | Epic due date is set to fixed | !57457 (merged) | @cablett | view chart |
epic_due_date_inherited | Epic due date is set to inherited | !57457 (merged) | @cablett | view chart |
epic_start_date_fixed_changed | Epic start date changed manually | !57672 (merged) | @cablett | view chart |
epic_due_date_fixed_changed | Epic due date changed manually | !57672 (merged) | @cablett | view chart |
Epic parent set as other epic | - | - | - | |
epic_parent_changed | Epic parent changed | !60079 (merged) | @cablett | |
Epic parent epic unset | - | - | - | |
epic_cross_reference | Epic is referenced somewhere else (comment, issue description) | !59804 (merged) | @felipe_artur | |
epic_destroyed | Epic is destroyed | !59185 (merged) | @felipe_artur | view chart |
epic_emoji_awarded | Emoji awarded on epic | !60787 (merged) | @cablett | view chart |
epic_emoji_unawarded | Emoji unawarded on epic | !60989 (merged) | @cablett |
Note: Those marked with *
are now being tracked using resource events. So we must also account for records in those tables.
Implementation details
-
We can use redis counters to track user interactions in the table in the same way it was used for aggregate counts for issues, also it was suggested to use a separate feature flag for each event - #292253 (comment 467355562)
-
for actions for which we already add an action event, we can use
track_action_event
counter (#292253 (comment 483763723))