This page may be out of date. Submit any pending changes before refreshing this page.
Hide this message.

Iterating on the sign-up flow

Christina NgChristina Ng, Growth @
13 upvotes by Quora User, Quora User, Stan Hanks, James Santilli, Benedict Chan, (more)
Figures and company name in this post has been edited due to the sensitivity of information presented.

One of the first few things we iterated on when we started working on growth was the sign-up flow. Prior to this, users would have to go to our website to download our software, run it, create a new account, log in, then get to use it. That is assuming that users haven't dropped off by then. If users did drop off, there was no way for us to know, or to contact them to figure out why. We didn't know our conversion ratios, and we couldn't figure out if the people downloading our software were new users or existing users.

Back to the fundamentals

We started to re-strategize on how we could optimize our signup flow, channelling our new signups through a funnel to ensure that they end up as successful users.

In Thinking about Growth, I wrote that our definition of a successful initial user was one 
  • who signed up
  • had at least X contacts
  • used the product at least Y times within the first Z hours

Learning from competitor's signup flow

We studied the signup flow of competing and complementary products. We mimicked Hall's simple and clean signup flow, as well as LinkedIn's email designs.

Taking a leaf out of their book, we experimented with a completely new sign up flow from our previous design. Instead of a download first, we now require a signup first. The signup itself was broken into two parts - email verification, as well as account creation leading to a client download at the last step.

1. Collecting emails on home page for organic signups
In order to sign up, users had to enter their email address on our homepage and click on the "Free Sign Up" button. (Yes, Green supposedly converts best, according to 5 Learning Points from Udemy's Growth Hacking course).
After which, they would have to check their email inbox for the email verification/ complete signup link. If that yellow box looks familiar to you, that's because we were inspired by (ripped off) LinkedIn's email invite design.

Collecting emails at the start was useful for us, because we now had a means of contacting users who intended to sign up but never completed the process. Some email exchanges with these users highlighted a pertinent issue - many users claimed that they did not receive the activation email. This could be due to many reasons: corporate email servers rejecting our emails, the activation email ending up in junk mail, etc... That being said, the conversion rate for new users who entered their email address (starting the signup process) to those who clicked on the "complete signup" button was about 90%.

Bypassing email verification for signup via invitation
Another starting point for the signup process was via accepting an email invitation from an existing user.
Yes, all our emails use the same big yellow button as LinkedIn as the call to action button ;)

Accepting the invitation was equivalent to completing the signup/ verifying their email address. Hence, users will not need to re-enter their email address to sign up for a new account.

2. Creating the account
Since we use a standard email address as login username, it is pre-filled for the user who continues the signup process after email verification. The signup form is minimalistic, requiring the bare minimum details to proceed. Less than 2% of users drop off at this stage.

3. Email import
Once the user profile has been completed, the user account is created. Recalling our definition of a successful user, once the user has signed up, we needed to make sure that he had at least X contacts. We decided to implement an email import feature to encourage that behavior.

If the user is detected to be using either gmail, yahoo or live mail, they will automatically be prompted to "find friends" who are already using our product by importing their address book.

We experimented a lot with various import designs. At one point, we were highly aggressive by making email import compulsory (clicking the "No Thanks" link will show you a nice little dialogue box which tells you that you cannot proceed without importing). As you might have guessed, we have since relaxed the restriction to make email import voluntary, though the user is highly encouraged to import.

Today, about 65% of our new signups would be prompted to import their address book. However, only 1/2 of them will voluntarily do so.

4. Friend recommendations
Once the user has imported his address book, we generate a list of their contacts starting with the ones whom they most frequently contact. Contacts who were existing users will have an "Add" button next to them, while contacts who have never signed up for our product will have an "Invite" button next to them. We had plans to separate this into two steps (perhaps automatically add all contacts who are existing users, and having the option to invite new contacts who are non-existing users), but we never got around to doing it before we switched focus.

Contacts who are added or invited will appear in the interactive contact list on the right. This applies also for non-existing users who will appear offline in the address book until they have signed up for an account.

Another way to get to this page was if the system had existing friend recommendations for the user who signed up. This could be via existing invitations sent to their new user which had not been accepted, or via recognizing other existing users who had signed up with the same corporate domain.

Notice the "Invite All" button. For about 2 weeks, this was the bane of our (my) existence. We saw that invite send rates went through the roof (to be expected since the 'invite all' button makes it easier for users to invite their entire address book, however, invite acceptance rate also plummeted proportionally way more than it should. After some investigation, we realized that our mails were being flagged as spam by some mail providers. It was so bad that it affected all our mail services, eg. email verification, password reset, etc. We eventually decided to remove the invite all button as a temporary measure while we addressed the mail delivery issues. We never got around to fully addressing the problems, so the button is still missing today :P

About 65% of users who chose to import (~20% of new signups) followed through with it and were shown the friend recommendation page. The remaining 35% ended up denying permission at the mail provider page. Additionally, another 20% of new signups were also shown the friend recommendation page despite not having imported their email contacts. In total, 40% of new signups were shown friend recommendations, in which 70% of them would add/ invite someone from this page.

5. Manual invite
For the users who denied import, did not have any contacts to import, or did not select any contact to add/ invite, they will be redirected to a manual invite page. Here, the design is similar to the HipChat invite page, where users are encouraged to invite their teammate "". They are also given another opportunity to import their email contacts if they did not do so.

Here, we enforce that the user have at least 1 contact in his address book before they can proceed (either adding an existing user or inviting a non-existing user). We played around with this number quite a bit. Even though our definition of successful user required at least X teammates in his contact list, we eventually stuck to only 1 contact.

Our attrition rate at this page is 20%.

6. Download page
The final step of the sign up flow was download and install. The browser would automatically detect the operating system of the computer and download the respective versions.

In total about 70% of new signups (post email-verification) eventually end up at the download page. The signup to login attrition is negligible. Of these users who did log in, 60% of them will end up making/ receiving at least 1 call within the first 24 hours (successful initial user).

As can be seen from this post, the sign up flow was still very much a work in progress. We had many changes which were still in the pipeline but eventually were de-prioritized when our focus shifted. Through this redesign process, we learnt a lot about using email import as a growth vector to make it easier for more users to invite their contacts. We also learnt that being aggressive in getting our users to a successful state could annoy users in the short run, but it was eventually better for them in the long run since they'd now have people they can call in their address book. This helps them get to the 'Aha' moment sooner. Most importantly, we learnt that sometimes, results are better by learning/copying from the optimized flows of other similar products rather than reinventing the wheel.

I'll write more about our invite and import feature iteration process in another post :)


I'm hoping to use this space to jot down learni...


Christina Ng
Christina Ng
Growth @