More Accurate Acquisition Funnels with Mixpanel

I’m a big fan of Mixpanel for analytics. I’ve written about how I do A/B tests in Mixpanel, but over the past week I learned some really important things that I’d like to pass on.

Imagine a typical registration process from a homepage. The person visits your homepage, decides that they are interested, and creates an account. Clearly this signup flow can easily be tracked in Mixpanel. It might look something like this.


What’s the conversion rate on this funnel above? Here’s where things get interesting….

Returning Users

Typically if a user is authenticated, they are sent straight to the application dashboard. That’s great, but what happens if a user isn’t authenticated and decides to visit the homepage?

They would be tracked in this funnel.

If a visitor hits the homepage for the first time, Mixpanel sets a cookie on them, which tracks future actions and knows who exactly triggered a specific event. The “Viewed Homepage” event isn’t smart enough to track returning users from new users, which is why we need to instrument this.

How to Create Better Acquisition Funnels

The easiest way I’ve found to fix this takes a little work, but it’s not too bad. It does require a bit of thought around what events to track though. In short, you need something set on the user when they create an account. I’ve quickly included some code below to show the “signup funnel.”

//Homepage mixpanel.track("Viewed Homepage"); //Registration Page mixpanel.track("Viewed Registration"); //Visitor Fills out information and hits "create account" mixpanel.track_forms("#id-of-button", "Account Created");

Now how do can we filter out new visitors from past visitors on that first “Viewed” Homepage event? For example, if someone makes it through the signup process, and then hits the app dashboard, we could set information on the user….something like this. This could be account_type, user_created, really anything that shows that someone made it through the signup flow before.

mixpanel.register({ account_type: "$whatever" });

Then, in our funnel, we would want to filter by people where account_type is not set. Mixpanel allows you to do this easily :

You should now be able to more accurately track how new users interact with your signup flows, especially how they respond to your homepage. I hope this helps, and if you have a better way, feel free to let me know in the comments.