7
votes

We have a website that uses enhanced analytics. On the page where a list of products is viewed the tracking code looks like this:

window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga.l = +new Date;
ga('create', 'xxxxxx', 'auto', {
    anonymizeIp: true
});

ga('require', 'ec');
ga('set', 'currencyCode', 'EUR');
ga('ec:addImpression', {
    'id': '5',
    'name': 'Lorem Ipsum',
    'category': 'Lorem',
    'list': 'lorem-list',
    'dimension1': '15',
    'dimension2': 'Lorem'
});
ga('ec:addImpression', {
    'id': '6',
    'name': 'Lorem Ipsum',
    'category': 'Lorem',
    'list': 'lorem-list',
    'dimension1': '16',
    'dimension2': 'Lorem'
});
ga('ec:addImpression', {
    'id': '7',
    'name': 'Lorem Ipsum',
    'category': 'Lorem',
    'list': 'lorem-list',
    'dimension1': '17',
    'dimension2': 'Lorem'
});    
ga('send', 'pageview');

The impressions are measured correctly (id, name, category, list etc) but the custom dimensions (dimension1 and dimension2) seem to be null for all measurements (been gathering for 3 weeks now).

As far as I can see the code is exactly as stated in the documentation: https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#measuring-activities

What am I overseeing?

Update: As requested the (anonymised) debug log using chrome GA:debug where it seems the dimensions are provided correctly:

analytics_debug.js:10 Running analytics_debug.js. This script is intended for testing and debugging only.
log @ analytics_debug.js:10
J @ analytics_debug.js:9
(anonymous) @ analytics_debug.js:76
(anonymous) @ analytics_debug.js:76
analytics_debug.js:10 Initializing Google Analytics.
analytics_debug.js:10 Loading resource for plugin: ec
analytics_debug.js:10 Loading script: "https://www.google-analytics.com/plugins/ua/ec.js"
analytics_debug.js:10 Running command: ga("create", "UA-xxx-1", "auto", {anonymizeIp: true})
analytics_debug.js:10 Creating new tracker: t0
analytics_debug.js:10 Auto cookieDomain found: "myclient.nl"
analytics_debug.js:10 This field cannot be set in a create method. Please use ga("set", "anonymizeIp", true);
log @ analytics_debug.js:10
J @ analytics_debug.js:9
Td @ analytics_debug.js:13
ad @ analytics_debug.js:51
Z.create @ analytics_debug.js:69
Y.b.(anonymous function) @ analytics_debug.js:38
jf.R @ analytics_debug.js:68
jf.H @ analytics_debug.js:66
Z.P @ analytics_debug.js:73
cd @ analytics_debug.js:59
A @ analytics_debug.js:59
(anonymous) @ analytics_debug.js:76
(anonymous) @ analytics_debug.js:76
analytics_debug.js:10 Running command: ga("require", "ec")
analytics_debug.js:10 Waiting on require of "ec" to be fulfilled.
analytics_debug.js:10 Registered new plugin: ga(provide, "render", Function)
analytics_debug.js:10 Running command: ga("require", "ec")
analytics_debug.js:10 Waiting on require of "ec" to be fulfilled.
analytics_debug.js:10 Executing Google Analytics commands.
analytics_debug.js:10 Registered new plugin: ga(provide, "ec", Function)
analytics_debug.js:10 Running command: ga("require", "ec")
analytics_debug.js:10 Plugin "ec" intialized on tracker "t0".
analytics_debug.js:10 Running command: ga("set", "currencyCode", "EUR")
analytics_debug.js:10 Running command: ga("ec:addImpression", {id: "1", name: "xxxx", category: "xxx", list: "xxxx", dimension1: "7", dimension2: "xxx"})
analytics_debug.js:10 Running command: ga("ec:addImpression", {id: "2", name: "xxxx", category: "xxx", list: "xxxx", dimension1: "7", dimension2: "xxx"})
analytics_debug.js:10 Running command: ga("ec:addImpression", {id: "3", name: "xxxx", category: "xxx", list: "xxxx", dimension1: "7", dimension2: "xxx"})
analytics_debug.js:10 Running command: ga("ec:addImpression", {id: "7", name: "xxxx", category: "xxx", list: "xxxx", dimension1: "7", dimension2: "xxx"})
analytics_debug.js:10 Running command: ga("ec:addImpression", {id: "8", name: "xxxx", category: "xxx", list: "xxxx", dimension1: "7", dimension2: "xxx"})
analytics_debug.js:10 Running command: ga("send", "pageview")
analytics_debug.js:10 
Sent beacon:

