A fellow NYC-based entrepreneur, Vin Vacanti of Yipit.com, had asked twitter what others were doing in regards to metrics. The question was whether or not people had advice about using a mixture of Google Analytics, Mix Panel, KISS Metrics or built your own metrics solution. I sent him my response in private, but he suggested I share the info with others here. What follows is an edit of my response to both Vin and Hiten Shah of KISS Metrics.
I LOVE metrics, but I’ve realized while working on my various projects that it’s really easy to get lost in these metrics because there’s just so much to process. Dave McClure’s famous talk on Metrics For Pirates: Acquisition Activation Retention Referral Revenue (AARRR) is a great start for understanding what is best for the various stages.
Marketing Metrics 4 Pirates (July 2010) View more presentations from Dave McClure.
I’m at the early stage of a products life cycle. Specifically I am pre-product/market fit. This means that I have an idea I want to build a product around, but I have yet to validate whether or not my product meets the needs of the market (or any market) I am trying to address.
After doing rounds of Customer Discover & Validation I set out to build a simple product that can help me validate and better illustrate BOTH the problem and solution. Part of this was to lay the foundation of data collection to help dive my decision making process about the product. I learned early on that vanity metrics (unique visits, page views, time on site, etc.) are really just bullshit for a product that hasn’t achieved Product/Market fit. You need to dive down into data that illustrates the behavior of your users.
I’ve specifically been focusing on conversion funnels and cohort analysis.
For conversion funnels I’ve been evaluating Google Analytics, KISS Metrics, and Mix Panel. All of these tools are excellent, but I will say that KISS Metrics has the best visualization and gets you to what matters quickest. Mix Panel is good too, but I specifically like the API as it relates to “events”. Meaning it doesn’t have to rely on page views as Google Analytics does.
For cohort analysis I built a custom system that I’ll describe below. I know Mix Panel does cohort analysis as does RJ Metrics, but I wanted to be able to crunch the data myself for some custom reports that may prove to be useful.
Data I’m Collecting
I shouldn’t really be saying this, but I try to log as much information about a user as possible. I may not use it all, but at least I have it for when it may become useful. I try to not cross the line of creepiness as it relates to privacy, however I do have an idea of how a user came to my site and which features they are engaging with.
When a visitor first visits my site I make note of the channel they traveled to arrive here. If they click on a link from google, blog, email, or twitter I log the referral in the users session. If the user activates and becomes a registered, I log that information with that account. In the future I’m hoping to use this information to identify the channels that perform better as it relates to converting users.
Cohort Analysis
When it comes to the cohort analysis I built a very basic for my project. It’s mostly based off of what I’ve read/heard regarding metrics from Dave McClure, Fred Wilson, Tim Ferriss, Josh Porter, Hiten Shah, David Cancel, Ash Maurya, and a band of others.
At the core of this I track three primary objects: Entities, Actions, and Change Log.
Entities are unique objects that perform actions. Typically these are users. I can imagine they could be anything really, but for consumer web users are what I care about the most.
Actions are specific tasks an entity can perform. For example logging in, posting a comment, inviting a friend to the service, playing a game, etc. I set this up to be pretty amorphous since I knew I would want to focus on the usage of different functionality down the line.
Change Logs are basically annotations I enter into the system to note changes I’ve made to the site. This is so I can view if there’s a change in performance among a cohort or a set of cohorts I can get a quick view into what may have lead to that difference.
Reports are segmented into cohorts and specific action. The reports are generated on a timed interval and I can configure them to organize cohorts by when they are created (weekly, biweekly, monthly divisions). For now I’m focusing on time rather than other attributes (region, age, gender, etc) as I don’t believe I have enough users to really make cohorts based on other data meaningful.
When the reports are generated I break it down into trailing count of distinct actions users took for that period. As the cohorts age I record their historical stats. The results look like following:
Cohort: Weekly
Action: Login
Cohort # (qty) | Week 1 | Week 2 | Week 3 | Week 4 | Week 5 |
Cohort 5 (220) | 26%|
Cohort 4 (190) | 19%| 10%|
Cohort 3 (200) | 15%| 7%| 2%|
Cohort 2 (140) | 10%| 3%| 1%| 0%|
Cohort 1 (100) | 8%| 2%| 0%| 0%| 0%|
I create historical views of previous weeks and calculate the current week on the fly. Once the week is over I will create a static snapshot to save on doing real time calculations.
The reason I set out to do this is that I want to test specific parts of my application. I felt I had a somewhat decent activation rate when I pushed users to my landing page, but I had a very low return rate. Once a user signed up, they would not come back. They were willing to spend the time with what I was offering, but they did not have an interest in repeating their visit on their own.
I already knew there were a lot of things I wasn’t doing to get users to come back. I wanted to test specific things such as sending out weekly summaries of their account via email or notifications, but more specifically I wanted to know the impact of those actions. I also wanted to know if I went from a weekly to a more frequent distribution would it change the repeat visits or provoke users to unsubscribe.
Right now I’m focusing on repeat logins, however I know once I see that improving I’ll want to determine how to increase referrals from within the application as well as content creation. That’s why I set up actions to be generic.
To create new entities and record actions I use a simple REST service. It can be called by javascript or server side scripting. The reporting is pretty barebones right now. I print out a very simple text based output of the data that I have as part of my application “dashboard”. I’ve integrated with Google Charts too, but only to show the graph of cohorts overlaid on top of each other. Most of the time I’ll just export data to excel from mysql if I want more detailed visualization, but largely I want to see the % increase. I haven’t spent too much time making it more robust as I want to focus on the product I’m building to test out my ideas on growth.
MUST READ
http://500hats.typepad.com/500blogs/2007/09/startup-metrics.html
http://andrewchenblog.com/2008/09/08/how-to-measure-if-users-love-your-product-using-cohorts-and-revisit-rates/
http://www.avc.com/a_vc/2009/10/the-cohort-analysis.html
http://www.pearanalytics.com/blog/2010/understanding-metrics-that-matter-interview-with-hiten-shah/
http://www.ashmaurya.com/2009/11/how-i-am-measuring-productmarket-fit/
http://52weeksofux.com/post/646711369/cohort-analysis-measuring-engagement-over-time







