Design an improved onboarding experience for a new user
### Description This is the first screen a GitLab.com user sees upon signing in to the site, until they create a project: ![image](/uploads/c692a17832e4f21321dfb86104934648/image.png) This view has a few missed opportunities. It doesn't help them: * Get introduced to the product in an interactive way. We link to the docs, but we could do quite a bit more. * Invest in the platform, aside from suggestions to create a project (good) or an empty group (not quite as good). * Feel good about being a part of GitLab. We should make this screen a welcoming experience. * Introduce the user to our open core model, how they can contribute. At some point, we should also consider a different experience for different user types (an admin, a GitLab.com user, CE vs. EE, someone on Gold/Ultimate vs. Free/Core). We should deepen the experience in line with onboarding users into the different stages of I2P. #### Products to explore: - https://codefresh.io/ ### Proposal * Make the first screen a welcoming, celebratory experience that encourages the user to take a critical action (create/import a project, or explore GitLab features). * Introduce the user to the high-level stages of GitLab's I2P workflow, and give them the ability to explore. * One possibility is creating a dummy project, seeded with examples. ### Progress **Current onboarding user journey** ![7d175103-8669-492c-9599-0517c08b14a2](/uploads/500a62914a0d9a00a11f51852db8d759/7d175103-8669-492c-9599-0517c08b14a2.png) *Comment: It takes 37 actions from users to sign up for the free trial.* [User journey in Mural](https://app.mural.co/t/gitlab6108/m/gitlab6108/1551257417139/194157c378eb7611e84d971deb940dd604c929b2) [Video-documented attempt to sign up for a trial](https://www.youtube.com/watch?v=O-zjek64d0g&feature=youtu.be) *Problems to solve* - single & standard journey for all users - not exposing what GitLab has to offer (not even the basics) - the users are limited in terms of what they can do (no free trial by default, except if the user clicks on the ‘Try GitLab for Free’ on the marketing site) - no structured & organised way to learn about the core GitLab features in a short time - users aren’t encouraged to perform any actions after signing up - the process for signing up is a pain. Users go through a rollercoaster of shifts in their goodwill to eventually land on a welcome page (or even just the billing page in case of free trial sign up) - email confirmation in the sign up form - CAPTCHA - email confirmation (almost there) - trial sign up asks for things we already asked for + additional info, it’s split into two pages (the second step seems unnecessary) - After sign up, we send them to the User profile > billing page - Users receive an email from sales, thanking for the purchase (free trial). This could be confusing and should probably be handled differently. - Users don’t receive a welcome email that would also provide links to educational content, showcase our features, encourage further actions from the user - not welcoming, no personalization *Questions* - What happens before users sign up? What pages do they view? What convinces them to sign up? Could their motivation for signing up affect the onboarding later on? - How many users drop out of the sign up process? - What are the magic moments for our user personas? How can we recognise & match users to these personas in the onboarding and adapt it so that we get them to the ‘a-ha’ asap? **Future onboarding user journey** ![7ed8fbe9-04a2-4856-a4b1-0df76ded4dd6](/uploads/8bfea91c691b1d887b9c4d12caaacc21/7ed8fbe9-04a2-4856-a4b1-0df76ded4dd6.png) *Comment: In 39 actions (almost equal to the 'current onboarding journey') users sign up for the free trial, find out how issues work and create a new label and add it to an issue (through guided onboarding).* [User journey in Mural](https://app.mural.co/t/gitlab6108/m/gitlab6108/1551951002281/f6adee31a36e074947dfe981fda1290d5457dace) *Goals of the redesign* OKRs: *Improve the onboarding experience for new GitLab users by decreasing sign-up time to 1 minute or less.* Document the existing user journey in video, propose a new sign-up flow, test it with users, iterate based on feedback, and implement the new workflow. *Provide a guided onboarding experience that helps new users become productive in GitLab more quickly.* 80% of new users should start guided onboarding, and 80% of those who start should finish. Create a user journey of current experiences and pain points, propose and test a guided first-time experience, iterate based on feedback, and implement an MVC solution. - design an onboarding for the first 30 mins, focus on users goodwill (reduce choices) and make them create/do something meaningful (improve acquisition, activation and retention) - improve the sign up process (improve acquisition) - Familiarise users with core features in < 10 mins (improve activation) - Projects, groups - Issues, labels + boards - Milestones - Repository + MRs - Setting up profile + status - Epics - increase the perceived quality of GitLab as a product and consequently the desirability of it: a-ha moment (improve activation, retention, referral) <img src="/uploads/63c0b82a2fb3039c7501dc84352ca356/image.png" width="500" /> *Challenges* - keeping the onboarding up to date - onboarding training needs to persist even if the user opens a link in a new tab ### Solution 1. [User flow](https://gitlab.com/gitlab-org/gitlab-ce/issues/55523#user-flow) 1. [Add 'Learn GitLab' to help menu](https://gitlab.com/gitlab-org/gitlab-ce/issues/55523#add-learn-gitlab-to-the-help-menu) 1. [Main 'Learn GitLab' helper interactions](https://gitlab.com/gitlab-org/gitlab-ce/issues/55523#the-main-learn-gitlab-helper-interactions) 1. [Exit 'Learn GitLab' interactions](https://gitlab.com/gitlab-org/gitlab-ce/issues/55523#exit-interaction) #### User flow [Prototype of the flow](https://sketch.cloud/s/boO9j/3OAm1bw/play) The popovers should animate in with a slight delay after the page loads. I'd suggest we start with a 1 second delay and an animation [similar to this](http://animista.net/play/entrances/slide-in-fwd/slide-in-fwd-bottom). Task progress: - Part 1/3: - Project overview `8% complete` - Repository overview `16% complete` - Commits `24% complete` - Commit details `32% complete` - Branches overview `40% complete` - Compare `48% complete` - Issues (list) `56% complete` - Issues filtered by ~"Accepting merge requests" (list) `64% complete` - Issue page `72% complete` - MRs overview `80% complete` - MR details `88% complete` - CI/CD `96% complete` - Pipeline details `100% complete` - Part 2/3 - 'New...' menu dropdown - Create a project `50% complete` - Project overview `100% complete` - Part 3/3 - Settings `33% complete` - Members `66% complete` - New members added `100% complete` User avatar: | No avatar | Gravatar | User-set avatar | |-----------|----------|-----------------| | ![image](/uploads/aa3bba720d13c18f66cf7a0f93f14b29/image.png) | ![image](/uploads/8f2fa17fa2224be3535c6706f811efcb/image.png) | ![image](/uploads/f374c5b379365b1d65b57ab827856537/image.png) | #### Add 'Learn GitLab' to the help menu <img src="/uploads/514e535276fca1f2d820015f179b65da/image.png" width="500" /> If the tour is started by going to 'Learn GitLab' in the help menu, the welcome text changes to 'Welcome to Learn GitLab' <img src="/uploads/0213c2e9941af5913a1ae9ac6d79adca/image.png" width="500" /> #### The main 'Learn GitLab' helper interactions [Learn GitLab helper specs + annotations](https://gitlab-org.gitlab.io/gitlab-design/hosted/matej/ce%2355523-design-an-improved-onboarding-experience-for-a-new-user-spec-previews/) ![image](/uploads/3fda501c9d48316826f7bf7ceea4b68c/image.png) The positioning of the helper: In the prototype, the position of the helper varies sometimes. That seems like a bug in Sketch. The positioning of the helper should be consistent. ![Artboard](/uploads/8a4bcc04ba2170fde6ecfeecdfcd6c45/Artboard.jpg) #### Exit interaction Ideally, we should gather feedback from users that go through the onboarding journey (as illustrated in 'With feedback'). If that's not possible for the MVC we can skip it ('Without feedback') ![image](/uploads/558c1239c89f06e97800ced7000d1334/image.png)
issue