Skip to content
This repository was archived by the owner on Aug 14, 2019. It is now read-only.

Commit 4c9d10d

Browse files
committed
Support product-level custom dimensions and metrics and update tests.
1 parent 41d2c69 commit 4c9d10d

File tree

3 files changed

+8690
-18
lines changed

3 files changed

+8690
-18
lines changed

lib/index.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,7 @@ GA.prototype.checkoutStepViewedEnhanced = function(track) {
683683

684684
each(products, function(product) {
685685
var productTrack = createProductTrack(track, product);
686-
enhancedEcommerceTrackProduct(productTrack, self._trackerName);
686+
enhancedEcommerceTrackProduct(productTrack, self._trackerName, opts);
687687
});
688688
window.ga(self._trackerName + 'ec:setAction', 'checkout', {
689689
step: props.step || 1,
@@ -744,7 +744,7 @@ GA.prototype.orderCompletedEnhanced = function(track) {
744744

745745
each(products, function(product) {
746746
var productTrack = createProductTrack(track, product);
747-
enhancedEcommerceTrackProduct(productTrack, self._trackerName);
747+
enhancedEcommerceTrackProduct(productTrack, self._trackerName, opts);
748748
});
749749

750750
window.ga(self._trackerName + 'ec:setAction', 'purchase', {
@@ -809,7 +809,7 @@ GA.prototype.productAddedEnhanced = function(track) {
809809
var opts = this.options;
810810

811811
this.loadEnhancedEcommerce(track);
812-
enhancedEcommerceProductAction(track, 'add', null, self._trackerName);
812+
enhancedEcommerceProductAction(track, 'add', null, self._trackerName, opts);
813813
this.pushEnhancedEcommerce(track, opts, self._trackerName);
814814
};
815815

@@ -827,7 +827,7 @@ GA.prototype.productRemovedEnhanced = function(track) {
827827
var opts = this.options;
828828

829829
this.loadEnhancedEcommerce(track);
830-
enhancedEcommerceProductAction(track, 'remove', null, self._trackerName);
830+
enhancedEcommerceProductAction(track, 'remove', null, self._trackerName, opts);
831831
this.pushEnhancedEcommerce(track, opts, self._trackerName);
832832
};
833833

@@ -849,7 +849,7 @@ GA.prototype.productViewedEnhanced = function(track) {
849849
this.loadEnhancedEcommerce(track);
850850
// list property is optional
851851
if (props.list) data.list = props.list;
852-
enhancedEcommerceProductAction(track, 'detail', data, self._trackerName);
852+
enhancedEcommerceProductAction(track, 'detail', data, self._trackerName, opts);
853853
this.pushEnhancedEcommerce(track, opts, self._trackerName);
854854
};
855855

@@ -871,7 +871,7 @@ GA.prototype.productClickedEnhanced = function(track) {
871871
this.loadEnhancedEcommerce(track);
872872
// list property is optional
873873
if (props.list) data.list = props.list;
874-
enhancedEcommerceProductAction(track, 'click', data, self._trackerName);
874+
enhancedEcommerceProductAction(track, 'click', data, self._trackerName, opts);
875875
this.pushEnhancedEcommerce(track, opts, self._trackerName);
876876
};
877877

@@ -1017,7 +1017,7 @@ GA.prototype.productListFilteredEnhanced = function(track) {
10171017
* @param {Track} track
10181018
*/
10191019

1020-
function enhancedEcommerceTrackProduct(track, trackerName) {
1020+
function enhancedEcommerceTrackProduct(track, trackerName, opts) {
10211021
var props = track.properties();
10221022
var product = {
10231023
id: track.productId() || track.id() || track.sku(),
@@ -1034,6 +1034,8 @@ function enhancedEcommerceTrackProduct(track, trackerName) {
10341034
// https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#measuring-transactions
10351035
var coupon = track.proxy('properties.coupon');
10361036
if (coupon) product.coupon = coupon;
1037+
1038+
product = extend(product, metrics(props, opts));
10371039
window.ga(trackerName + 'ec:addProduct', product);
10381040
}
10391041

@@ -1046,8 +1048,8 @@ function enhancedEcommerceTrackProduct(track, trackerName) {
10461048
* @param {Object} data
10471049
*/
10481050

1049-
function enhancedEcommerceProductAction(track, action, data, trackerName) {
1050-
enhancedEcommerceTrackProduct(track, trackerName);
1051+
function enhancedEcommerceProductAction(track, action, data, trackerName, opts) {
1052+
enhancedEcommerceTrackProduct(track, trackerName, opts);
10511053
window.ga(trackerName + 'ec:setAction', action, data || {});
10521054
}
10531055

0 commit comments

Comments
 (0)