Andy Young // @andyy // [email protected]
How do I analytics?a practical guide forpragmatic startups
Part B: Getting the Data
Andy Young // @andyy // [email protected]
TO RECAP:Today’s tools make it super-easy to track
thingsGoogle Analytics
MixpanelKissMetricsLocalytics
Branch Metrics..
Andy Young // @andyy // [email protected]
Today’s tools make it super-easy to track
thingsBUT they also make it really easy to
- become overwhelmed with data- focus on the wrong things
Andy Young // @andyy // [email protected]
Typical analytics challenges/pitfalls
Drowning in too much data
Failure to select + focus on the top metrics that matter
Not tracking the data you need to answer key questions
Andy Young // @andyy // [email protected]
Why analytics?
1. How are we doing? - are KPIs on the right track?
2. What are the results of our experiments?- so we can learn
3. What’s happening right now?- did something great or terrible just happen?
Andy Young // @andyy // [email protected]
Getting the Datas
Andy Young // @andyy // [email protected]
Don’t use Google Analytics!It’s the wrong type of tool for most key
questions.
Designed around sessions & pageviewsInstead: focus on unique users and key actions
Specific user journeys are not that importantInstead: what % of unique users
reached a particular step eventually?
Collecting data
Andy Young // @andyy // [email protected]
Collecting data
Use an analytics tool focused on trackingevents/actions
and individual user behaviour
e.g. Mixpanel, Localytics, Amplitude
Andy Young // @andyy // [email protected]
Collecting data
Events vs. Properties vs. People
Events: something happenedProperties: something about what just happened
People: connect events to particular users(people can also have properties)
Andy Young // @andyy // [email protected]
What to Track?
Andy Young // @andyy // [email protected]
What to Track
All key user behaviours
● pages/screens viewed, key actions taken
● anything that writes a new row or updates an existing row in your database or user’s session store
○ e.g. add to cart, post new content
● do you have all key steps in the user funnel?
● anything that has external impact, e.g. share
Andy Young // @andyy // [email protected]
Tracking events
Tip #1: Choose easy-to-read and meaningful event names
Short!Pick a convention; stick to it
Omit superfluous words
“user_viewed_homepage”“Viewed homepage”
Andy Young // @andyy // [email protected]
Tracking events
Andy Young // @andyy // [email protected]
Tracking events
Andy Young // @andyy // [email protected]
Tip #2: Track each user based on a distinct ID
Don’t use email address -use autogenerated user_id from your own DB
Use aliasing to connect up events tracked pre/post signup
Tracking events
Andy Young // @andyy // [email protected]
Tip #3: Annotate your users with source data
referrer; utm tags; install tracking via AppsFlyer1. Track a signup event
2. Add as user properties3. Potentially also as properties to key events
Tracking events
Andy Young // @andyy // [email protected]
Tip #4: (Mixpanel specific) - People vs. Events
Mixpanel won’t let you query for userswho did particular events
So, our options:- Do this using your own DB
- Annotate your users (People) with properties for each key event
Tracking events
Andy Young // @andyy // [email protected]
Tip #5: Ecommerce/revenue tracking
Mixpanel/AppBoy etc havenative support for tracking revenue
Annotate your Purchase events with revenue data using the relevant properties for each platform
Tracking events
Andy Young // @andyy // [email protected]
Tip #6: Use a development project for testing
Tracking events
Andy Young // @andyy // [email protected]
Track events from where?Client/app vs. server
Tracking events
Andy Young // @andyy // [email protected]
Tracking the funnel
Andy Young // @andyy // [email protected]
Tracking the funnel
Start with the pirate metrics AARRR
Top of funnel: acquisition; signups/installsMid funnel: post-install events; engagement;
retentionBottom of funnel: purchase / monetisation.
Andy Young // @andyy // [email protected]
Tracking the funnel
Looking at each stage (AARRR) in aggregate is a good start
but it will only get you so far
the “truth” is much more nuanced
Andy Young // @andyy // [email protected]
Tracking the funnel
Users acquired via different channelswill have different behaviours
Different cohorts will have different experiences of your product
Different users will have been exposed to different A/B tests
Andy Young // @andyy // [email protected]
Tracking the funnel
Key: these are all properties of your users
UTM tags: source, medium, campaign, termsLanding pageSignup time
A/B test bucketsReferrer
Viral source
Andy Young // @andyy // [email protected]
Tracking the funnel
Annotate your users in your database/analytics system with these attributes
UTM tags: source, medium, campaign, termsLanding pageSignup time
A/B test bucketsReferrer
Viral source
Andy Young // @andyy // [email protected]
Let’s get Technical..
Andy Young // @andyy // [email protected]
Implementing Tracking
Use aTag Manager
(e.g. Google Tag Manager)
Check outSegment.com
for flexibility & agility
Andy Young // @andyy // [email protected]
Implementing Tracking
Add yourFacebook + GoogleCustom Audience / Remarketing Pixels
Now!
Start building your audience
Andy Young // @andyy // [email protected]
RevisitingCohort Analysis
Andy Young // @andyy // [email protected]
Andy Young // @andyy // [email protected]
Andy Young // @andyy // [email protected]
Problems with Cohort Analysis
Time consuming
Delays to get the latest data
Inflexible
Andy Young // @andyy // [email protected]
Rolling Cohorts
Andy Young // @andyy // [email protected]
Andy Young // @andyy // [email protected]
Rolling Cohorts
Andy Young // @andyy // [email protected]
How?
Andy Young // @andyy // [email protected]
Use your existing database
Users
Learn SQL! It's not hard
Just need a slave database for analytics- “read replica” - i.e. a live copy
Andy Young // @andyy // [email protected]
Use your existing data
Users
SELECT COUNT(*) FROM users
WHERE created > ‘2013-07-01’
AND created < ‘2013-08-01’
Andy Young // @andyy // [email protected]
Use your existing data
SELECT COUNT(*) FROM users
LEFT JOIN sales USING (user_id)
WHERE users.created > ‘2013-07-01’
AND users.created < ‘2013-08-01’
AND sales.date < DATE_ADD(users.created, 1 MONTH)
Andy Young // @andyy // [email protected]
1. Automate running queries (every hour!)
2. Store the results in a simple database
3. Create a page to graph the results (HighCharts..)
Roll your own
Andy Young // @andyy // [email protected]
Andy Young // @andyy // [email protected]
Visitor numbersUsage / engagement
Revenue Conversion rates
Pirate metrics
Andy Young // @andyy // [email protected]
Good luck!