Mixpanel - Analytics for startups

real-time analytics, metrics, optimization, and data analysis 

Maintenance issues and an explanation

Update: ETA is within the next day or day and a half to be fully caught up.

Update (Feb 4th, 2:50 AM): Seeing good stability across new infrastructure and we're crunching data a lot faster.

Update (Feb 4th, 7:35 PM): Processing through the backlog of data. It's about 1 day backed up however you should see data before Feb 3rd 17:00:00 UTC at least.

Update (Feb 6th, 11:56 PM): We are now back to real-time and all systems are stable.

For the past few days many of our customers must be wondering what's been going on with Mixpanel and why they have been seeing a lot of red percentages and zeroes. The truth is a combination of factors stemming from simply trying to scale to the large volume data that we process in real-time--it's never been easy and at each step we have to get innovative and diagnose problems. The good news is, we've been getting better at this as time goes.

We diagnosed our problems about 1.5 months and had a plan of action to scale parts our system out again in the smoothest way possible. The goal was not to just scale out the system and augment performance by a huge order of magnitude but it was to do so in a manner in which our customers wouldn't even notice. We certainly failed at the latter goal. The problem was that we were forced to roll out the new system sooner than expected to handle scale which didn't provide enough time to thoroughly vet some of the systems and issues we have been able to work through under less stress. 

If we've lost you as a customer or you're uneasy with doing your analytics with us I would ask that you reconsider. When things like this happen you can be sure we're absolutely getting the least amount of sleep physically (sometimes none) possible till we fix the problems that hurt our reputation as a company. Also, we've reached a huge milestone with the new infrastructure we've rolled out to the point where we can focus on creating a reliable service capable of handling an extremely large data volume in real-time. In our opinion, things will only get better at this point and we're the kind of startup that tends to rise to the challenge no matter what.

If we've learned anything from this process we learned to be much more proactive and providing lots of status updates about what's going on since we know you rely on us for your business day to day. We're sorry for not doing that better. If there's anything else you wish to add, please leave us a comment or email us at support@mixpanel.com.

To address any of your concerns right away:

  1. There was no data loss.
  2. We're working through a backlog of data that could take an additional 1-1.5 days before we get to-the-second real-time again.
  3. Retention tables/charts have been reset--this was a planned side effect not a result from problems we've been having.
  4. You should see new data in your report pages being crunched over the past days or hours that have been missing constantly.

We sincerely apologize for the problems we've had over the past days and we'll be working on ways to prevent things like that from happening again.

 

Loading mentions Retweet
Posted by Suhail Doshi 

Comments [10]

Mistake in "unique" visitor traffic for Jan 30th

Due to an edge case programming error you may notice your unique visitor traffic is spiking if you do a high data volume with us. We regret to say that we made a mistake and you should ignore it. Please note this pertains to only the average and unique visitor traffic for events and properties not funnels or retention.

Rest assured we fixed the problem and looked for additional places where the same bug could also be. Taking how we run things here one step further, at Mixpanel we heavily are now using unit tests to make sure data is precisely 100% accurate all the time. Any change made that could effect how your data is computed and analyzed will be run against our unit tests to ensure we are always accurate.

As a startup we'll make mistakes but we're working towards increased stability both in our software and infrastructure. Things will only get better from this point forward.

If you have a question, please email us at support@mixpanel.com and we'll happily answer.

Loading mentions Retweet
Posted by Suhail Doshi 

Comments [0]

How to Analyze Traffic Funnels and Retention in Facebook Applications

In several months, Facebook’s event, f8, is going to launch its third hackathon. Every year I like to take a step back and ask, “what did I learn?” With Mixpanel, we have the opportunity to work with lots of companies and developers, helping them really understand what their analytics mean with regard to their applications. I am going to go over some of the general things that I think all developers can benefit from:

Visitor retention

Also called “cohort analysis,” understanding visitor retention is probably the most underrated yet most important metric all Facebook developers should be looking at. Visitor retention helps you understand how “sticky” your application is by being able to tell you the percent of users that came back to your application 1-6 weeks later.

In the early days of Facebook’s platform, lots of the applications with the highest amount of installs have now failed because their retention was extremely low. The only way to increase this is by giving really good reasons to users to come back again and use your application. Sadly, applications like Hug Me were likely only fun the first few uses.

Max Levchin, CEO of Slide — my former employer — has described what happened with applications early on as large hollow spheres where recently acquired “users” made up the outside. This was in part due the sheer number of users inviting each other and accepting invites/notifications. The ideal app is a sphere filled with users acquired previously as well–meaning returning users combined with new users which make up the outside.

