Many web apps annoy you by making you re-enter your email and password when signing up. Some also make you stop what you are doing to click a link in a test email to verify the address works. How often have you given up at that point, or gotten distracted before getting around to finishing the sign-up flow and never ended up using a product?

Services like confirmation steps because they increase accuracy of user profile data, but they are a real drag on converting users into paying customers. Are we stuck with clunky sign-up flows, or is there a better way?

Step 1: Keep it simple, silly

Over the four years, I have been at Lucid Software, we have experimented with dozens of ways to register users. I want to share a recent win that minimizes the barrier to entry without sacrificing much accuracy of user data: real-time email validation.

Years of running A/B tests at Lucid show significant drop-offs in conversions when we required users to re-type their emails or passwords to make sure they typed them correctly. The same goes for requiring users to click on a link sent to their email before using the product. So, at Lucid we now KISS the sign-up form to three simple fields:

We go further in one flow even and only require the email address, then gather other profile fields after the user spends a few minutes in the product. A/B testing these simplifications shows significant increases in conversions - both from visits to registrations, as well as from registrations to payments.

Step 2: Validate emails in real time

While registrations and payments went up in our A/B tests, about 3% of users then registered with email addresses that bounced. We researched what was happening and found predictable misspellings like the following:

Side note: To see fun marketing hacks, go check out where some of those domains land you.

These users did not get our follow-up emails, could not receive shared documents, and could not log in to their accounts later unless they repeated the typo or contacted customer support. Few ever stuck with Lucid or paid for the premium service.

To solve this, our chief architect pointed us to an interesting SMTP trick that lets someone tell if an email address is an actual inbox without having to ever send an email or make someone click on a link. The SMTP protocol actually gives back a different status (“250 OK” or “550 does not exist”) when you tell it the recipient address - based on the validity of that address. Rather than continuing to send an email you can tell the server “QUIT” and you have validated an email address.

Tutorial on how to try this out here.

Many people warn this is fraught with peril so we use a third-party service that does this type of analysis for us, and also provides other interesting data about an email address like if it is a catch-all address. There are lots of providers out there including kickbox.io, mailboxlayer.com, briteverify.com, and mailgun.com. We ended up using a combination of Kickbox and Mailboxlayer (sometimes we double check an address with a second service).

Step 3: Measure results

Now when a user types their email in our registration form, we make an AJAX request to validate it and warn the user if they have misspelled it.

We released this as an A/B test of our new registration dialog. 97% of users saw no difference in behavior, but for the 3% of users who entered an invalid email, half saw a warning and half did not. Here are the results of the test for those 3% of users.

We saw a 9% drop in registrations from the control group (A), but 54% of the users who saw the warning (B) successfully corrected their email before registering.

This was not a surprise. We hypothesized that the cost of a small registration drop could be outweighed by gathering correct email addresses for a majority of these users. That proved accurate, as we saw 34% more of this group successfully returning and using the product again within a few week period and 44% more paying in that time frame.

Conclusion and next steps

We found that the simple registration form with invisible real-time email validation gave a significant revenue lift. The email validation itself took one engineer just a few days to implement. Currently, 97% of users still have a minimal barrier to sign up, only about 1% of users enter an invalid email for their trial, more users stick with Lucid, and nobody has to re-type addresses or interrupt their flow to wait for an emailed link.

Future Work

We tried three different warning messages. Perhaps unsurprisingly, the shortest one won (shown above). We would like to experiment with even more messaging ideas.

Also, the email validation service is slow, taking about two seconds on average from the browser’s perspective. We added optimizations such as firing the request to validate the email when the text box lost focus, as opposed to waiting until the user clicks "Register." That involves heuristics to deal with the race condition between receiving the validation response and the user clicking register. We plan to test various thresholds for timeouts, delays, and caching of responses to see if we can further increase conversions.