Credits Dashboard tab clicks are untracked on two of three surfaces
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
What we need
Add tab-click tracking to the two Credits Dashboard components that don't have it:
free_tier_trial_app.vuepaid_tier_trial_period_view.vue
They should emit the same three events app.vue already emits:
click_usage_overview_tab_credits_dashboardclick_usage_by_user_tab_credits_dashboardclick_usage_trend_tab_credits_dashboard
The events are already defined in ee/config/events/ and need no changes, and app.vue (L286-341) has a working implementation to copy.
Why now
Only the paid non-trial component has ever had this tracking. Since late May, nearly all dashboard traffic has been trial users, so we're recording no tab engagement at all. We can see that people open the dashboard, but not whether they use Usage by user or Usage trend once they're there.
Nice to have
The current test asserts the click by calling wrapper.vm.$emit('click') directly (app_spec.js:522-548), so it passes whether or not a handler exists. A test that dispatches a DOM click would catch this if it happens again.
Supporting data
Tab clicks stopped
Weekly totals, all three events combined (PROD.COMMON_MART.MART_BEHAVIOR_STRUCTURED_EVENT, queried 2026-08-20):
| Week of | Events | Namespaces |
|---|---|---|
| 2026-04-20 | 1,267 | 306 |
| 2026-05-04 | 1,169 | 276 |
| 2026-05-11 | 1,080 | 276 |
| 2026-05-18 | 1,105 | 236 |
| 2026-05-25 | 8 | 3 |
| 2026-06-01 | 31 | 2 |
| after 2026-06-01 | 0 | 0 |
The audience moved, the page didn't get quieter
Distinct namespaces viewing the dashboard, by plan:
| Week of | premium | ultimate | ultimate_trial |
|---|---|---|---|
| 2026-05-11 | 257 | 158 | 63 |
| 2026-05-18 | 198 | 160 | 67 |
| 2026-05-25 | 9 | 2 | 224 |
| 2026-06-01 | 2 | 3 | 384 |
| 2026-06-08 | 3 | 1 | 1,206 |
Pageloads over the same weeks were 2,471, 3,041, 2,261 and 2,159, so overall traffic held steady while the audience shifted onto components that cannot emit tab clicks.
Which component tracks what
index.js mounts meta_app.vue, which forks three ways:
| Surface | Component | Tab tracking |
|---|---|---|
| Paid, non-trial | app.vue (L286-341) |
Yes |
| Free tier | free_tier_trial_app.vue (L137-153) |
No |
| Paid tier trial | paid_tier_trial_period_view.vue (L115-143) |
No |
Both untracked components fire view_usage_billing_pageload on mount but render bare <gl-tab> elements with no @click handler. The split dates to abed1d159987 (2026-02-09).
Not a regression
Checked against 72e19e4213f7 (2026-08-11), reviewing every commit from 2026-05-18 to 06-05 touching the dashboard, tracking layer, feature flags and @gitlab/ui:
- Event YAMLs unchanged, not deprecated, not renamed. One commit in their whole history (
dafad38325f1, 2026-04-15). app.vuehandlers unchanged since April.- The
@gitlab/ui134.0.0 to 134.1.2 bump (f43597fbbc22, 2026-05-20) is byte-identical intabs/and vendoredbootstrap-vue/tabs/. 6b452720dd40renames a path helper feeding a different component.59b2b6c85496(2026-05-22) is an 18-11 backport and never reached .com.- No credits feature-flag YAML changed in the window.
Ownership
The event YAMLs say product_group: acquisition, but the components are maintained by Utilization (Kos Palchyk, Sheldon Led, Ammar Alakkad, Sharmad Nachnolkar, with Tim Noah on design). The existing tracking in app.vue was added by Kiesha Herman, outside the group. Labelled group::utilization on the basis of where the fix goes. Worth checking with Kiesha whether paid-only was deliberate.
Separate issue, noted here so it isn't lost
Dashboard pageloads have fallen from 3,584/week (2026-06-29) to 707/week (2026-08-17), with namespaces down from 975 to 104. This looks like an actual decline in use rather than an instrumentation problem, and is worth looking at separately.