This breaks down as follows:

< 20% (week over week) is poor and needs serious improvement.
< 35% (week over week) is pretty good > 45-65% (week over week) is excellent and ideal.

The reason games on Facebook really took off was large in part due to great retention in comparison to competing top applications. Games provided really great game mechanics and incentives to come back. The concept of “farming,” for example, has lots of replay value.

With retention, we generally see that really good applications have fairly consistent week over week retention. This means even 3 or 4 weeks later the retention is roughly the same as the number of users who came back just 1 week later.

Funnel Analysis

Even if you have great retention, if your users don’t convert well, it’s going to be tough to grow. Funnel Analysis will tell you what percent of users go from step 1 to step 2 to step 3 (so on and so forth).

Most games have a similar funnels. For example, Playfish’s new game,Gangster City, currently has the following funnel:

1. Intro video with a story
2. Daily Bonus (Earned $100!) telling you to play everyday for more
3. Chapter 1 introduction
4. Big “Click here to get started” call to action on a map with a location.
5. “What’s your name?” input box
6. Pick a mission to do
7. Accept mission
8. Cash earnout / More jobs page
9. Share the mission you won (publisher)
10. If you do another mission (which is what most people will do), you level up.

Difficult spots for most funnels will be between step 1 and 2 and Playfish immediately gives the user $100 the moment you enter the game to convince and incentivize the user to proceed.

It’s really important to make sure your funnel is converting well. Interestingly enough, with most Facebook applications that are games, we generally notice that after step 2, users tend to convert over 90% in subsequent steps (we’ve seen it up to 7+ steps). This is one reason why lots of games have tutorials.

In Gangster City the subsequent steps really just introduce the user to the “farming” mechanic: missions. Since this is fairly mechanical, it’s likely they convert at the 90%+ rate most game flows do convert at.

Lots of games right now use the funnel to help track how much their users are spending money in games, what that conversion rate is, and then use that information to figure out how much they can spend on ads to funnel in more users. This isn’t easy to calculate — most hardcore metrics types will talk about the lifetime value of a user and how invites and notifications can discount the price it takes to purchase a user.

Good applications on Facebook should see funnel completion conversion rates above 65% even if those games make users purchase items and invite friends as part of the flow.

For more information about funnel analysis, check out our “Introduction to Funnel Analysis.”

Conclusion

Products that have really great retention have the best chance at success. It’s usually much easier to adjust, experiment, and play with your funnel to optimize your conversion. A product that has very bad retention in the long-term will most definitely fail. Now, extreme viral growth seems less important in the beginning on Facebook because of the hooks it provides to gain distribution. You don’t want to waste time growing a huge application (like in the early days) and find out a year later that it is failing due to low retention.

The best way towards building a long-term sustainable product from companies I’ve seen is to first focus on achieving a decent portion of users (10k-50k). Second, focus on figuring out how to achieve high retention. Lastly, optimizing your funnel while focusing on viral mechanics for growth.

Loading mentions Retweet
Filed under  //   analytics   facebook   funnels   metrics   retention  
Posted by Suhail Doshi 

Comments [0]

Releasing Mixpanel Tests, a new way to A/B test your events

We've been working hard at Mixpanel over the past couple of months, bringing you a major redesign, improving some features, and now adding a new way for you to interact with your data.  We're excited to release Tests, which has quickly become one of our favorite features.

Overview

To give you a brief overview/reminder: Mixpanel tracks on-page events, (such as 'play song' or 'poke') with which you can include properties that describe the event and/or user, such as gender, site version, or -- get this -- the test group the user is in.

The value of Tests 

Tests allows you to track these properties across all of your events.  For example, if you're tracking user gender for each event, you'll be able to easily discover which events are done more often by men vs women.

You'll also be able to make a single change, such as changing the background color of your site, and see how it affects everything that you are tracking.  If you had a large ecommerce site, such as Etsy, you would be able to test a background color change against things like purchasing, registration, and viewing items.

This sort of analysis was previously very difficult to do -- you had to look at each event individually, compile the data, and then do your own comparison. With Mixpanel and Tests, you just click on the property name and you'll see all your data.

The best thing about Tests, though, is the way it makes your team think about the data that they are seeing.  When you see data in graphical form, it's easy to tell yourself "Okay, cool, it's trending upward" and move on, but we've seen Tests be much more thought-provoking.  Our Tests beta users have found that they are doing much deeper analysis and thinking more critically about what they are seeing, which is an outstanding result.

