Your SlideShare is downloading. ×
Droid con2013 tracking user behavior_tennyson_manheim
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Droid con2013 tracking user behavior_tennyson_manheim

283

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
283
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Kiana TennysonDroidCon BerlinApril 2013TRACKING USER BEHAVIOR CREATIVELY
  • 2. WHO IS KIANA?•  Software Engineer – Manheim•  Highest volume operator of wholesale auto auctions in the world•  Professional background… web portals, data aggregation•  2013 goal – contribute to an open source project (maybe WebRTC?)•  Occassional blogging… shecodes.blogspot.com•  Find me on twitter @kiaaaana
  • 3. DISCLAIMER:•  IS a Feasibility Discussion•  NOT an Ethics Discussion•  NOT a Security Discussion•  Don’t go to jail, get sued or end up defamed•  Ultimately, let’s take care of our users (so they will pay us)
  • 4. OVERVIEW•  Difference between Web Analytics and User Tracking•  Google Analytics•  Data Collection•  Data Transferal Strategy•  Data Querying using Core Reporting API
  • 5. •  Logging characteristics about the userand the user’s actions•  More granular study than WebAnalytics•  Sticky subject!•  Public apps… highest priority ==user permission•  Internal apps/corporate phones…different rules apply•  Collection, analysis, reporting ofinternet data•  Two categories – onsite and offsite•  Two data collection methods•  Log file analysis•  Page taggingANALTYICS VS USER TRACKINGAnalytics User Tracking
  • 6. INTERACTION TYPES(CLASSIC AND ANDROID)•  Pageview Tracking•  ”Activity” (aka page) requests•  Essentially wherever requests for a new view is made•  Event Tracking•  Layout interactions initiated by user•  Ecommerce Tracking•  Track average transactions and in-app purchases•  Custom Variables, Dimensions, Metrics
  • 7. PAGEVIEW TRACKINGpublic class TestPage extends Activity {!@Override!protected void onCreate(Bundle savedInstanceState) {!...!GoogleAnalyticsTracker tracker = GoogleAnalyticsTracker.getInstance();!tracker.startNewSession(“UA-XXXXX-YY”, this);!TextView helpLink = (TextView)findViewById(R.id.helpLink);!helpLink.setOnClickListener(new OnClickListener() {!@Override!public void onClick(View view) {!tracker.sendView(“/helpPage”);!startActivity(new Intent(TestPage.this, HelpPage.class));!}!}!}!}!
  • 8. EVENT TRACKINGpublic class VideoPage extends Activity {!@Override!protected void onCreate(Bundle savedInstanceState) {!...!GoogleAnalyticsTracker tracker = GoogleAnalyticsTracker.getInstance();!tracker.startNewSession(“UA-XXXXX-YY”, this);!TextView videoLink = (TextView)findViewById(R.id.videoLink);!videoLink.setOnClickListener(new OnClickListener() {!@Override!public void onClick(View view) {!tracker.sendEvent(“Videos”, “Play”, videoId, 0);!//initiate video playback!}!}!}!}!
  • 9. ECOMMERCE TRACKINGpublic class PurchasePage extends Activity {!. . . !public void onPurchaseConfirmed(Purchase purchase) {!!Transaction transaction = initTransaction(purchase);!!transaction.setStoreName(Constants.STORE_NAME);!transaction.setShippingCost(purchase.getShippingCost());!transaction.setTotalTax(purchase.getTotalTax());!tracker.addTransaction(transaction);!!for(LineItem lineItem : purchase.getLineItems() {!!tracker.addItem(createNewItemBuilder(purchase,lineItem).build()!}!tracker.sendTransactions();!}!}!Step 1Step 2Step 3
  • 10. CUSTOM VARIABLESpublic class PurchasePage extends Activity {!. . .!public void onSubscriptionComplete(Subscription subscription) {!boolean complete = subscriptionProcessor.process(subscription);!if (complete) {!//Track new subscription sold at session level!tracker.setCustomVar(1, “New Subscription”, salesRepId, 2);!trackTransaction(tracker, subscription);!}!listener.notify(subscription, complete);!}!!!index name value scope(default page-level)
  • 11. OTHER INTERACTION TYPES•  Social Interactions•  tracker.sendSocial(network, action, target)!•  Timings•  tracker.sendTimings(interval, category, name, label)!•  Custom Dimensions/Metrics•  tracker.setCustomDimension(index, scope)!
  • 12. USER STORY•  Web Analytics and User Tracking tell a story about our user(s)
  • 13. •  Secure.ANDROID_ID (Has limitations)•  TelephonyManager•  getSimSerialNumber()•  getDeviceId()•  Build.Serial (Good for tablets)•  Company-assigned ID•  All tracking calls collect user info•  Metrics for Core Reporting API:•  ga:visitors•  ga:visitorType•  ga:source•  ga:userActivityHandleWER (WHO)?Google Analytics User Tracking
  • 14. PII AND SPII(SENSITIVE) PERSONALLY IDENTIFIABLE INFORMATION•  Full Name•  SSN•  Driver’s License #•  License Plate #•  Birthplace•  Credit card numbers•  Digital Identity (gray area)•  Date of Birth•  IP Address (sometimes)
  • 15. •  Logging app usage via Singletons orlocal db inserts•  Define start and end points•  Strategy determined by UI•  Multiple Activity Structure –activity lifecycle drawbacks•  Single Activity/Multi Fragment –lifecycle benefits•  Data Collection – Event Tracking•  Reporting – Engagement Report type•  Querying for:•  ga:pageViews, ga:timeOnPage•  MultiChannel Funnels•  Reports created from sequencesof interactions leading toconversion or transactionWAS (WHAT)?Google Analytics User Tracking
  • 16. •  Log system time when user makesimportant action•  Time zone issues – log in UTC•  Log start/end of session•  Depending on UI structure, determine“session times”•  Submit data group when session iscomplete, or at end of dispatch period•  No metrics correlating time and useractivity•  Dimensions (ga:timeOnSite,ga:visitLength, ga:timeOnPage())•  Answer “when are users most likely to…?”•  Use a page level custom variable•  tracker.setCustomVar(!s, “Time ItemPurchase”,dateTime.toString(), 3) !WANN (WHEN)?Google Analytics User Tracking
  • 17. •  Log location with android.locationpackage•  Choose best algorithm for selectinglocation•  Trade-off between killing user’sbattery and accuracy•  Once location received, hold on untilready to send with other tracking data•  No metrics to correlate geolocation toactivity•  Dimensions exist; collected from IPAddress during HTTP Requests•  ga:continent down to ga:latitude/longitude, etcWO (WHERE)?Google Analytics User Tracking
  • 18. •  Subjective question; no concrete method to answer “Why” a user uses yourapp•  Align app goals with with user’s actions•  Accept your app’s purpose to the user to fully realize its potentialWARUM (WHY)?Google Analytics AND User Tracking
  • 19. GA DATA COLLECTIONGoogleAnalyticsTrackerEvent (Hit)SQLLiteDatabaseNetworkDispatcherDispatchHandlerAsyncDispatchTaskPipelinedRequestorHttpConnectionCallbacks(start)(end)
  • 20. USER TRACKING DATA COLLECTION•  Write a Custom ContentProvider and SyncAdapter•  Requires user permission (removing your liability)•  Handles network availability, scheduling and interrupts
  • 21. APP REPORT CATEGORIES•  Acquisitions•  How your app is found/downloaded/installed•  Users (who, where, when)•  Info about people using your app and their devices•  Engagement (what)•  Ways people use your app•  Outcomes (why)•  Track targeted objectives with goals, ecommerce
  • 22. SAMPLE QUERY(CORE REPORTING API)https://www.google.com/analytics/feeds/data?ids=12345&dimensions=ga:customVarValue5&metrics=ga:visits&filters=ga:daysSinceLastVisit%3E%3D5&start-date=2012-11-23&end-date=2012-12-07&max-results=50(Where customVarValue5 == salesRepId)Select visits, customVarValue5 from 12345 where daysSinceLastVisit <= 5 and startDate =>‘2012-11-23’ and endDate <= ‘2012-12-07’ group by customVarValue5 limit 0, 50
  • 23. COMPARED TO SQLGAQueryMetrics Dim.ProfileID FiltersSQLQuerySelectCol.GroupByFrom(Table)Where
  • 24. WRAP UP•  Mobile devices are quickly becoming one of the most commonly used personal computers•  Understand the boundaries of user privacy•  Protect our users; they keep us in business J
  • 25. QUESTIONS?Thank you….

×