diff --git a/javascripts/govuk/analytics/google-analytics-universal-tracker.js b/javascripts/govuk/analytics/google-analytics-universal-tracker.js index ac18ac90..3a64a2c7 100644 --- a/javascripts/govuk/analytics/google-analytics-universal-tracker.js +++ b/javascripts/govuk/analytics/google-analytics-universal-tracker.js @@ -72,11 +72,7 @@ // Label is optional if (typeof options.label === 'string') { evt.eventLabel = options.label - } - - // Page is optional - if (typeof options.page === 'string') { - evt.page = options.page + delete options.label } // Value is optional, but when used must be an @@ -85,21 +81,19 @@ if (options.value || options.value === 0) { value = parseInt(options.value, 10) if (typeof value === 'number' && !isNaN(value)) { - evt.eventValue = value + options.eventValue = value } + delete options.value } // Prevents an event from affecting bounce rate // https://developers.google.com/analytics/devguides/collection/analyticsjs/events#implementation if (options.nonInteraction) { - evt.nonInteraction = 1 + options.nonInteraction = 1 } - // Set the transport method for the event - // Typically used for enabling `navigator.sendBeacon` when the page might be unloading - // https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#transport - if (options.transport) { - evt.transport = options.transport + if (typeof options === 'object') { + $.extend(evt, options) } sendToGa('send', evt) diff --git a/spec/unit/analytics/google-analytics-universal-tracker.spec.js b/spec/unit/analytics/google-analytics-universal-tracker.spec.js index 7bc4a002..8a6f10a0 100644 --- a/spec/unit/analytics/google-analytics-universal-tracker.spec.js +++ b/spec/unit/analytics/google-analytics-universal-tracker.spec.js @@ -100,6 +100,13 @@ describe('GOVUK.GoogleAnalyticsUniversalTracker', function () { ) }) + it('tracks custom dimensions', function() { + universal.trackEvent('category', 'action', {dimension29: 'Home'}) + expect(window.ga.calls.mostRecent().args).toEqual( + ['send', {hitType: 'event', eventCategory: 'category', eventAction: 'action', dimension29: 'Home'}] + ) + }) + it('the label is optional', function () { universal.trackEvent('category', 'action') expect(window.ga.calls.mostRecent().args).toEqual(