Search code examples
google-analyticsanalyticsgoogle-analytics-apigoogle-analytics-sdk

Hierarchy of Google Analytics for Multiple Builds of Same App


I am setting up Google Analytics Accounts for a Product which have multiple builds as frontend for same user base.

So we have one Product called X and have:

  1. Web Build
  2. Mobile Web
  3. Android App 1
  4. iOS App 1
  5. Android App 2
  6. iOS App 2 6.

The main point is identical APIs and User base is used in all platforms and apps. So if we have a user John Doe he can login in any of the web or apps.

We want to extract following information from Google Analytics.

  1. Under User ID feature want, sessions aggregations of that user around all build and apps, but identifiable. So I can know that user John login to web yesterday and used mobile app today.
  2. Each user belong to a customer (company) in our system. So want to segregate all information based on companies.

I already have achieved point 2 by creating a custom dimension in Google Analytics and believe that's the best way to do it.

Now need suggestions from Gurus on how to acheive point 1 using Google Analytics.

  1. Either use single account and single property for all builds and apps
  2. If yes, then how to identify those apps and builds in sessions
  3. If I use multiple properties/apps in GA account then how to aggregate user sessions among all?

Looking forward to hear how guys around hand or should have handled this scenario. Cheers!


Solution

  • This question is extremely broad, IMO any answer your going to get is going to be primarily opinion based. So here is my opinion and a little extra info to boot.

    The first issue you are going to have is that there is a difference between Mobile google analytics accounts and web analytics accounts. The two do not mix. Mobile analytics accounts insert screen views with a screen name. While web accounts insert PageViews with a document location.

    There is no way to analyze between two different Google analytics web properties. Unless you intend your android and ios apps to run as websites and send it like its a webpage its not going to work. You could potentially download the data into your own system or big query and analyze it there. Comparing your custom dimension to see what the users have done differently. I would wonder at the quality of the analysis you will get as there will be no real way for you to compare the data and match it up beyond using your custom dimensions user id and possibly date.

    I am adding this because I am not sure what your saving in your custom dimension.

    The second issue you are going to have is tracking. Google analytics TOS does not allow you to send any identifiable information to Google.

    The Analytics terms of service, which all Analytics customers must adhere to, prohibits sending personally identifiable information (PII) to Analytics (such as names, social security numbers, email addresses, or any similar data), or data that permanently identifies a particular device (such as a mobile phone’s unique device identifier if such an identifier cannot be reset).

    You could for example send your companies customer id for John as a user_id but user_id is an internal valuable used for internal processing this is not something you can extract out via the api.

    The User ID enables the association of one or more sessions (and any activity within those sessions) with a unique and persistent ID that you send to Analytics.

    To implement the User ID, you must be able to generate your own unique IDs, consistently assign IDs to users, and include these IDs wherever you send data to Analytics.

    For example, you could send the unique IDs generated by your own authentication system to Analytics as values for the User ID. Any engagement, like link clicks and page or screen navigation, that happen while a unique ID is assigned can be sent and connected in Analytics via the User ID.

    The best you could do would be to create a custom dimension and send that with every hit username=johnscustomerId. Which you appear to have already done. This is what I have done in the past and it works perfectly well.