Explanations for marketers: the event stream

Posted by Josh Weissburg on Nov 14, 2014

As a non-engineer, I often wish for a place I could go to see important technical concepts broken down and explained in plain English. They say the best way to learn is to teach, so I’m going to give this a shot...

Why is the event stream important?

Have you noticed all the fancy new analytics tools that have hit the market lately? People used to measure page views and visitors and call it a day. Now you can dig into the people who are doing that clicking and tapping in your app, then use that information to customize their experience. The event stream makes that detail possible.

Before I show you what an event stream looks like, let’s look at two classic marketer tools that don’t do things the new way:

Google Analytics

Google analytics

GA is great for counting things, especially visits and pageviews. But what if you want to see people who got to each stage in your flow, then change the experience for users who got stuck? Can’t do it.



Ah, the classic building block of marketing campaigns: the spreadsheet. Easy to work with, but how do you keep it current? The moment you generate a spreadsheet, it’s out of date.

The problem with these tools is that you have to choose between accuracy and utility. Google Analytics gives me accurate counts of what’s going on, but I can’t put names with those clicks and go address their problems. A spreadsheet lets me easily sort and reach out to users, but it’s impossible to maintain accuracy—the world doesn’t stop when I download it.

What is the event stream?

Contrast those tools with the following event stream for my fictional San Francisco Giants online store:


There are two important things happening here:

IDENTIFY USERS: Every time someone signs up in my app, like George did in my diagram, that user information is immediately recorded. That record can then be relayed over an API to third party services. This creates a list of your users that is always up-to-date, complete with everything you know about each user. Each piece of info you store on a user is called a user attribute. When something changes in a user profile, that change is automatically sent too, so if George changes his phone number, the old phone attribute is replaced with the new one in your database and in the third party service.

TRACK USER EVENTS: Every time a user does something in my app, that action is recorded as an event and—here’s the important part—that event is matched with a user. Each event, like the “Add to cart” and “Checkout” examples above, can have properties: info associated with that event. You can also track events that users don’t do themselves but that happen “to” users, like “Order shipped” in the above diagram. So when someone else comments on your Facebook post, they generate an event like “Submitted comment” in their event stream and, even though you didn’t take any action, you also generate an event: “Comment was left.”

So to review: the event stream is the combination of 1) a list of users and their attributes; and 2) the events that happened for each of those users and their properties. Users and their events are both updated in real time over an API—that’s the “stream” part of “event stream.”

What can you do with the event stream?

Once you have access to this stream of users and their events, you can analyze and customize down to each user. When you’re building a business, that level of detail is super important. It’s why analytics tools like Mixpanel, KISS Metrics and Heap (my personal favorite) have become mainstream: I don’t just see numbers, I see names too.

When Dhruv and I looked at what was happening in analytics-land, we thought, “Why can we only look at users based on what events they have done? Why not allow marketers to create campaigns that communicate with users based on what they do?” That led to a couple of key features in Outbound:



As you can see above, each event is matched to a user. Notice that George just signed up 11 minutes ago and he watched the intro video right away, but he hasn’t yet told me his favorite Giants player. I know that most users add something to their cart when they see items related to their favorite player, so I want to make sure he gets a mobile push reminder if he still hasn’t added his favorite player 1 day after signup:


Now let’s say I’ve been running this campaign for the past month. Lots of Georges, Sallys and Bobs who watched the Giants win the World Series downloaded my mobile app and watched the intro video. Every one of them who watched the intro video but did not add their favorite player within one day got this mobile push:

Using the event stream, Outbound shows you how many of those people got my message (2,556) then went and added their favorite player after they got my message (1,738). It can even show you how many would have done it anyway by using a holdback group (485).

The powerful thing about the page above is that I’m not tracking anonymous clicks. I’m tracking users and seeing how many of them are making it to the next step in my app.

Behold the power of the event stream!

Topics: Best practices