[ENG] Add structured event tracking to Secure your project banner on SaaS
Problem
Banners are defined as the main component to promote features. That said, as of today, most of the banners are being introduced to GitLab without tracking. We don't know whether they are successfully leading to feature adoption and conversion. As we want to implement an efficient feature discovery experience, We need to validate their efficiency. The following banner is currently untracked:
Potential solution
Add anonymized user_IDs to understand the following:
- Is the namespace free or paid?
- How old is the namespace?
- How many users are in this namespace?
Add structured events to understand the following:
- Views to CTR
- Views to dismiss
- CTR to trial started
Where does this banner appear?
Events to track
Trigger | Action | Label | Property |
---|---|---|---|
The Vue component for the banner is rendered | render |
security_upgrade_banner |
security_upgrade_banner |
The user clicks on the primary CTA in the banner | click_button |
upgrade_or_free_trial |
security_upgrade_banner |
The user closes the banner | dismiss_banner |
security_upgrade_banner |
security_upgrade_banner |
Engineering plan
- Use the
gl-banner
events to know when the CTA is clicked or the banner is closed- As you test the dismissal of the callout, you’ll want to clear the record which is created in the
user_callouts
table:Users::Callouts.last.destroy
should generally do the trick - In case there are other
user_callouts
records to tangle with, you’ll be looking for thesecurity_configuration_upgrade_banner
one with your user’s id
- As you test the dismissal of the callout, you’ll want to clear the record which is created in the
- Use the
Tracking.mixin(…)
to implement the tracking needs:- Track
banner_shown
when the component is rendered - Track
click_button
on the CTA when theprimaryButtonClicked
event happens from thegl-banner
component - Track
dismiss_banner
when thehandleClose
event happens from thegl-banner
component
- Track
- With all tracked events, it is a given that we will be sending the desired information (anonymized
user.id
&namespace.id
orgroup.id
) in thegitlab_standard
context - Add/update related tests for the above changes
Edited by Dallas Reedy