Learning More about your Users with Intercom

One mistake I made when I first launched my side-project, Kobra, was that I didn’t really know who my users were. After “abandoning” the project for several months, I was surprised to see that only a handful of people were using the tool.

If I made “such a good product,” why weren’t people using it? After all, over 2000 people signed up to be notified for it’s launch.

The truth of the matter is, there is a way to avoid this problem entirely. The solution? Knowing more about your users. If there is one thing I would go back and change about launching my product, it would be to track user activity from the get-go.

Not only will this allow you to figure out how people are actually using your product, but it will also allow you to structure your pricing plans better.

What kind of statistics do I want?

You’ve probably already put Google Analytics in your app. Good, that will help you track traffic. But GA is really not that good at helping you determine WHO your users are, or HOW they are using your app. So frankly, it’s really not that good at much.


So before I advise a solution, let’s talk a little bit about what kind of statistics are important to you. Or at least, the ones that I’m tracking right now.

How many people are REALLY using my app?

This was one of my biggest concerns. Sure I get around 200 unique sessions per day, but how many of those people were actually using my app. How many of them were registering accounts and creating files? You may have different metrics that you care about, but here are some of mine:

  • Active users in the past 30 days
  • Sessions for those active users in the past 30 days
  • How many files they created in the past 30 days
  • Statistics for other features that I want to track (how often do people join video chat, etc. This could be any feature you want to track)
  • How many new people are signing up every day?
  • Are new people coming back to use the app (retention)?

Are the people with the most usage paying customers?

This, in my opinion, this is one of the most important questions. You’re going to have a large amount of your activity come from a very small group of “power users.” If these power users are getting the most value out of your product because they are using it the most, shouldn’t they be the ones that are paying customers?

By looking at usage and comparing it to Pro status, we can actually tell if our pricing plan makes sense. For instance, one of the major Pro features of Kobra is to video chat with more than 2 people at once. If my “power users” are mostly collaborating with one other person, but they are creating a lot of files, then perhaps I should switch my Free plan to limit the amount of files created instead of “number of people in video chat.”

Chances are, like Kobra, right now your pricing plan is just a shot in the dark. “I think that most people will want this feature, so I’ll make it Pro only.” Instead of shooting in the dark, make sure you can see how your app is actually being used and detect power users. Then, you can base your pricing structure on how your most active users are using your app.

I cannot tell you how many goddamn times I have received the following email:

Hey Matt, I love Kobra! I use it a ton and it’s super great. I don’t pay for it because the free plan is enough for me. Can you add this cool feature that would take you weeks to program?

Uhmmm…that person should definitely be a paying customer if they love the app so much. So, what is wrong with my pricing plan that “he doesn’t need to pay for it”?


Here are some of the statistics I’ll be tracking to help me answer that question:

  • Are the people with the most sessions in the past 30 days pro members?
  • Are the people with the most sessions in the past 30 days creating a lot of files? Or are they collaborating on one file frequently?
  • Are the people who have created the most files in the past 30 days pro members?
  • Are there other features that “power users” use more often than regular users? Vice-versa?
  • How have current pro members used the app in the past 30 days?

So how do you track these statistics?

So I want to track a lot of stuff. These aren’t “easy” statistics like the ones that Google Analytics gives you, which is why I think a lot of people (including me) have waited so long to track them or still haven’t added them at all.

But the truth of the matter is, it’s not that hard to track this stuff.

In fact, I implemented all of the statistics I wanted in just a an hour or two. And since doing so I’ve discovered who my power users are, and I’ve even reached out to a few of them. I wish I would’ve spent those two hours to implement this a long time ago.

So what’s the solution?

Enter Intercom.io

Screen Shot 2015-04-01 at 7.15.19 AM

Intercom is an amazing Software-as-a-Service that can tell you pretty much anything you want to know about your users and then some. Not only that, but it’s simple to get up and running. And to think I was going to waste my time creating my own analytics platform (and let’s be real, you were thinking about it for a minute too).

To get an idea for the kinds of analytics they offer, I highly recommend watching this two minute video. After you’re done, scroll down and I’ll help you install Intercom on your site and begin tracking user activity. Oh, did I mention that tracking using Intercom is free? (And just so you know, no, I’m not receiving anything for talking about Intercom right now, I just love it that much.)

Getting up and running with Intercom in 2 minutes.

Alright, so you’re watched the video and you are ready to dive into Intercom! Your first step is to head on over to Intercom.io, sign up, and go through their setup process. I uploaded a CSV file of all of the current Kobra users to get started, but there are also ways to hook up directly to Stripe if you have a paid-only product.

