Track clicks on project creation page on GitLab.com

Problem to solve

To better understand user activity, we should track interactions on the new project page.

Further details

GitLab tracks events using Snowplow's trackStructEvent function. You can read more about it in the Snowplow documentation.

snowplow_name_here('trackStructEvent', 'category', 'action', 'label', 'property', 'value');

Please also check out our documentation. You can see our existing Snowplow header implementation in _snowplow.html.haml in app/views/layouts, and also read more about instrumentation in general.

Proposal

category will be set to the Rails page attribute by default (projects:new)

image

  • Record an event when clicked:
    • Tabs in navbar
      • "Create from template" tab: ('trackStructEvent','projects:new','click_tab','create_from_template','','')
      • "Import project" tab: ('trackStructEvent','projects:new','click_tab','import_project','','')
      • "CI/CD for external repo" tab: ('trackStructEvent','projects:new','click_tab','cicd_for_external_repo','','')
    • Form elements
      • Project path dropdown: ('trackStructEvent','projects:new','activate_form_input','blank_project','project_path','')
      • Project name input field activated: ('trackStructEvent','projects:new','activate_form_input','blank_project','project_name','')
      • Project description field activated: ('trackStructEvent','projects:new','activate_form_input','blank_project','project_description','')
      • Visibility private clicked: ('trackStructEvent','projects:new','activate_form_input','blank_project','project_visibility','0')
      • Visibility internal clicked: ('trackStructEvent','projects:new','activate_form_input','blank_project','project_visibility','10')
      • Visibility public clicked: ('trackStructEvent','projects:new','activate_form_input','blank_project','project_visibility','20')
      • Initialize repository with README checkbox: ('trackStructEvent','projects:new','activate_form_input','blank_project','init_with_readme',true or false)
      • Create project button: ('trackStructEvent','projects:new','click_button','blank_project','create_project','')
      • Cancel button: ('trackStructEvent','projects:new','click_button','blank_project','create_project','')

image

  • Record an event when clicked:
    • "Blank project" tab: ('trackStructEvent','projects:new','click_tab','blank_project','','')
    • Rails
      • Use template: ('trackStructEvent','projects:new','click_button','create_from_template','template_use','rails')
      • Preview: ('trackStructEvent','projects:new','click_button','create_from_template','template_preview','rails')
    • Spring
      • Use template: ('trackStructEvent','projects:new','click_button','create_from_template','template_use','spring')
      • Preview: ('trackStructEvent','projects:new','click_button','create_from_template','template_preview','spring')
    • Node
      • Use template: ('trackStructEvent','projects:new','click_button','create_from_template','template_use','express')
      • Preview: ('trackStructEvent','projects:new','click_button','create_from_template','template_preview','express')
  • After using a template:
    • Select new template button: ('trackStructEvent','projects:new','click_button','create_from_template','change_template','')
    • Project path dropdown: ('trackStructEvent','projects:new','activate_form_input','create_from_template','project_path','')
    • Project name input field activated: ('trackStructEvent','projects:new','activate_form_input','create_from_template','project_name','')
    • Project description field activated: ('trackStructEvent','projects:new','activate_form_input','create_from_template','project_description','')
    • Visibility private clicked: ('trackStructEvent','projects:new','activate_form_input','create_from_template','project_visibility','0')
    • Visibility internal clicked: ('trackStructEvent','projects:new','activate_form_input','create_from_template','project_visibility','10')
    • Visibility public clicked: ('trackStructEvent','projects:new','activate_form_input','create_from_template','project_visibility','20')
    • Initialize repository with README checkbox: ('trackStructEvent','projects:new','activate_form_input','create_from_template','init_with_readme',true or false)

image

  • Record an event when clicked:
    • GitLab export: ('trackStructEvent','projects:new','click_button','import_project','gitlab_export','')
    • GitHub: ('trackStructEvent','projects:new','click_button','import_project','github','')
    • GitLab.com: ('trackStructEvent','projects:new','click_button','import_project','gitlab_com','')
    • Bitbucket Cloud: ('trackStructEvent','projects:new','click_button','import_project','bitbucket_cloud','')
    • Bitbucket Server: ('trackStructEvent','projects:new','click_button','import_project','bitbucket_server','')
    • Google Code: ('trackStructEvent','projects:new','click_button','import_project','google_code','')
    • Fogbugz: ('trackStructEvent','projects:new','click_button','import_project','fogbugz','')
    • Gitea: ('trackStructEvent','projects:new','click_button','import_project','gitea','')
    • Repo by URL: ('trackStructEvent','projects:new','click_button','import_project','repo_url','')
    • Manifest file: ('trackStructEvent','projects:new','click_button','import_project','manifest_file','')

image

  • Record an event when clicked:
    • GitHub: ('trackStructEvent','projects:new','click_button','cicd_for_external_repo','github','')
    • Repo by URL: ('trackStructEvent','projects:new','click_button','cicd_for_external_repo','repo_url','')

What does success look like, and how can we measure that?

(If no way to measure success, link to an issue that will implement a way to measure this)

Links / references

Edited Jun 06, 2019 by Jeremy Watson (ex-GitLab)
Assignee Loading
Time tracking Loading