I've just found out that gtag limits hit payloads to 8k. If your request is larger it get rejected with a 413 error.
In my case it's sending the GA4 view_item_list event with about 50 products.
Is it possible to split up the data into multiple payloads, and still have it register as one list view?
In GA4 it's made a little worse as it bundles multiple events into the one payload, even if it would make the payload too large. Thus other small events are also lost.
Using product data uploads would not be a great option as our solution will be used on many sites where it would be hard to get them to manage those product lists.
Sending events on only visible products may work, but it would then greatly inflate the list view counts.
You can send products to different events by keeping the numbering of their position. This is what is normally done with impressions also in Enhanced Ecommerce in Universal Analytics, so that the information on the products actually viewed by the user is sent when they enter the user's view port. So for example, in the first event the first 4 products of list 'A' will have positions 1, 2, 3 and 4. The second group of products displayed will be sent in another event always with list 'A' and position 5, 6, 7 and 8 and so on.
Note: sending all the products of a list together in one shot, for the reason mentioned above, makes you lose the meaning of impressions, since on opening the page the product in position 80 will be seen for Analytics as the product in position 1, but most likely the one in position 80 will almost never be seen (so it should not be sent until it has actually been displayed).
Related
recently I tried to prepare a Product List analysis. I was interested in how products on particular possitions are clickable, and then added to the basket and finally purchased.
One of the metrics that affect effectiveness is Product List Views - the number of times a given item on the list was viewed by the user. But when I started to analyze the data, one thing disturbed me. Well, on our website, immediately after entering, 18 products are loaded automaticlly, 3 in each line (and we send to GA ec: impression list for each product). And strangely, according to Product List Views, each item has a different number of views. Strange all the more because all products are loaded immediately. Even more bizarre, even products in one line have different views. And the question - how GA calculates the that metric.
I also checked Google Merchandise Store (to be sure that this is not just our implementation error). And they have similar results. ec: impression list loads when the page is opened for 12 products, 4 per line. in GA the results for each item are different. I checked only for the desktop devices, 1440x900 resolution to minimize the issues of window size and the number of products in the line. Nothing. The results between the products are different
It is also not related with scrolling. in GMS they fire tags on 25, 50 and 75% of page, but events are not related to line with products. On my page there are no scroll events due to infinity scroll we use on product list pages.
So, once again - how GA calculates the metric?
I would like to compare some data between a 3rd party analytics tool and GA.
Now I would love to see the IP addresses that Ga is receiving however it seems that they do not reveal this information, fine, however, I cannot find a way to use the flat table in the GA custom report to show me the following if possible;
Full Date Time (Seems as though they don't want you to have this either)
Browser Version
Browser Width & Height
Page (from the hit)
And I would like this data not to be grouped by the metric, this way I can see that if the same user has hit a page 3 times it isn't grouped.
If anyone can help please let me know. If the question is poorly phrased please let me know.
Thanks,
Connor.
This requires some work, and it will allow the breakdown only for future hits, not for hits that are already collected.
To view individual hits you need to create a hit based dimension that is unique per hit. Unless your page has an amazing amount of traffic a timestamp in milliseconds (e.g. new Date().getTime()) will be sufficient (for your report you might want to format that in a nice way). So in the admin section of your GA property you go to custom definitions, create a hit scoped custom dimension, and then modify your pagecode to send the timestamp to that dimension. Hit scoped means it is attached to the pageview (or other interacton hit) it is sent with.
If you want to break down your report by user you need the clientid (clientid is how Google recognizes that hits belong to the same user). Again, send it as a custom dimension.
This does not tell you how many sessions the user had (there is no session identifier in GA). If you need to know that you can create a session scoped custom dimension and send a random number along ("session scope" means that GA only stores the last value in a session, so you don't need to maintain a session id over multiple pageviews, since the last value will be set for all hits within the session). The number of different sessions ids per client id then tells you the number of sessions per user.
The takeaway is that GA only shows aggregated data, and if you want to defeat this mechanism you need to throw data at it that cannot be aggregated further. You might run into other constraints (i.e. there is a limited number of rows per report).
We are using Google Analytics on a webshop. Recently we have added enhanced ecommerce to measure more events so we can optimize the webshop. But now we are experiencing less pageviews and other data is missing.
I don't know what it is, but on a specific page we are nog measuring anymore, I removed some items from the ga:addImpression data, and now the pageview is measured again.
I can find limits for GA, but I can't find anything for the amount of data that can be send to GA. Because is this seems to be related to the amount of data that is send to GA. If I shorten the name of a product, the pageview is also measured again. GA is practically broken now for us because we are missing huge numbers of pageviews.
Where can I find these limits, or how will I ever know when I'm running into these limits?
In one hand, im not sure how are you building your hits but maybe you should keep in mind the payload limits to send information to GA. (The limit is 8Kb)
In the other hand there is a limit in fact that you should consider (Docs)
This applies to analytics.js, Android iOS SDK, and the Measurement Protocol.
200,000 hits per user per day
500 hits per session
If you go over either of these limits, additional hits will not be processed for that session / day, respectively. These limits apply to Analytics 360 as well.
My best advise is to regulate the amount of events you send really considering which information has value. No doubt EE data is really important so you should partition productImpression hits in multiple ones of the problem is the size. (As shown in the screenshot)
And finally, migrate to GTM.
EDIT: Steps to see what the dataLayer has in it (in a given moment)
A Google Analytics request can send max about 8KB of data:
POST:
payload_data – The BODY of the post request. The body must include
exactly 1 URI encoded payload and must be no longer than 8192 bytes.
URL Endpoint
The length of the entire encoded URL must be no longer than 8000
Bytes.
If your hit exceeds that limit (happens e.g. with large product lists in EEC tracking) it is not (as far as I can tell) processed.
There are also restrictions to field length for some fields (e.g. custom dimension with max 150 bytes, others are detailed in the parameter reference ).
In some cases the data type is relevant, e.g. if in your event tracking the event value is set to a string the call might fail.
I think this is the page you are looking for Quota and limits page can help
These limits apply to the Web Property / Property / Tracking ID.
10 million hits per month per property
If you go over this limit, the Google Analytics team might contact you and ask you upgrade to Analytics 360 or implement client sampling to reduce the amount of data being sent to Google Analytics.
I use Google Analytics Enhanced E-commerce for some shops. On catalog page I have many products and I need to track their impressions. I do not track each product one-by-one, cause it will cause many requests, instead I add all of them through .ec:addImpression and then track entire pack by sending single pageview.
And everything was going well until I faced a problem, that on page with too many products requests to collect stopped working with no error. I've installed analytics debugger for Chrome and found out, that I've exceeded a payload limit, which is set to 8 KB (according to official documentation):
payload_data – The BODY of the post request. The body must include
exactly 1 URI encoded payload and must be no longer than 8192 bytes.
And this is fine, but here's my question: is there any way to overcome this restriction? Maybe some option or method, that will allow not to bother about payload size and it will be automatically split into proper chunks? Or at least a method to get a payload in run-time to check its size. I run through documentation and found nothing.
Note: currently I manually track a "safe" number (which was discovered by experience) of products added by addImpression and then send them by non-interaction pageview hit. Of course, this solves my problem, by I want to know if there's a built-in solution.
Another possibility is to send only true impressions, that is, only for those products/items that the user is actually seeing above the fold. Not all products that you are sending impressions for are actually seen by the user until they scroll down the page below the fold. So this would require a modification to the implementation where you send your impression data as the user scrolls down the page and reveals more products. You can likely send more information with each product and still not exceed the payload, and you get a more accurate measure of your impressions.
Create a product data import that matches your product ids to product to product attributes (name, category, price etc). Wait until the data is processed, then change your tracking code so that only product ids are sent.
That should shrink down the request body enough to send all products, and the ids will be joined with the imported data when the incoming hits are processed.
Imported data is not applied retroactively, so it'S important that you do the data import first.
AFAIK there is no way to get your payload size from google analytics and it's a crying shame that analytics.js does not handle this issue automatically since the analytics.js library which constructs the payloads is best suited to handle this and thus minimise load on Google's servers...
I like Eike's solution, though if your products change a lot it might require automation. As #nyuen implies - sending only real impressions may help and is more accurate.
Another trick is to send the impression one at a time. (As shown or on page load) This will require the smallest change and reduce the payload to well bellow the limit.
I want to create a Google Analytics segment for our users who view at least a certain number of pages on our site. From what I can tell (please correct me if I'm wrong) this is easy to do if you don't care about what kind of page they view: you create a filter for the segment that checks to see if Unique Pageviews is greater than some value such as 4. However our site has a whole bunch of pages that I don't really care if someone reads (our "about page" for example). So what I'm trying to do is create a segment of how many people view at least X pages of what we call "Learning Content" (basically two specific page types on our site). How can I segment the users who read a certain amount of learning content?
Two types of pages fit into our definition of learning content. The first one has a URL matching a regex that sort of looks like /learning_content_1/.* and the second matches regex /learning_content_2/.*. I've already created a content group for learning content that correctly identifies these two content groups. However I wasn't able to find any way to filter a segment based on how many unique pageviews (or even just pageviews) come from a specific content grouping. Is this even possible? If not, how might I work around that?
The research I've done so far: Google Analytics: How to segment by many groups of pages was somewhat helpful but didn't address the question of how to create an actual GA segment based on pageview information for a content grouping or content group.
The only way I can think of handling this, is by associating a specific custom event that gets triggered on this page. Then you can create a segment that matches users who have that event category:
and total events greater than 4:
It's a workaround, and it doesn't work if you are tracking other events, but maybe that works for you?