Introduction to Tests

For this walkthrough, we'll be using the Demo project.  If you want to see it for yourself, you can access it here. To give you a little more context, the Demo project contains statistics for a Facebook cooking game.

The first thing you see when you click on the Tests tab is a search box and some suggested properties.  This is where you choose the property you would like to test across all events.


We're interested in the 'type' property, because it's used on many events.  We can either click on it in the suggested events table, or type it into the search box.  This will take us to the results page.  (Tip: Click on the screenshot below to view it bigger)


We're going to be calling the different values for each property 'segments'. On the results page, segments are grouped first by event and then by analysis type.  So, each event has an 'Average events per unique visitor' column, a 'Unique visitors' column, and a 'Total events' column.

As you can see in the screenshot, we're tracking an event called upgrade, which contains the type property.  An interesting result for this event (which we can see in the screenshot) is that the average visitor upgrades the energy segment 4.75 times per week, compared to 2.70 times for the next closest competitor, health.  (Tip: when you mouse over a segment, you'll see a tooltip giving you the popularity ratio.  You'll also see the same segment highlighted across Average, Unique, and Total, which makes it much easier to compare things.)  For example, we can see from the tooltip that health receives exactly 43.2% less attention than energy

The fact that a single upgrade type is receiving a disproportionate amount of use may be a sign that the game needs some work to balance things out.  If we weren't tracking upgrades like this, we would never learn about the problem.

Getting started

If you like what you see, it's really simple to get started using Mixpanel.  It only takes a minute or two to sign up and create a project.

Sign up: http://mixpanel.com/user/register/ 

Once you've done that, sending your first event only takes a single line of code.

Integration walkthrough: http://mixpanel.com/api/docs/walkthrough/

After you've been sending data for a while you should be able to gather some very interesting insights from Tests.

Want to build awesome stuff like this? Mixpanel is hiring: http://mixpanel.com/jobs

Loading mentions Retweet
Filed under  //   a/b testing   optimization   Tests  
Posted by Tim Trefren 

Comments [1]

Backtype does split testing with Mixpanel

The guys over at Backtype wrote a post about their adventures in split testing. Check it out:

http://tech.backtype.com/split-testing-with-mixpanel

Loading mentions Retweet
Posted by Suhail Doshi 

Comments [0]

Javascript Library updated, mpmetrics.js is now deprecated

We would like to inform everyone that we've updated our Javascript client library in favor of a new architectural design that became more necessary. The primary change is that we need to change the way developers use the actual mpmetrics object, many customers of ours also use widgets provided by companies like Uservoice.com and because of the current implementation and due to the fact that Uservoice is a customer of ours, the mpmetrics object gets overriden and cuts off your metrics.

The change is simple, we now require developers to instantiate a brand-new object called MixpanelLib which you can set to a variable called mpmetrics:

<script type="text/javascript">
try { var mpmetrics = new MixpanelLib("YOUR_TOKEN"); } catch(err) {}
</script>

You can download or source the new Javascript library at: http://api.mixpanel.com/site_media/js/api/mixpanel.js

That's it, really simple. You can continue to call mpmetrics like you always have. We're working with Uservoice to rename their variable mpmetrics to something else so it does not conflict. This allows you to continue to inline our javascript without overriding some one elses mpmetrics object and in the future allows you to use multiple projects to log data to much more easily as well.

If you have any questions or concerns, please email us at support@mixpanel.com.

Loading mentions Retweet
Posted by Suhail Doshi 

Comments [2]

A/B Testing to increase user engagement

Here's the idea: sometimes you want to optimize for engagement, rather than something more concrete like revenue or conversion rate.  Measuring engagement is a trickier task, (one you should use Mixpanel for), but that just makes it more interesting.

Let's use Posterous (the service that hosts this blog) as an example startup that might want to optimize for engagement.  Perhaps they want to increase the number of comments received on blog posts, so they drum up an A/B test between their current layout (the control group) and one with a greater emphasis on commenting.

Once it's been running for a while we can start to analyze our hypothetical A/B test.  We can approach it in a few ways: 

  1. Average actions per user
  2. Ratio of active to inactive users
  3. User activity distribution
Comparing average actions per user

The first and most naive approach is to simply compare the average number of actions per user from each group in your A/B test.  This is really simple to do, and it looks something like this:

Hypothetical Posterous A/B Test: Average comments per visitor

