The work of the company EastBanc Technologies often faces the task of not just analyzing the statistics of attendance and behavior according to geographical, platform and demographic characteristics, but according to the principle that a particular user does on the portal, in the smallest detail. For us, as for developers of corporate systems, this information is critical from the point of view of system development.
For example, we now have a SharePoint portal in our work, which is used for remote settlement and financial services for contractors of the customer company. Each counterparty has several users - from 1 to 10. We wanted to understand how they handle this or that functionality. To describe their behavior for themselves, we used Google Analytics.
Why we did not interview the focus group? In our experience, polls are useless, as a result you always get distorted information, because A certain percentage of people can get rid of a formal reply, dramatize or, on the contrary, put everything in a more rosy light, and finally, just lie unmotivated (and that, anything can happen :)). An accurately tracked chain of user actions on the portal is what gives objective, relevant, useful information. Also, good analytics help differently evaluate different groups of counterparties, among which there are both large enterprises and very small ones, and it is impossible to level them with the same brush.
')
Restrictions
As you know, Google prohibits to save data that can uniquely identify the user.
We quote user agreement:
7.PRIVACY. If you want to use your site, it’s not a problem. (or such third parties' website (s)). It is your responsibility to ensure that your site has access to all websites. Anonymous? Traffic?To overcome these limitations and extend data for a more comprehensive analysis, Justin Cutroni, Analytics Evangelist at Google,
suggests adding a user ID to Google Analytics .
In essence, it is proposed to identify the user with some unique GUID, then use
Data Query Feed to upload data to your system, match one-to-one correspondence with users and build analytics on your own.
The big and most important “but” of such a decision is difficult, expensive and inconvenient. Obviously, it’s not easy to implement something like Google Analytics for viewing reports on your side, and is simply an inefficient waste of money.
Decision
That is why, we began to look for another way, and as a result we got the following:
1. All contractors are identified by a contract number or a number in the accounting system, all users are equal to it. Thus, it is possible to use this number, which is not personal data, to identify users.
2. By default, the
variable "visitor" is selected.
Any analytics can now be carried out in the context of all user counterparties. To do this, on the pages of Google Analytics, in the sections that require filtering / grouping / adding to the display, you must select the My variables-> My variable parameter (value 01).
Additionally, we divided users by language and divided counterparties and employees of the client company. Tracking on language goes automatically due to the choice of a standard method of installation of a location of the user.
The division into users into contractors and employees of the client company occurs using the “user token”:
authenticated = Tools.IsUserIdentified(out agencyCode); marker = authenticated ? (agencyCode ?? ""):"";%> -: _gaq.push(['_setCustomVar', 1, '', '<%=marker%>', 1]);
Thus, we look at the attempt to authorize the user and get / do not get the counterparty code. If you are not logged in, we regard it as an anonymous; logged in, but the agent code did not return - as an employee; the counterparty code returned is the counterparty.
3. Added page level tracking. In each master page of our SharePoint portal, we added code that tracks this variable:
_gaq.push(['_setCustomVar', 1, '', '<%=marker%>', 1]);
4. Added tracking on WCF-services damage: we linked the counterpart codes to the page view, but within one page the counterpart can perform many actions. Calls to WCF go through a special layer of services. Until now, this has given us two advantages: you do not need to copy the cumbersome code by organizing ajax calls and you can do error handling in a single style at the expense of the error handler in the base class. That is, the code that needs data is not polluted by small technical details.
Through the same services, we also posted event tracking in case of successful completion of the call. All this works on promises, so the introduction of this functionality in the service did not require any changes in the code-consumer.
We have created the following custom categories and types of events within the category (this is done according to the GA standard).
Category List:
a. MakeToDo
b. Exchange rates
c. Dashboard
d. Payments
e. Accounts
List of events that we track:
a. View list
b. View object
c. Deleting an object
d. Object change
e. File upload
f. Acceptance of a settlement document
g. Cancellation / renewal of an account.
(Recall that this system, which we consider as an example, regulates the settlement and financial relationship between contractors and the customer company, this is due to the names of categories and events).
Take for example one event:
getDocumentsList = function (data) { return dispatcher.call( { method: ETR.HttpVerb.POST, data: data, relativeUrl: serviceRelativePath + '/documentsList' }) .fail(dispatcher.faultHandler) .done(function () { ETR.gatc.track(ETR.gatc.categories.JustificationDocuments, ETR.gatc.actions.ListBrowsing); }); };
5. In order to see which agents have what actions and in what scope were performed on the portal, you need to go to the Behavior-> Events-> Event Map and in the left corner of the screen in the green drop-down list select My Variables-> My Variable (value 01 ). We get about the following picture:
Clickable image
<
">What we got in the end:
- We track visits to all pages of the customer’s settlement and financial system.
- Analytics, among other things, is conducted in the context of languages ​​(there are two of them now - Russian and English).
- Analytics is conducted in the context of counterparties. In order to see the history of visits, go to the section Personalized-> Variables, there we see the section Users. Going into it, we see about the following image:
Clickable image
<
>Analytics is conducted, first of all, by counterparties. Also, separate items are anonymous users and employees of the customer company.
Why was it important for us to get a solution that will allow us to accurately assess how users behave on the portal? Because it is important for us to understand whether people use, the interfaces we create, the modules, the business processes as it was intended.
And don't forget about another important factor: we spent very reasonable time and effort on setting up Google Analytics properly, using completely standard tools. Everything, as we love :)