analytics_debug.js:10 _j1                                              (&jid)       
analytics_debug.js:10 adSenseId                                        (&a)         xxxxxxxxx
analytics_debug.js:10 apiVersion                                       (&v)         1
analytics_debug.js:10 clientId                                         (&cid)       xxxxxxxxx
analytics_debug.js:10 currencyCode                                     (&cu)        EUR
analytics_debug.js:10 ec:impression list "1" name                      (&il1nm)     xxx
analytics_debug.js:10 ec:impression list "1" product "1" category      (&il1pi1ca)  xxx
analytics_debug.js:10 ec:impression list "1" product "1" dimension "1" (&il1pi1cd1) 7
analytics_debug.js:10 ec:impression list "1" product "1" dimension "2" (&il1pi1cd2) xxx
analytics_debug.js:10 ec:impression list "1" product "1" id            (&il1pi1id)  1
analytics_debug.js:10 ec:impression list "1" product "1" name          (&il1pi1nm)  xxx
analytics_debug.js:10 ec:impression list "1" product "2" category      (&il1pi2ca)  xxx
analytics_debug.js:10 ec:impression list "1" product "2" dimension "1" (&il1pi2cd1) 7
analytics_debug.js:10 ec:impression list "1" product "2" dimension "2" (&il1pi2cd2) xxx
analytics_debug.js:10 ec:impression list "1" product "2" id            (&il1pi2id)  2
analytics_debug.js:10 ec:impression list "1" product "2" name          (&il1pi2nm)  xxx
analytics_debug.js:10 ec:impression list "1" product "3" category      (&il1pi3ca)  xxx
analytics_debug.js:10 ec:impression list "1" product "3" dimension "1" (&il1pi3cd1) 7
analytics_debug.js:10 ec:impression list "1" product "3" dimension "2" (&il1pi3cd2) xxx
analytics_debug.js:10 ec:impression list "1" product "3" id            (&il1pi3id)  3
analytics_debug.js:10 ec:impression list "1" product "3" name          (&il1pi3nm)  xxx
analytics_debug.js:10 ec:impression list "1" product "4" category      (&il1pi4ca)  xxx
analytics_debug.js:10 ec:impression list "1" product "4" dimension "1" (&il1pi4cd1) 7
analytics_debug.js:10 ec:impression list "1" product "4" dimension "2" (&il1pi4cd2) xxx
analytics_debug.js:10 ec:impression list "1" product "4" id            (&il1pi4id)  7
analytics_debug.js:10 ec:impression list "1" product "4" name          (&il1pi4nm)  xxx
analytics_debug.js:10 ec:impression list "1" product "5" category      (&il1pi5ca)  xxx
analytics_debug.js:10 ec:impression list "1" product "5" dimension "1" (&il1pi5cd1) 7
analytics_debug.js:10 ec:impression list "1" product "5" dimension "2" (&il1pi5cd2) xxx
analytics_debug.js:10 ec:impression list "1" product "5" id            (&il1pi5id)  8
analytics_debug.js:10 ec:impression list "1" product "5" name          (&il1pi5nm)  xxx
analytics_debug.js:10 encoding                                         (&de)        UTF-8
analytics_debug.js:10 hitType                                          (&t)         pageview
analytics_debug.js:10 javaEnabled                                      (&je)        0
analytics_debug.js:10 language                                         (&ul)        en-us
analytics_debug.js:10 location                                         (&dl)        https://www.myclient.nl/xxxx
analytics_debug.js:10 screenColors                                     (&sd)        24-bit
analytics_debug.js:10 screenResolution                                 (&sr)        1680x1050
analytics_debug.js:10 title                                            (&dt)        xxxxx - myclient
analytics_debug.js:10 trackingId                                       (&tid)       UA-xxxx-1
analytics_debug.js:10 viewportSize                                     (&vp)        1610x494
1
You've configured dimensions 1 and 2 in your Property settings, and they are both active?nyuen
Yes, both are shown on the property settings page and active for 'product' impressions. I can see them in my custom report but the metrics are empty.Remko
Also, the dimensions are Product scoped?nyuen
Yes, the scope for both is 'product'. The name is 'Resort' but as far as I can see the dimensions are accessed by their default names (like dimension1) and not the given label right?Remko
What I suggest you, is to use GA debug from chrome chrome.google.com/webstore/detail/google-analytics-debugger/… . And attach the hit structure to see if the hit is properly built. Also, delete with some image editor the host parameter and the URL to protect you.Kemen Paulos Plaza

1 Answers

1
votes

My assumption is that there are two problems.

1) You are using product scoped custom dimensions.

As your custom dimensions are product scoped, it is important to note that these dimensions do not attribute to the ID through all stages of Enhanced Ecommerce. This means that the custom dimension will only have data relevant to the hit in which it is sent. In this case, the only metric you will be able to retrieve is 'Impressions'. If you want to view this custom dimensions with other relevant metrics, then you need to include it in each Enhanced Ecommerce hit.

Link for more Enhanced Ecommerce attribution info: https://support.google.com/analytics/answer/6014841?hl=en#product_attribution

Which leads us to:

2) You might be using the wrong metrics with your custom dimensions.

Because these dimensions are only relevant at the point of which they are sent, and given the example you have provided, the only report which can be created is:

Dimensions:

Dimension 1, Dimension 2

Metrics:

Impressions

In the provided custom report example (with author/pageviews), the metric being used is pageviews. As your dimensions are not hit level dimensions, sent along with the page view hit, there is no 'pageview' metrics available for these custom dimensions, leading to why they are empty.