Product Analytics – a foundation for success

June 21st, 2017

How I used Segment to make our company data-driven and create a better product experience for our customers.

Pendo’s new survey of nearly 200 product managers and executives shows that those with a more robust product analytics strategy are more profitable, grow faster and have lower churn than their competitors.

pendo.io

Frustration breeds motivation

At the last company I worked for, I experienced what I'm sure many do – the engineering team was a blockage to progress for other teams.

The software built by engineers also happens to be the source of who the customer is and what they do – data central to helping a company and the people within it succeed.

Those of us that wanted data about who the customer was and what they did, or to add tools, had to go through the engineering team. This meant they were not making progress on the core software. When they were, others weren't able to get what they needed.

As Product Design Lead, I had a lot of ideas for the entire customer experience that I couldn't bring to life because of this blockage. So when we started to create a new offering for our customers, I decided to do something about it. With a clean slate and new set of priorities, we were able to get little snippets of code into all parts of the new app. With these, I was able to do all kinds of things to bring my ideas to life and help others in the company do the same.

From motivation to solution

These simple snippets are the core of a tool named Segment. I can't put into words how amazing Segment is. In simple terms, it pipes data from your app to other tools. When combining Segment with a good Product Analytics Strategy and thoughtful implementation, people are empowered, relatively unconstrained by other teams. A clear vocabulary for actions people take is available to the whole company. Information about your customers and what they've done gives you the context required to make informed decisions.

Segment data flow

The strategy is to outsource everything that is not the core of your software to other tools (empowerment), and use data to inform the design of the right product for your customers, versus a product for your customers (context).

By taking this approach:

  • Management can get meaningful answers and insights by using BI tools like Looker, Periscope, or Mode.
  • Sales and Customer Success can get off of Salesforce and have better conversations with customers and leads by using tools like Intercom, Customer.io, or Drift.
  • Design and Product can understand user behaviour, feature usage/issues, and inform/validate/invalidate experiments with tools like Fullstory, Mixpanel, or Hotjar.
  • Marketing can design and include contextual information in emails using tools like Sendgrid or Vero.
  • Engineering can better understand bugs and annoying usability issues with tools like Sentry or Rollbar.
  • Everyone in the company can see any information about their customers, and what they do, in any of these tools or have it sent straight into Slack in pretty much any way you want it for real-time updates.

All this with very little assistance from engineering once Segment has been installed and a few snippets are placed within the app.

Put differently: these were all things that our engineering team was not asked to build, or in the case of emails, something they could stop building. That's a lot of time (re)gained.

I set up most of these tools to do this but there are many more to choose from. A lot of time was spent configuring them all to do what I felt needed to be done, for us. Others will have different needs.

Summary

My frustrations led me to augment my role with the responsibilities of a "Chief Data Officer" and although the solution I implemented wasn't perfect, we benefited greatly from it and I learned what works, and what doesn't.

This is something that I'm sure many companies see value in but perhaps don't allocate resources to. If you'd like help developing a Product Analytics Strategy and implementing it, get in touch.


Try it yourself

Planning

A good place to start your planning is "Growth Starts with Asking Questions" and "7 Questions to Ask Before you Start". Then document all of the attributes that you want to know about your customers and the actions they can do, that will help answer your questions.

Segment have a template in Google Sheets you can use for this process. I made my own version that I'd be happy to share.

Implementation

Segment

Create an account with Segment and add a "Source" – JS, Ruby, whatever your app is built with.

Adding a new source in Segment

The Source will be the hub where all data from your app is sent. You can add any number of Sources, perhaps one for staging and one for production.

From here, you choose where that data is sent to (Integrations) – including services for analytics, notifications, chat, surveys, or your own databases, webhooks, etc.

Segment data flow

Click the "add integration" link on the Source overview screen. Let's select Mixpanel. Enter the details for the Mixpanel project that you want to send data to, or whatever service you chose to integrate with.

Adding integration settings

Back on the source overview screen, you'll have a snippet to add to your app. Let's do that.

Snippet for your app

Your app

Add the snippet to the footer of every page that you want data sent from or, in the case of a back-end implementation, follow the instructions under the snippet Segment gives you.

Now, let's say the tracking plan you created in the planning stage requires you to log:

  • The name, email and the "How you heard about us" attributes about a new customer
  • Every new account registration action and what plan they signed up for
  • When they complete their profile

That's as simple as adding the following anywhere in the app (most likely just after they sign up):

analytics.identify(USER_ID, {
  name: USER_NAME,
  email: USER_EMAIL,
  how_you_heard_about_us: HOW_YOU_HEARD_ABOUT_US
});

...and:

analytics.track("Registered", {
  plan: PLAN_NAME
});

...then when they complete their profile:

analytics.track("Completed profile", {});

The UPPERCASE characters are the dynamic values that you inject from your database.

Go and perform these actions in your app so the calls are triggered, then refresh your Mixpanel account (or integration of your choice). You will instantly be able to create a segmentation report or funnel for all users that sign up, based on the data you sent to Segment and any of the additional data that Mixpanel collect.

Mixpanel funnel

Every time a user performs those actions, that data will be sent to Segment and passed onto whatever service/integration you want.

For example, by adding name to the Track() call:

analytics.track("Registered", {
  plan: PLAN_NAME,
  name: USER_NAME
});

...you could add the Slack integration with the setting #{name} just signed up for the #{plan} plan 🔔 to get that information pushed to a Slack channel.

These examples are extremely trivial and barely scrape the surface of what is possible. With a strong Product Analytics Strategy and data being sent to Segment, then to other tools, you'll be in a position to do all kinds of amazing things.

If you'd like help with any of this, get in touch.