After you do your initial import, you’re going to want to set up the Intercom JavaScript in your app. This was by far the most confusing part, as I don’t think their documentation is actually targeted at developers, so I’m going to walk you through it.

1. “Install” Intercom on your Site

First we’ve got to include the Intercom JavaScript in our app. Just copy this code and replace <INSERT APP_ID HERE> with your App ID:

<script>// <![CDATA[
(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',intercomSettings);}else{var d=document;var i=function(){i.c(arguments)};i.q=[];i.c=function(args){i.q.push(args)};w.Intercom=i;function l(){var s=d.createElement('script');s.type='text/javascript';s.async=true;
s.src='https://widget.intercom.io/widget/<INSERT APP_ID HERE>';
var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);}if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})()
// ]]></script>


2. Tell Intercom to “Boot” when there is a User

Whenever a “user” comes into existence in your app (for instance, when they log in) you have to “boot” Intercom and tell them a little bit of information about that user. The cool part is, you can actually include anything you want within the user object, so what you can track becomes limitless. Here’s the boot code:

window.Intercom('boot', {
   app_id: 'abc12345',
   email: 'example@example.com',
   user_id: 'abc123',
   created_at: 1234567890,
   projectCount: 0


Here you can see that I’ve included my app_id and the users email address and unique user ID (from within my application). created_at is a timestamp representing the time at which the user was actually created (when they registered). I’ve also included the custom data projectCount and set it to 0 to keep track of how many projects my users have created.

3. Page Changes & Updating User Data

When you are making a Single Page Application (one that changes “fake” URLs based on something like yoursite.com/#page1 or #page2), you need to let Intercom know when the page has changed. This is done via Intercom’s update method. Calling update with optional parameters can also change a users data as well.

If a user hit the “Create Project” button and then was forwarded to their project URL, I may use something like this:

window.Intercom('update', {
   email: 'example@example.com',
   projectCount: 1


4. Utilizing Events

Another powerful feature that is included with Intercom is Events. Here are some examples of when I call an event:

  • Whenever a user creates a file
  • Whenever a user upgrades to Pro membership
  • Whenever a user begins video chat

To send an event to Intercom, use the following code (note that sending in extra data is optional):

window.Intercom('trackEvent', 'createdFile', {
   fileName: 'myFile.js',
   fileType: 'JavaScript'


Utilizing your Data

By using the code snippets from above, you should be able to track pretty much anything you would like to using Intercom. They even have a mobile app that can show you which users have registered recently, which have been active, etc.

Once you’ve begun to collect enough data, you should be able to determine which users are your “power users” and then determine not only how to make your app better, but how to structure your pricing plan.

I’m still collecting data for Kobra, but I’ll be sure to post a public analysis of my Intercom data so you can see how I’ve used it to make decisions for the future of Kobra. Be sure to sign up for updates and grab my free eBook below!

Free "Building Software Products in a Weekend" eBook

You'll learn the development strategies I used to program my SaaS product in just 36 hours.

Any programmer can take information in this practical 53-page eBook and use it to build a software product. You'll be able to take your idea and boil it down to a Minimum Viable Product, learn how to waste less time writing unnecessary code, and use my 3-step development process for building quickly.

Download link will be emailed to you. No spam, unsubscribe anytime.

  • http://eslam.me/ Eslam Mahmoud

    That is very interesting thanks Matt :)

  • http://josephrex.me/ Joseph Rex

    You ever tried hotjar? I could send you invites if I have your email. Doesn’t hurt to have two kickass analytics tool besides the fact that they cause extra HTTP request

    • http://mattkremer.com Matt Kremer

      Interesting, does that work well for SPAs?

      • http://josephrex.me/ Joseph Rex

        yea totally it does. It displays heatmaps and records user activities. So you could even tell if a user left your website or web app because they encountered some typo that irritated them ;)

        • http://mattkremer.com Matt Kremer

          Got your invite, I’ll have to give it a try sometime :) Thanks!

  • http://www.blendo.co/ George Psistakis

    Hey Matt great info about Intercom. I really like it and use it from customer support to transactional email marketing, Altough I use it for some time now I am still get confused with their pricing and their tiers. (Tip: they provide a demo screencast where you get a discount coupon for one month too).
    If you want to take Intercom some level up and pul data from Intercom to perform custom analytics then you are welcome to check: http://blog.blendo.co/how-to-guide-intercom-data-model-for-databases/