Gathering data from google analitycs to my own admin panel - google-analytics

I'm starting with google analitycs.
Before I'll start implementing this into my pages I'm wondering if I'm able to get informations like average time at site, where my user came from, which devices they are using etc.
I would like to get those information from my VueJS front SPA application by async HTTP GET call and display those there. Is it possible?
If yes I would be very thankful if you provide some links to google API where I can find it or some tutorial.

Since Universal GA you can't access users' origin data outside GA in your application. Before that you had all this juicy information inside a cookie, inside __utma, __utmz etc (more info here).
The information you're asking about (time on site, pages visited, etc) can be retrieved from GA afterwards if you make use of the userid feature.

Related

How to share a part of the site in Google Analytics

we have events listing website and events from different organizers are grouped (by URL), like -
www.site.com/organizer/event1
www.site.com/organizer/event2
www.site.com/organizer/event3
etc. How to give an organizer an access only to his/her part of the site's Google Analytics?
Easy way -
An organizer registers in Google Analytics
An organizer creates a counter in Google Analytics
An organizer sets this counter in his/her profile on our website.
We add this counter to our Google Analytics code on www.site.com/organizer/* pages
He/she clicks on some link in the profile and sees the GA stat only for own events.
The way I want it:
He/she clicks on some link in the profile and sees the GA stat only for own events.
Is this possible with some API to separate statistics for www.site.com/organizer/* and share a private link to it with organizer?
After reading your comments in another answer (which is basically just a copy of the comment I left on your question). I have changed my recommendation left in comment, think you should use the Google Analytics API for this.
Since you want to give others access to your own data I suggest you use a service account. You will need to do this in a server sided programing language, say PHP or C#.
Every night run a job that will extract the data you want though the Core reporting API. Store it in the database then create a page that will then display only the data you want to the different people. You will only need to run your job once per day as the data for previous days will never change. Wait at least 24 hours to get the data as data hasn't completed processing for 24 hours.
I am not sure what language plan on using but these tutorials should get you started: Google Service Account with PHP or Google Analytics API Authentication with C#
I would create different profile views with filters to include only the subset of data for the subpages.
This way, you can add a specific user access rights to that specific profile only, so they can only view that profile when they log in.
Create an include only filter which filters on Request URI: /organizer/event1, /organizer/event2, /organizer/event3 etc.

Using Google Analytics to show subset of data for customers of web application using embed api

I'm developing an application where each 'business' has its own page (or rather many pages):
For example example.com/business/abc/
So, for the logged in business owners in the system I would like to give a feature 'View page analytics'. It would display how many visits (and maybe a couple of other things) that particular page has had.
Is there a way of doing this using the Google Analytics API with my constraints:
I don't want customers to provide their own UA code
I don't want them to require to have GA account
Customers don't need to have Google email account
I don't want to build the entire frontend and backend myself. I would rather use something existing
I've been researching this topic for hours trying to come up with a solution and can't figure out anything.
Here is what I tried and what problems happened to me:
http://ga-dev-tools.appspot.com/demos/embed-api/
This is basically exactly what I want for my customers to be displayed on my site (like in the examples), except that Embed Api tries to authorize users to their own (owned) google analytics. I want it instead to use my own Google Analytics data (or rather part of it)
The way I thought about limiting data access would be for every one of my customers to create a View in GA, Add filter to that View so only customer pages are listed there, assign User to the view, and use the Embed Api to display data from that View only. There are a couple of problems with that:
To assign User to View we need email address. And this must be either google account email, or account from a project created with Google Developers Console (application).
In other words I can't create (in any way that I know) an account that would be a shield account for my customers to a subset of my GA data that they would be interested in. It must be either a real user or a real application email address.
So what I tried to do is... I created an app in Google Developers Console, Created new OAuth Service Account. Using Ruby code (that in production app would be running on backend) I obtained OAuth token. I added this email of my OAuth service account as a User to the View
I wanted this server side generated oauth token to be used by Embed Api. That would achieve the effect that I generate the token for on my backend and user can use it without having GA user in my GA property. So I changed according to documentation the basic Embed Api example to use
gapi.analytics.auth.authorize({
container: 'auth',
clientid: 'xxx.apps.googleusercontent.com',
serverAuth: {
access_token: 'Server side generated token'
}
});
instead of
gapi.analytics.auth.authorize({
container: 'auth',
clientid: 'xxx.apps.googleusercontent.com',
});
The effects are not quite what I expected. The example doesn't show anymore (I can't see my data) but I can see in Netowrking section in Chrome that it is actually receiving real data from GA. But for unknown reason, nothing is appearing.
What I try to avoid is building a solution in which I need to build server side code that is querying GA for data, providing it to the frontend and then JS is responsible for displaying it. I would rather use Embed API but it seems not to be well suited for the use case where I don't want users to play with their UA data but rather with my own UA data limited to some scope. I would like to have at least the frontend or backend part of the solution solved. The solution doesn't need to be even Google Analytics based. Anything else that would let me achieve the use case easily and let the business owners see the effects of their marketing (traffic, sales) would be interesting as well.
Related:
Using google analytics API to show subset of data for customers of web application
Google analytics customer data?
Google Analytics API: filter by URI?
https://embeddedanalytics.com seems like something that could be useful, but their page and graphs look like from a few years ago. I would like something more pretty.
https://oocharts.com seems to be interesting because of what their docs.oocharts.com says about queries. But they don't charge anything for their product so I am skeptical of their business model and whether it is a good long-term solution. update: dead link
I don't have enough karma to post links ;)
TLDR: Displaying subset of my GA data to my customers without forcing them to become GA users and adding them to my GA account.
Any help appreciated!
Without seeing your code it's hard to know where the problem is, but using the serverAuth option definitely works. And when using the serverAuth option, you don't need to specify a client ID or container, all you need to enter is the following:
gapi.analytics.auth.authorize({
serverAuth: {
access_token: 'Server side generated token'
}
});
Here's an example that will work if you enter in a valid access token and the idsfor a view to which you have access:
http://jsbin.com/vukezoheyeco/3/edit
Note: when doing auth like this, it happens sync. This can be a gotcha if you're used to an async auth flow (like normal) and you add an event handler listening for the "success" event after calling .authorize because then your handler will never run.
I think you need the Google Analytics Super Proxy
You download the github package and upload to your own App Engine project, do some minimal configuration and then you have an interface where you can setup Google Analytics API calls which require no user login.
It provides end user URLs that you can use to construct data tables in your front end, it also provides data-table format so it slots right into Google Charts.
So for example, you have a user that needs access to visits, revenue for site section /sectionA/
You set up the GA super proxy to serve them a URL that only includes data for that section - you can try out queries here in the GA query explorer. In this case, metrics=ga:visits,ga:productRevenue and filter~=ga:page=/sectionA/
This produces an end URL with JSON data, that refreshes daily/hourly - your choice. You import this URL into your app.
The end user then logs in to your app, and sees the chart data generated from the end URL for their login. They don't need to know about GA super proxy, they just see the end resulting chart.
You could get more sophisticated by providing dropdowns to select which data chart they see, which changes the GA super proxy URL that is requested.

Separate analytics for each profile page within a single website

There are multiple profiles on my website and each user is managing his/her profile himself. I am trying to find the most efficient way to present analytics of each profile to its owner. Here are 3 ways I found:
Record each and every hit made on a profile page against that profile. This is not just count of hits, this requires to record IP, country, referrer, search terms etc. against each hit. This would require me to manage a huge database as there would be a lot of hits on each page. And a lots of processing on this database. Even if I have to de this, what database is recommended for such use?
Use Google Analytics on each page. But I am not sure that Google Analytics provide an API to fetch Analytics for individual pages.
Use some open source solution like piwik. Again I'm not sure if they provide per page analytics or not.
Please suggest the pros and cons of using each approach.
Update: More explanation - Think of it like a facebook page where each user can see hits on his page. What solution you'd suggest?
For Piwik, you can create a site id for each user, because you are allowed unlimited site ids with Piwik. You can can use a tracker with that user siteid, so when your member logs in, they get data only on their pages. You might also want to look at using custom variables and use the Piwik API to filter data.
Check here for info on multi-tracker: http://piwik.org/docs/javascript-tracking/#toc-multiple-piwik-trackers

ability to capture on what user was doing on the web page

Is there a tool to capture actual user experience on a my website. I would like to capture things like customerid, which button they clicked, information in their cookie, query string etc. etc. etc. Is there a tool that I can plug into my website that would provide this information for a web page and dump into nice columns in sql server table? I would like to be able to …
go through the logs.
Pick a particular log entry
Zoom into that log entry and look into more detailed information like querystring, cookie data etc.
Be able to capture all the information on what user was doing on that page when the exception happened.
Is it possible? Is there a tool out there for this?
Thanks.
This article describes using Google In-Page Analytics to generate heat maps for where users click on your web pages but this is aggregated rather than for specific users. In addition to the normal hits GA records for a page you can also add custom hits based on client-side interactions using a technique similar to tracking outbound links. We used this with the GA Funnel to track progress through a sign-up form.
Having ELMAH installed is unbelievably useful for a wide range of reasons and will be well worth configuring if you haven't already.
I found WebLog Expert to be very handy for analysing the IIS logs at an aggregate level.
I'm not aware of any one product that does all three elements and none specifically well at the per user level.

Google Analytics posts monitoring addon for WordPress

I'm assigned to create a WordPress plugin that displays recent visits graph under each post in WordPress. I'm struggling with the authentication of the data and general structure of plugin. My first question would be whats the most efficient way to authenticate with Google API for this kind of task?
I was looking into the AuthSub but i cant understand the concept of next parameter in the query. It should be the landing page after authorization, but how can i make it work dynamically with all the different posts?
In OAuth i'm getting a bit lost in terminology.
Second question is how often should the Google API be queried for the results. I mean is it rational to make smaller request every time visitor opens a page or maybe its rater optimal to download the data for the pages once and keep it in local xml and refresh it on some intervals?
As an idea of the plugin overall structure i was thinking of making a php file which would generate the graph out of the GA feed and would do it so when called from post hook via ajax. This would be controlled by passing parameters of the post to that php file.
Would that structure make sense or there is an easier way to preform the task?
I would really appreciate if someone pointed me in right direction especially in authentication problem.
The most important thing to do first is to lay out your design. You don;t want the user of your site to authenticate on the GA API. Because he doesn't have access to your data. So you'll have to login with your own credentials on the backend. And just cache the metrics you want to display on the screen. So, from the user perspective, there's no way to tell if you're using Google Analytics or any other web analytics product.
Since you're working with Wordpress and you'll need to do the data pull on the backend you probably want to do that using PHP.
You should take a look at this PHP library.
http://code.google.com/p/gapi-google-analytics-php-interface/
Even though it's not google officially supported it's pretty good and you won't have to worry about the process of authentication.
It doesn't make sense to query GA every time the user visits your site. Besides impacting the load heavily the GA API has some latency and GA is not a real time tool. The data freshness on your GA data depends on how much data you get. If you are a small blog it can take 2-4 hours to process the data. If you're a big blog it can take up to 48h. So for that reason I'd query the API every 4 hours or so and just cache the data for all your pages. When you render the page it's just a matter of getting it from the cache/db.
To plot that data there are plenty of options around there. I'd suggest you to start with Google Chart Tools.

Resources