diff --git a/test/server_side/analytics.test.js b/test/server_side/analytics.test.js index c054ee08b9..a67e73b2b7 100644 --- a/test/server_side/analytics.test.js +++ b/test/server_side/analytics.test.js @@ -170,6 +170,47 @@ describe('analytics', function() { el: 'some label' }); }); + + it('if goldCost property is provided, use as value', function() { + analyticsData.goldCost = 5; + + initializedAnalytics.track(event_type, analyticsData); + + expect(googleEvent).to.be.calledOnce; + expect(googleEvent).to.be.calledWith({ + ec: 'behavior', + ea: 'Cron', + ev: 5 + }); + }); + + it('if gemCost property is provided, use as value (overrides goldCost)', function() { + analyticsData.gemCost = 7; + analyticsData.goldCost = 5; + + initializedAnalytics.track(event_type, analyticsData); + + expect(googleEvent).to.be.calledOnce; + expect(googleEvent).to.be.calledWith({ + ec: 'behavior', + ea: 'Cron', + ev: 7 + }); + }); + + it('if gaValue property is provided, use as value (overrides gemCost)', function() { + analyticsData.gemCost = 7; + analyticsData.gaValue = 5; + + initializedAnalytics.track(event_type, analyticsData); + + expect(googleEvent).to.be.calledOnce; + expect(googleEvent).to.be.calledWith({ + ec: 'behavior', + ea: 'Cron', + ev: 5 + }); + }); }); }); diff --git a/website/src/analytics.js b/website/src/analytics.js index 2e20da99da..ff2a350219 100644 --- a/website/src/analytics.js +++ b/website/src/analytics.js @@ -39,6 +39,9 @@ function _sendDataToGoogle(eventType, data) { var label = _generateLabelForGoogleAnalytics(data); if(label) { eventData.el = label; } + var value = _generateValueForGoogleAnalytics(data); + if(value) { eventData.ev = value; } + ga.event(eventData).send(); } @@ -56,6 +59,20 @@ function _generateLabelForGoogleAnalytics(data) { return label; } +function _generateValueForGoogleAnalytics(data) { + var value; + var POSSIBLE_VALUES = ['gaValue', 'gemCost', 'goldCost']; + + _(POSSIBLE_VALUES).each(function(key) { + if(data[key]) { + value = data[key]; + return false; // exit _.each early + } + }); + + return value; +} + function trackPurchase(data) { _sendPurchaseDataToAmplitude(data); _sendPurchaseDataToGoogle(data); @@ -70,7 +87,7 @@ function _sendPurchaseDataToAmplitude(data) { } function _formatDataForAmplitude(data) { - var PROPERTIES_TO_SCRUB = ['uuid', 'user', 'purchaseValue', 'gaLabel']; + var PROPERTIES_TO_SCRUB = ['uuid', 'user', 'purchaseValue', 'gaLabel', 'gaValue']; var event_properties = _.omit(data, PROPERTIES_TO_SCRUB); var ampData = {