I am trying to create a new tracking code for a new web property in GA however the URL contains a query string at the end of it. The URL string contains common information except for the query string at the end of it.
For example:
http://www.website.com/login.aspx?p=abc
http://www.website.com/login.aspx?p=def
http://www.website.com/login.aspx?p=ghi
GA will not allow me to create a unique tracking code for each of these sites since they contain the query string. So if I remove it, how will I track each of these as unique web sites in GA?
Thanks,
Mike
You could solve this problem by creating 3 separate views with a filter for each view, that only records the traffic for the right URL.
First you have to extract the value after the last "/" with this code:
function() {
var loginURL = window.location.href.split("/")[3];
return loginURL;
}
Put that value into a custom dimension (with GTM just use a custom javascript variable, with GA refer to this documentaion on how to set a custom dimension).
Set up a filter in your new Google Analytics view that only includes traffic with the value of the custom dimension being "login.aspx?p=abc".
Related
Can I use client ID as a dimension in my reports? Client ID does not appear as a dimension in the Dimensions and Metrics Explorer, but I believe I can create a custom dimension that will store the Client ID. My end goal is to have a row per customer/date+time containing the incidents associated with the particular customer at the particular time, e.g. page visits, particular events etc
Once you've created the custom dimension in GA, you can start tracking it via analytics.js with the following code:
ga(function(tracker) {
// Assumes dimension is at index 1.
tracker.set('dimension1', tracker.get('clientId'));
});
I found that the google analytics will NOT save your custom dimension if it matches the value of "client id" (even if that id isn't actually PII). However, if you alter the "client id" to become a different value, it will save properly.
Here are the guidelines about what you are allowed to send
I'm looking for some general advice. The site I'm currently working on is full of duplicate content that's about to be deduplicated. But it was built that way to track different audiences visiting the pages by reporting on the URL hits.
Current Links
www.MySite.com/homeowner/painting
www.MySite.com/professional/painting
www.MySite.com/designer/painting
My concern is that at the end of the day, the person managing the analytics wants to be able to look at their report and say "We had X number of professionals visit the site." Simply deduping will elimate that.
I'm thinking Google Analytics might have a way to pass audience/tags in via the URL like this:
Example Links with Tracking
www.MySite.com/painting?tag=homeowner
www.MySite.com/painting?tag=professional
www.MySite.com/painting?tag=designer
Is this possible with Google Analytics? Does anyone have an example website using this?
I've looked into Custom Dimensions and Metrics but they seem to be overkill https://developers.google.com/analytics/devguides/collection/analyticsjs/custom-dims-mets
Custom Dimensions are not overkill, it's a reasonable idea for you to use them (because segmentation is what they are for, really).
Using a url tag has a couple of disadvantages. For one The tagged pages will appear as three distinct rows in your reports - you will be unable to get an aggregated number for www.MySite.com/painting, instead you will have three Urls (or as many as you have parameters).
Secondly, homeowner etc. are attributes that belong to a session, or even a user (if the role cannot change from visit to visit). However if you track them via url parameters they have only a hit level scope, i.e. they are recorded as a property of the viewed page, not the viewing visitor. If you record this as a session scoped variabe you need to set it only at the first pageview, and the value will be applied to all subsequent pageviews for that session.
So an easy way (example assumes you are using php) might be to use
if(isset($_GET['tag']) {
ga('send', 'pageview', {
'dimension1': "<?php echo filter_input(INPUT_GET, 'tag', FILTER_SANITIZE_ENCODED); ?>"
});
} else {
ga('send', 'pageview');
}
in your tracking code after you have created a session scoped custom dimension in your property settings ("dimension1" referring to the first custom dimension in your account, the numeric index changes for each dimension. The dimension name is only used in the reports, not the tracking code). You need to be careful not to send an empty value when the query string is not present - a session scoped custom dimension only records the last value from a session, if you send empty values you overwrite the value you recorded at the first pageview.
Alternatively you can do this without changing the tracking code at all - create a custom advanced filter to capture the value from the query string, a second to copy the value to your custom dimension and a third to remove the query string from the url. However while that's a neat trick using code is much easier.
I have a webapp that hosts several thousand subdomain sites under a single Google Analytics property. I'm in the process of upgrading my tracking tags from the old ga.js system to the new analytics.js-based system (Universal Analytics).
In my old setup, when the tracking code got instantiated, I would send a site id to GA as a custom variable. Then, when pulling analytics for my users, I would simply filter on site ID as follows:
https://www.googleapis.com/analytics/v3/data/ga?
ids=ga:76149262&
start-date=2015-01-18&
end-date=2015-01-20&
metrics=ga:visits,ga:pageviews,ga:uniquePageviews,ga:pageviewsPerVisit,ga:bounces&dimensions=ga:date&
filters=ga:customVarValue1==f6853365a940330037c3aceff36de412&
max-results=100
In the new Universal Analytics system, there are no custom variables, as these have been replaced by dimensions. No problem. I've created a new dimension called siteHash and I've been submitting it along with each page request. What's more, I'm able to query this with only one tiny modification to my API request above:
https://www.googleapis.com/analytics/v3/data/ga?
ids=ga:76149262&
start-date=2015-01-18&
end-date=2015-01-20&
metrics=ga:visits,ga:pageviews,ga:uniquePageviews,ga:pageviewsPerVisit,ga:bounces&dimensions=ga:date&
filters=ga:dimension1==f6853365a940330037c3aceff36de412&
max-results=100
As you can see, I've just changed ga:customVarValue1 to ga:dimension1, and everything works.
Here's the issue: Once I push this code change to production, a lot of my sites will start to have a mixture of old data and new data. The old data will be tagged with the custom variable and the new data will be tagged with the new dimension. How can I query on both ga:dimension1 and ga:customVarValue1 at the same time within the same query?
I've tried creating an "OR" query as described here: https://developers.google.com/analytics/devguides/reporting/core/v3/reference#OR
This yields a filter parameter that looks like this:
ga:dimension1==f6853365a940330037c3aceff36de412,ga:customVarValue1==f6853365a940330037c3aceff36de412
Unfortunately, doing an API request with this filter yields no data. Does anyone know why? Is there a prohibition on filtering on dimensions and custom variables at the same time?
Assuming this is, for some reason, impossible. Is there any way to convert already collected custom variable data into dimension data? If I were able to do this, I could just query the API and only filter on dimensions since all of the old custom variable data would now be dimension data.
I have two domains, a .nl and a .be domain. Both have their own Google Analytics IDs. Currently I have the analytic code on the website and, depending on the domain, the correct ID is inserted into the code. The tracking works correctly on both sites.
Now I want to implement the Google Tag Manager, to get more flexibility for Javascript.
The struggle is now how get to the same result, without implementing the Google Tag Manager twice (or more if more domains are added).
How can I achieve this? I tried with the rules in combination with a regex on the {{url}}, but without any success.
The best way if you want to prepare for more domains would be a lookup table macro.
First create a url type macro that return the hostname. Then create a macro of the type lookup table - that is a macro that returns a value based on the value of another macro. It should look something like this ( {{url hostname}} is the macro that holds, well, the hostname) :
Then insert the macro name ( {{Google ID}} in the example in the screenshot) in the "Tracking ID" field in you Google Analytics Tag and it will be set according to the domain name. If you want more domains just add a row to the lookup table.
As an example, the code I have to embed has an ID of the form: UA-3235632-1, but to use the data export API I need the ID from the URL of the proper page, in this case: 6270018.
How do I get the real ID from the UA type ID?
That feature of the the GA Data Export API could indeed be a little more clear.
Here's what you need to do:
login to the GA Browser and in the
upper-right-hand corner drop-down
menu, select your GA Account of
interest (assuming you have more
than one--if you don't then you are
already on right page). The page
that renders will be the Website
Profiles for that Account. Find the
row in that table that corresponds
to the Profile (Report) you want
retrieve data from and click on the
next-to-last column Edit;
The page you'll see now will say
Profile Settings in the upper
left-hand corner. Just under that,
in smaller font, you'll see Profile
ID followed by a string of digits
(probably six to eight). This is what you want
(in the python client for the GA
Data Export API, it is referred to
as TABLE_ID)).
To retrieve this parameter (TABLE_ID) programmatically, the GA Data Export API Account Feed returns this value to you in the dxp:tableID field. In particular, an Account Query will return the list of profiles under that Account to which you have access; each Profile will have a tableID in the field i mentioned just above.