Group

Visitors

Comments

Average

Control

334690

7459

0.0222

Experimental

322784

9567

0.0296

If we use this metric, we see that the experimental design is clearly winning, with approximately 30% (0.0296/0.0222) more comments per user.  The trouble with this technique, though, is that we don't know anything about the distribution of users who commented.  For all we know, all of the comments in the experimental group could have been posted by a single user - and that wouldn't be optimal.  This is an obvious exaggeration, but it leads nicely to our next option:

Comparing active user ratios

We can avoid the issues with the previous method by ignoring the actual number of comments and just looking at our visitors.  We classify each visitor as Active or Inactive - those who post at least one comment and those who don't.  This lets us ignore any outliers, such as a visitor who posts a thousand times. Now our table looks like this:

Hypothetical Posterous A/B Test: Active visitor ratio

Group

Unique visitors   

Active visitors

     Ratio

Control

334690

4533

     0.0135

Experimental

322784

3357

     0.0104

When we look at the proportion of visitors who posted at least one comment, we can see that the control group is beating the experimental group by around 30% - the complete reverse of our last conclusion.  

It's interesting that the two metrics we've used so far to measure user engagement can give entirely different results - it shows that we really need to look at the underlying distribution.

User activity distribution

The most likely outcome of an A/B test like this is a couple of differently shaped distributions.  They will still be quite similar, and in all likelihood will be power-law shaped (as the vast majority of visitors don't post at all).  So, without further ado, here are our distributions:

This graph may be a bit difficult to interpret. It shows the frequency of visitors with different comment counts - for example, there might be 1,000 visitors who left 2 comments, 345 who left 3 comments, and so on.  This means that a point (X, Y) on the curve tells you that there were Y visitors who left X comments.  Because this is just an example, the specific numbers don't really matter.  The most important part is the overall shape of the curve.

We can see that most users don't comment at all, and that there are very different behaviors between groups.  The control group (green line) has more users that write a small number of comments each, while the experimental group (red line) has fewer active users who comment frequently.

The question becomes 'do you want a smaller, highly engaged community, or a larger, less engaged community?' There's no easy answer here; it's more of a think-long-and-hard sort of situation that greatly depends on individual aspects of your startup.

Ultimately, the distribution method is the most powerful, but it's also the most difficult to implement and analyze - especially since your results will likely be less clear-cut than the contrived examples I've given here.  If anyone has some hard data, I'd love to hear about it - it would be great to have a case study.  Please email me at tim@mixpanel.com if you're interested in sharing.

-----
This post is based off of a conversation I had with Jesse Farmer a few weeks ago.  If you haven't read his blog, you should - there are some real gems.

 

 

Loading mentions Retweet
Posted by Tim Trefren 

Comments [3]

A/B testing to increase your conversions the Eric Ries way

There are a lot of articles on the internet related on how to A/B test and there are numerous open source tools that are available to do it but nobody does a great job doing macro level A/B testing which we think is extremely important.

I personally learned about this idea from Eric Ries when he talked about a case where IMVU A/B tested the text of something only to find it was able to increase the conversions of something like revenue and they had no idea it had this effect on their users. It goes to show that an A/B test may increase conversions of something desirable but adversely effect something else or do completely the opposite of that scenario which would be profound.

When we designed Mixpanel, we thought about this idea and made sure it would be feasible to do this in the future so I'd like to show you how we're able to do this for you today, you can literally create an account and try it yourself or follow along in some manner. We think being able to do these macro level A/B tests really differentiates ourself from current tools available today.

Basic understanding

With Mixpanel, you're always logging events with a track() function:

mpmetrics.track("played a song", {"genre" : "hip-hop"});
mpmetrics.track("added to playlist", {"genre" : "pop"});

By Mixpanel standards, this is pretty basic API usage, this lets our customers track when a user plays a song or adds a song to their playlist but we take it one step further by letting them segment those events by the genre of that song which has its own merits in terms analysis.

Regardless, understanding properties ({"genre" : "pop"}) is the cornerstone in your understanding in how we can macro-level A/B test. These are user-defined and you can add more than one.

Creating the test

Any A/B testing article will generally explain that you can split users using the modulo operator on some user id:



function pick_background_color(user_id) {
    var test_id = user_id % 2;

    if (test_id) {
        return "red";
    } else {
        return "blue";
    }
}


This is basic code that chooses the background color to use based on a user_id provided to us so that the user always sees the same background color consistently. You should be able to setup a basic test to do almost anything you want just using the modulo operator and some basic programming logic.

Logging the data

Once you have the test created, what you can then use Mixpanel's properties as a way to log the test data. For example, lets say we have a music site and want to see how a red versus blue background effects our users behavior on the website.

So what we do, when we decide the background color we'll use in the CSS using the pick_background_color() function. In that function, we'll modifiy and add some Mixpanel code:



function pick_background_color(user_id) {
    var test_id = user_id % 2;

    if (test_id) {
        var color = "red";
    } else {
        var color = "blue";
    }

    mpmetrics.register({"test-background" : color});

    return color;
}


What mpmetrics.register does is it binds that property to every event along with any other events also bound to that event. This allows us to see how a red vs. blue split in background color effect every event on our music site. So we'll be able to see whether a blue or red background increases overall engagement: songs being played and songs added to a playlist (or all the other events being logged).

That's all it takes extra: mpmetrics.register();

On our reports, you can click on the "View" button and then click properties to get to your "test-background" property to see its effect and the split of red vs blue for that specific event.

Wrap up

It's not enough to just test whether a blue background color increases song plays, you might find it decreases songs being added to playlists--this is important to know because you may reconsider your product decisions if you're a site like Muxtape who thrived off users creating new playlists that would be shared around increasing their overall traffic.

Imagine if these metrics were related to your bottom line, you better know how certain things effect everything else otherwise your product could be headed down an unexpected and undesirable path.

 

Loading mentions Retweet
Posted by Suhail Doshi 

Comments [1]

Funnel analysis with Mixpanel

I was looking over the blog the other day and I noticed that though I wrote an Introduction to Funnel Analysis and a guide to implementing the funnel I forgot to do a blog post.  So, here it is!

A brief introduction

Funnel analysis is a way to measure how users go through a specific set of actions on your webpage.  Anywhere you need to get conversions, like a signup or purchase, can benefit from this kind of analysis.

An example funnel would be a signup process for new users, which could look something like:
front page -> signup impression -> signup -> confirmation

Users would drop off at each of those steps.  The goal of measuring the funnel is to minimize this dropoff rate.

Tracking funnel steps

One really cool thing that Mixpanel can do is track events as funnel steps instead of relying purely on pageviews.  

This means, for example, that you can figure out exactly what percent of people add an item to their cart - which is an action that doesn't change the page but is crucial to the checkout process.  It's also a major dropoff point, so you definitely want to be able to track it in your funnel.

Once you've figured out the steps of your funnel it's really easy to integrate. After integration, we get to the fun stuff - the report.

Viewing the funnel

Here's what a funnel report looks like (with a few notes):

So, with this display you learn:
  • Number of unique visitors at each step
  • Conversion rate between steps
  • Overall funnel conversion rate

Which are all amazingly useful things to know.

But wait - there's more!

We actually take this a step further - the same concept of properties, when applied to funnels, allows you to store any extra data you know about that step of the funnel and see how it effects user behavior.

You can track things like:
  • referrer
  • ad campaign
  • search string
  • anything you think would effect conversion rates

Here they are tracking what country users are coming from. You can see that each country has a different conversion rate: 


We can see that visitors from the US convert the best between these two steps. This is interesting, but the real question is how it effects the total conversion rate for the funnel.  We can see that too:


It's interesting to note that the conversion rate at the first step didn't match the overall outcome - Australia actually converted the best, rather than the US. This illustrates why tracking the full length of the funnel is so important.

Being able to track specific things across the full length of the funnel allows for some interesting applications - such as site-wide A/B testing.  You can show different versions of the site to different users and see not only how it effects one level of conversion - clicking a signup button, for example - but how it actually effects the things you really care about which happen later.

Loading mentions Retweet
Posted by Tim Trefren 

Comments [0]

Mixpanel adds custom graphs

Our goal at Mixpanel is to display the data you send us in a way that makes it easy to understand.  This can be a real challenge when you have many different events on the same graph, so we've opted to only show you the most important ones - a maximum of 9 things per graph.

However, this means that your less common events don't show up on overview graphs.  To fix this, we've just introduced an 'Advanced' section at the top of both event and property overview pages.  Here you can select the specific events you would like to compare:

When you hit the 'Compare' button, you'll see graphs for only the selected events, like so:

One more thing I'd like to point out are the explanations we've added to each graph.  If you see a graph or chart that confuses you, mouse over the 'what's this?' link next to the title. 


Loading mentions Retweet
Posted by Tim Trefren 

Comments [0]