From 5e89ae200da6ddf30eae7ca8163cb614ea1ec887 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Fri, 10 Jul 2015 13:47:03 -0500 Subject: [PATCH 1/3] feat(analytics): Server tweaks Remove duplicate browser-side tracking for new user registration. Move quest tracking to server side and expand to include all quest accept/reject actions. --- website/public/js/controllers/authCtrl.js | 9 -------- .../public/js/controllers/inventoryCtrl.js | 1 - website/src/controllers/groups.js | 22 +++++++++++++++++++ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/website/public/js/controllers/authCtrl.js b/website/public/js/controllers/authCtrl.js index 89be71c6af..728ec6cd4e 100644 --- a/website/public/js/controllers/authCtrl.js +++ b/website/public/js/controllers/authCtrl.js @@ -50,15 +50,6 @@ angular.module('habitrpg') if($rootScope.selectedLanguage) url = url + '?lang=' + $rootScope.selectedLanguage.code; $http.post(url, scope.registerVals).success(function(data, status, headers, config) { runAuth(data.id, data.apiToken); - if (status == 200) { - if (data.auth.facebook) { - Analytics.updateUser({'email':data.auth.facebook._json.email,'language':data.preferences.language}); - Analytics.track({'hitType':'event','eventCategory':'acquisition','eventAction':'register','authType':'facebook'}); - } else { - Analytics.updateUser({'email':data.auth.local.email,'language':data.preferences.language}); - Analytics.track({'hitType':'event','eventCategory':'acquisition','eventAction':'register','authType':'email'}); - } - } }).error(errorAlert); }; diff --git a/website/public/js/controllers/inventoryCtrl.js b/website/public/js/controllers/inventoryCtrl.js index afd85b625b..5a313b67f6 100644 --- a/website/public/js/controllers/inventoryCtrl.js +++ b/website/public/js/controllers/inventoryCtrl.js @@ -180,7 +180,6 @@ habitrpg.controller("InventoryCtrl", $rootScope.selectedQuest = undefined; } $scope.questInit = function(){ - Analytics.track({'hitType':'event','eventCategory':'behavior','eventAction':'quest','owner':true,'response':'accept','questName':$scope.selectedQuest.key}); $rootScope.party.$questAccept({key:$scope.selectedQuest.key}, function(){ $rootScope.party.$get(); }); diff --git a/website/src/controllers/groups.js b/website/src/controllers/groups.js index 9eac2c8af4..a5006bbd3b 100644 --- a/website/src/controllers/groups.js +++ b/website/src/controllers/groups.js @@ -17,6 +17,7 @@ var EmailUnsubscription = require('./../models/emailUnsubscription').model; var isProd = nconf.get('NODE_ENV') === 'production'; var api = module.exports; var pushNotify = require('./pushNotifications'); +var analytics = utils.analytics; /* ------------------------------------------------------------------------ @@ -919,6 +920,13 @@ api.questAccept = function(req, res, next) { // or everyone has either accepted/rejected, then we store quest key in user object. _.each(group.members, function(m){ if (m == user._id) { + var analyticsData = { + category: 'behavior', + owner: true, + response: 'accept', + questName: key + }; + analytics.track('quest',analyticsData); group.quest.members[m] = true; group.quest.leader = user._id; } else { @@ -957,6 +965,13 @@ api.questAccept = function(req, res, next) { // Party member accepting the invitation } else { if (!group.quest.key) return res.json(400,{err:'No quest invitation has been sent out yet.'}); + var analyticsData = { + category: 'behavior', + owner: false, + response: 'accept', + questName: group.quest.key + }; + analytics.track('quest',analyticsData); group.quest.members[user._id] = true; User.update({_id:user._id}, {$set: {'party.quest.RSVPNeeded': false}}).exec(); questStart(req,res,next); @@ -968,6 +983,13 @@ api.questReject = function(req, res, next) { var user = res.locals.user; if (!group.quest.key) return res.json(400,{err:'No quest invitation has been sent out yet.'}); + var analyticsData = { + category: 'behavior', + owner: false, + response: 'reject', + questName: key + }; + analytics.track('quest',analyticsData); group.quest.members[user._id] = false; User.update({_id:user._id}, {$set: {'party.quest.RSVPNeeded': false, 'party.quest.key': null}}).exec(); questStart(req,res,next); From 175b4fa6e029c5d4744885e323cab2ebf9040bc6 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Fri, 10 Jul 2015 13:51:27 -0500 Subject: [PATCH 2/3] fix(analytics): Correct quest key --- website/src/controllers/groups.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/src/controllers/groups.js b/website/src/controllers/groups.js index a5006bbd3b..26e33fab39 100644 --- a/website/src/controllers/groups.js +++ b/website/src/controllers/groups.js @@ -987,7 +987,7 @@ api.questReject = function(req, res, next) { category: 'behavior', owner: false, response: 'reject', - questName: key + questName: group.quest.key }; analytics.track('quest',analyticsData); group.quest.members[user._id] = false; From 3bbde2a548fda3b84b1601c422ce947960aa7376 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Fri, 10 Jul 2015 13:57:46 -0500 Subject: [PATCH 3/3] fix(analytics): Include GA label for quest actions --- website/src/controllers/groups.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/website/src/controllers/groups.js b/website/src/controllers/groups.js index 26e33fab39..77487ab292 100644 --- a/website/src/controllers/groups.js +++ b/website/src/controllers/groups.js @@ -924,6 +924,7 @@ api.questAccept = function(req, res, next) { category: 'behavior', owner: true, response: 'accept', + gaLabel: 'accept', questName: key }; analytics.track('quest',analyticsData); @@ -969,6 +970,7 @@ api.questAccept = function(req, res, next) { category: 'behavior', owner: false, response: 'accept', + gaLabel: 'accept', questName: group.quest.key }; analytics.track('quest',analyticsData); @@ -987,6 +989,7 @@ api.questReject = function(req, res, next) { category: 'behavior', owner: false, response: 'reject', + gaLabel: 'reject', questName: group.quest.key }; analytics.track('quest',analyticsData);