I'm about to launch a web-site very soon, and I want to track over 500 actions per session. Basicall, I want to track each hover-over, and Google Analytics only supports 500 actions per session. What is the best way to do this reliably but also a relatively inexpensive solution. I'm thinking of something like this...
Batch up events on the client
Send via ajax every N events or seconds
Write to a pretty cheap but reliable persistent store
To batch up the events, simple push them into your own javascript object, maybe with the same signature:
yourEventArray.push(['Category','Action', 'Label']);
Create a function that gets called on some interval:
...page load event...
var gaqTimeout = setTimeout(uploadEvent, 100);
function uploadEvent() {
if (yourEventArray.length > 0) {
// do something like loop through items in array and pop them out once added to _gaq
}
}
How does this apply? If you're talking about queuing GA events to the server for later processing, you should really think about finding a better solution that handles your specific situation.
UPDATE - based on your comment
Other products that I familiar with that do a good job tracking hover events and mouse events:
ClickPath
You could use Piwik with Custom Variables as Events
Yahoo! web analytics
Lastly, check out this great post that contrasts 3 of the most popular Web Analytics tools and their limitations.
My 2 cents, hope it gets you in the right direction!
Mixpanel is based on events and there are no limits. It is not free, but it is awesome for this use case.
Another option is to study the Measurement Protocol in Google's Universal Analytics. You could define all your actions as virtual pageviews, and have up to 10M a month.
See also the Limits and Quotas.
The limit you describe, of 500 events per session, may not actually be that big of a deal if you re-think it a bit. Realize that a Google Analytics session is (most likely) not the same thing as your user logging into your app and doing things.
You might want to try setting a custom dimension of "LoggedIn" to "Yes" when someone logs in, but "No" otherwise. Send this CD with every pageview and event. This is a more typical idea of a session in a web app. Then every pageview or event you send to GA can be analyzed within the context of this dimension.
Additional References
http://analytics.blogspot.com/2011/08/update-to-sessions-in-google-analytics.html
http://www.analytics-ninja.com/blog/2011/08/how-google-analytics-calculates-visits.html
https://developers.google.com/analytics/devguides/platform/customdimsmets
https://support.google.com/analytics/answer/2709829?hl=en
Related
I have an event that triggers from my tag manager every time someone clicks a certain URL link. This event appears to be tracking properly in GA. However, I am attempting to create a filtered view that excludes traffic that triggers this event. When I use the Filter Verification I get:
"This filter would not have changed your data. Either the filter configuration is incorrect, or the set of sampled data is too small."
Indeed it does not change my data. I am using the event label as the field field/pattern if that makes a difference. Any suggestions?
Ok, there are issues with this question. But first, the answer is: filters aren't meant to remove more than particular hits. They aren't meant to remove sessions or users. Only hits. But there's a hackaround.
Now, more points:
You don't exclude "traffic". Traffic is not precise enough to be useful here. You have to decide what you want to exclude: an event, a session or a user. Or something inbetween, but then you need to define it properly.
A session in Google's understanding is really a bit different from what it seems like. It is custom to believe that a session is a series of interactional events with less than 30 minutes (configurable) inbetween. Not quite. If your source changes, that's a new session. Bear with me.
You... can hack around it if you really need to. By "painting" users or sessions. You do it by setting a specific custom dimension (user- or session-level) and then delete all events that have that custom dimension set using a view filter. The CD will be backfilled, so the filter should clean stuff close to how you expect it to do.
However! GA is... a little bit odd with how they record sessions and users. There may occur a situation when you end up having users or sessions with no events in them. However, if you find this issue at play, you still can export the data to BQ and query it properly. You may find that export cleaner.
If I have an google experiment running against a page, can I effectively pause the experiment by removing the chooseVariation call, or will the subsequent call to ga('send', 'pageview') still register the visitor in a participant in the experiment?
The powers that be want to pause a checkout experiment for a weekend to try a weekend-only special offer, and I'm trying to find a way to accomplish this without flat-out destroying all tracking for the period
#DaImTo: I think this is programming related, since Google doesn't allow to pause an experiment over their web interface, but there is a 'hack' to achieve this:
Removing only the cxApi.chooseVariation() call will not help with visitors that have been already exposed to the experiment. Google Analytics Content Experiments are using the __utmx and __utmxx cookies to send experiment data along with your analytics tracking calls. Therefore you'll need to
remove cxApi.chooseVariation() to prevent the creation of new cookies
remove the experiment cookies to prevent tracking returning visitors
If you want to reenable tracking you will have to save the experiment cookies before removing them from the client-side and be able to associate them with a specific user (you might just rename the cookie). Reapply the experiment cookies to continue experiment tracking.
But be aware, the experiment cookies are tracking all started experiments. So if you are running multiple experiments, and you want to pause only a subset, you'll need to rewrite the cookies (temporarily removing just the experiment's data to be paused from the cookie).
If you remove the experiment cookies permanently, returning users might see a different variation and/or be included/excluded in/from the experiment where before they've been not.
I would look for some feedback on tracking user activity on an commerce website using th google analytics commerce capabilities.
I can't fully understand those 3 parts :
Adding an item (ecommerce:addItem) : obviously when some user add a thing to the cart
Adding a Transaction (ecommerce:addTransaction) : that's where I'm very confused
Sending the data (ecommerce:send) : that's obvious
Can those 3 event append at a different moment ? in what manner ?
What would be a real-world use case that would make you use execute ecommerce:addTransaction and ecommerce:send at a different moment ?
This thing makes me wonder a lot, and I'd like to have some experienced feedback on this as you tend to easily break your stats if something is not done week enough
Thanks in advance
EDIT
So the main purpose right here is to get stats for the pending orders (you add stuff to your cart), and the complete orders (you paid for the things you added).
Right now I only send it all when the order is complete, and things are working pretty good in analytics, but I just don't know anything about the ones that did not complete.
This question was a lack of knowledge.
Simple ecommerce plugin has nothing to do with the enhanced ecommerce plugin
You won't track that much with the first one, except the checkouts. A plain, one order at a time, revenue value.
If you want a deep insight on your users behaviors (when i say deep, I mean it), You have to go for the second one.
We might be able to debate over the unusefullness of the first one; and the fact that its existence in itself compared to the second is completely misleading, as when you first get in, as usual with google, you get flooded by an endless documentation
ecommerce:addItem does not add items to a cart; it adds items to a transaction (with "conventional" ecommcerce tracking there is no cart tracking, you'd have to use enhanced ecommerce tracking. Actually your title refers to enhanced ("ec:") and your question to conventional ecommerce ("ecommerce:") tracking).
So ecommerce:addTransaction starts a transaction; here goes the stuff that affects the transaction as a whole, like transaction id, tax on the total purchase or shipping costs.
Now that you have started the transaction you can add items to it that are associated via the transaction id.
Finally the ecommerce:send command tells Universal Analytics that the transaction should be processed on the server. "send" is actuall a misnomer; addItem and addTransaction do already send data to the server (they each create an request to the tracking server and thus count towards your hit quota).
The reason for this is, as far as I can tell, that the information is transmitted via url parameters (you call the Google Analytics endpoint which returns an transparent pixel). The maximum length for an url request is limited (actual limits depend on browser and browser version).
So the transaction is broken up into multiple parts not because you want to execute the commands at different moments but so it can be transmitted via Url parameters without being truncated. The send command merely tells that you are now finished adding new parts to the transaction and the data can now be processed.
I have a search results page which can show between 25 & 100 results at a time
Would like to track impressions for each results set (not clicks)
Ideally I'd have a list of each result's ID that would get saved for each pageview (as well as the page or page type the impressions came from). Then I could aggregate this by ID by day
I had originally wanted to use Google Analytics for this, however I don't think I can add data to GA in this way (even Universal Analytics custom dimensions)
But I could be wrong? Perhaps I could add data to GA in this way?
GA Events might have been an option, but this would generate a lot of events; some 25-100 for every pageview! The amount of traffic I receive might make this method impractical
Note: One of my key reasons for wanting to use GA is that it seems to filter out most bot traffic; I've also done some manual profile filtering to catch a few more bots. Rolling my own solution might mean reinventing the bot-filtering wheel, something I'm not keen on
Perhaps there is another service that could be used and provide similar bot filtering behaviour?
Using: Universal Analytics (analytics.js)
I am currently testing user experience across a site by triggering different events upon pageView. On a given pageView, multiple events may be triggered.
I am interested in determining what events (or sequence of events) may lead to a conversion being triggered. In the frontend, this can be achieved via Event Flow or Goal Flow visualizations. Unfortunately I could find nothing online regarding querying Event Flow specifically.
Is it possible to query Event Flow from the Google Analytics API? If not, are there any workarounds that would allow us to quantify impact from different flows?
There isnt a way of doing it with the API. I want to start by saying i havent tried doing this I am just going on what i would do if i did want to attempt to do this.
The flow apears to start with any of the normal dimensions country for example. My first idea was the ga:goalpreviousstep1 dimensiosn then i remembered they cant be queried with other dimensions.
I would look into ga:previousPagePath and ga:nextPagePath see what they come back with. queried along with your goal or event they might give you an idea of what the user was doing.