We track search terms (e.g. michael kors handbags) entered on our site as an event (i.e. captured in eventLabel). We have a custom dimension that parse the list of product ids returned on a search page.
Example:
'michael kors handbag' returned 5 products on search page. Custom Dimension 1 parses a list of product ids: '12345, 23456, 34567, 45678, 56789'. On an event report, when I use this custom dimension 1 as a secondary dimension, no data is returned. I am seeing the two tags fired (i.e. one as an event hit and the other as a pageview hit) - I am not able to figure out why the custom dimension 1 cannot be used as a secondary dimension.
Any insight is helpful.
Thank you.
The dimension needs to be scoped at Session level, so it's available for all the hits within a session.
Probably the dimension is set at hit level, so the information doesn't persist, when you try to relate it to the event, GA cannot do it.
I would like to create a custom report that will have a table like so:
page name visit time
page1 15:30:15
page2 15:31:12
page1 15:30:45
and so on.
Is it possible to create such a report in Google Analytics?
The highest level of precision available by default is the minute available with the ga:dateHourMinute dimension:
https://ga-dev-tools.appspot.com/dimensions-metrics-explorer/?#ga:dateHourMinute
If you need more precision than minutes, you have to implement a custom dimension (eg to record seconds or milliseconds).
Here is an example for implementing such hit timestamp with millisecond precision using GTM:
https://www.simoahava.com/analytics/13-useful-custom-dimensions-for-google-analytics/#11-hit-timestamp
You need to pass a custom dimension (called in this case 'visit time') at hit level that contains the timestamp of the hit when it is sent to Analytics.
I have a goal completion when user visit the specific page. Also I'm sending event from this page to count how many times user visited this page during the session (and for some other info).
Now I'm trying to make a custom report (flat table) that have info about:
Session ID (custom dimension),
Event Category (secondary dimension),
Goal completion (metric)
and Pages/Session metric.
In this case I see that Goal completion is zero for every session although I see events from the page (and I know that goal was completed in every session cause it's testing site).
If I remove Event category from custom report then Goal completion equals 1 for each session (that is true info).
And if I'm trying to use Event category in filter it is the same situation - I don't see Goal completed.
'Event Category' is a hit-level dimension, but other dimensions and metrics have session-level. It's invalid dimension-metric combination.
Try to use custom segment with conditions: include sessions where 'Event Category' = [your value].
Good explanation of scope in GA: https://www.bounteous.com/insights/2016/11/30/understanding-scope-google-analytics-reporting/
I've created a custom report with dimensions:
Event Category, Event Label, Page Title
And want to see this metrics:
Total Events
Pageviews
Avg. Time on Page
Also, I applied a filter by event category.
I see my report with some values in Total Events column, but Pageviews and Avg. Time on Page are always zero. What is the problem?
Your problem is occuring due to the custom report you have generated.
Events by definition are not page views. This means that an Event dimension (category, action, label) cant have page view metrics such as pageviews or average time on page, because that information does not relate to the specific event.
One way to product the report you might want is to create a segment for sessions which contain the event you are interested in, then create a Custom Report with the dimension pages, total event, pageviews, and time on page.
Update:
Understanding what you are trying to achieve, you will need to do two reports, and merge them on pagePath (assuming there is only one video per page).
Report 1:
Event Category, Event Label, Page Path, Total Events.
Event Category Event Label Page Path Total Events
Video Id1 /video1 2
Video Id2 /video2 3
Report 2: Page Path, Page Views, Time on Page
Report two requires a segment: Sessions that contain Event Category == VideoView (assumed category).
Page Path, Page View, Average Time on Page.
Page Path Page views Average Time on page
/video1 5 0:42
/video1 10 0:16
The final merged dataset would look like
Event Category Event Label Page Path Total Events Page views Average Time on page
Video Id1 /video1 2 5 0:42
Video Id2 /video2 3 10 0:16
I had the same problem and as sdhaus says you'd need to merge two reports. I didn't want to include even more vendors but I found nowadays Looker Studio does exactly that: you can just merge the Analytics data source with another instance of itself and voila: match on page title or path and you're done!
I am trying to use google universal analytics and its custom dimensions.
On one page, I want to send multiple values for one (and one only) dimension.
I tried:
ga('send', 'pageview', {'dimension1': 'grumpy cat'})
ga('send', 'pageview', {'dimension1': 'happy cat'})
When I use google API, I can get for my dimension1 all the values I just sent - so it works well.
However I think (I am not sure about it) that I should not send several times a pageview hit on the same page because it would disrupt the pageview metric.
So I tried to use a custom metric (pageview is a metric after all):
ga('send', 'metric1', {'dimension1': 'grumpy cat'})
ga('send', 'metric1', {'dimension1': 'happy cat'})
But this one doesn't work at all :(
It seems ga.('send'... only accepts pageview but it is weird (why specify pageview in the arguments if it is the only value possible?)
How can I solve my problem? Is it just a syntax issue, is it not possible with custom dimension / custom metric? Can I actually use pageview to do it? Should I use custom events instead of that?
Thank you!
* edit *
I actually found out that I may use an event with a label like:
ga('send', 'event', 'cat', 'view', 'grumpy')
ga('send', 'event', 'cat', 'view', 'happy')
(If anyone can confirm it or have comments I would be happy with that)
I had a similar problem a while back. The thing is, you cannot push multiple values to a single custom variable (dimension or metric) in both Google Analytics (GA) and Universal Analytics (UA). What happens when you push more than one value to a custom variable, dimension, or metric for a single page (or session or user, depending upon the scope of the custom variable, dimension or metric, if you're using UA) is that the last reported value is the only one that is recorded. The last value overrides the previously set value. So, you have tried to record two pageviews with 2 different values for your custom variable (or dimension).
In your case, say a person loads a search results page after having included two categories, grumpy cat and happy cat, and you want to record both of them in a custom variable or dimension by reporting the variable (or dimension) twice, and if you send them in the order you mentioned,
ga('send', 'pageview', {'dimension1': 'grumpy cat'});
ga('send', 'pageview', {'dimension1': 'happy cat'});
you are simply recording two different pageviews (which will skew your reports in innumerable ways, depending on the number or categories you may have). For example, if a person visits more than 5 categories, you will have duplicate pageviews, and your time on page will be drastically reduced, as according to UA (or GA) these pageviews (except for the last one) would have lasted for less than one second.
Also, any events you wanted to link to those custom variables (or dimensions), would only be linked to the last pushed pageview or custom variable (or dimension). As an example, if you had an event tracking set up to identify how many people interacted with the search results, and if you then wanted to filter by category (dimension1 in your case now), to know how many people interacted with the page when dimension1 equals grumpy cat you would get 0, as the events would have only been recorded for the pageview with ddimension1 equal to happy cat because that was the page which GA (or UA) thinks the user had been viewing when firing the event, and that page only had dimension1 set to happy cat. Since those two calls are async, you would actually never be able to know if the events were sent to the pageview you think it went to, even as I explained.
The better way to record this type of data would be to use url-encoded category names, space separated, and a space appended to the end of the list also. As an example, you must send the pageview as,
ga('send','pageview',{'dimension1':'grumpy-cat happy-cat '});
or better, as,
ga('set',{'dimension1':'grumpy-cat happy-cat '});
ga('send','pageview');
Note the space at the end also. This extra space allows you to filter any report based on the custom variable using the reg-ex <categoryName>\s. As an example, to find out how many people viewed a page with category Grumpy Cat, you will filter your report such that the dimension1 matches regex grumpy\-cat\s. I have escaped the - character in regex using \-, and \s stands for a whitespace character. The good thing is, such a report will fetch you all pageviews (or whatever you want to look at), those with only the grumpy cat as category name, as well as those pages which have grumpy cat in the categories to which a page belongs.
A way to add subcategories is to send dimensions as cat1 cat1-subcat1 cat1-subcat2 cat2 cat2-subcat1 so that the regex cat1\s will take care of all category level pages, whereas the regex cat1 will take care of all pages which have category cat1 or which have a subcategory belonging to cat1.
Hope that helps. :)
On a side note, using events for views of a page containing a category is not a nice way of recording it. Because, if you assign dimensions (and this is one of the reasons why custom dimensions were introduced, as different sites have different categories and Google can't name all), your events will also carry the dimensions of the page and it helps a lot to identify which categories are in need of what, by simply segmenting your reports by, in your case, dimension1. For example, you will get to know which category has highest SEO visits and which has the best conversion rates, and stuff. Happy analysing! :)
As it's already stated previously, you can not push multiple values at once. However, this is just an indication the approach to collect events data is not right, that is this is not a page view event anymore. My case was different, but the solution breaks down as follows:
You have multiple values to push into UA at once, say cat's features such as white, grumpy, hungry
Now, you actually realise that this is not a page view event, but rather yet another dimension - cat views/conditions/features - name it whatever you like;
You create a custom event in your GTM, called 'cat-condition';
You create a new tag in GTM collecting cats condition;
You create that custom dimension in GA and GTM, and every time you have to record cats condition you do something similar to the following (extremely simplified code sample)
['white', 'grumpy', 'hungry'].forEach(condition =>
dataLayer.push({event: 'cat-condition', condition})
)
Code snippet assumes you have GTM container configure on the page to enable dataLayer.
Finally, create a custom report in GA to deal with cat conditions. Surely, you can push more details with every single cat's condition to be able to relate it with the page details etc, but this way you have quite a flexible solution with the data being normalised right from the beginning.