I need help figuring out how to successfully redirect while including Analytics code.
- I have a subdomain setup http://buuf.fractalsystems.org
- The subdomain is actually just a subfolder http://fractalsystems.org/buuf
- I have an HTML file in that subfolder which redirects to https://market.android.com/developer?pub=Fractal%20Systems
The code for that redirect file:
<head>
<script type="text/javascript">
function delayedRedirect(){
window.location = "https://market.android.com/developer?pub=Fractal%20Systems"
}
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1234567-8']); <!--I have my real ID there-->
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body onLoad="setTimeout('delayedRedirect()', 3000)">
<h2>ADW.BuuF.Theme is no more! You will be redirected to new and better apps in 3 seconds.</h2>
</body>
</html>
This works as a redirect only if I don't include my Analytics code. I've tried moving the code around with no change.
QUESTION How can I add a redirect, of any kind, and still be able to track with Google Analytics?
I've tried PHP redirects with no success and am pretty sure htaccess redirects wont help although I'm open to suggestions.
The reason I'm using a JavaScript redirect is so I can continue to track with Google Analytics and also show a little message or make a custom page with the delay.
Thanks for any help. Doesn't have to be JS, please, any input is welcome if you know of a solution.
I'd suggest changing your Google Analytics code to be synchronous instead of asychronous by changing it to this:
This should guarantee that it runs before your redirect code kicks in and it should be out of the way of your redirect script so there is no interference. As you have it now, you're playing a guessing game for how long the GA script will take to load and that it will load and do it's job in under 3 seconds. That may usually be the case, but there is no reason to load it asynchronously like you are and have to play that game. Load it synchronously and it will do it's job before your javascript redirect fires.
It might even be possible to just put the redirect directly after the GA code like this and minimize the time that your placeholder page is displayed:
Note:
_gaq.push
allows pushing of functions onto the queue. The following code should redirect after 250 milliseconds (to allow time for the tracking pixel) after the _trackPageview:There's a good answer here: https://www.domsammut.com/code/setting-up-hitcallback-using-google-universal-analytics
In short, you'd do it using an event, and you use the hitCallback function.
Meta refresh is generally discouraged because of usability concerns (especially with a short, or no delay), but as a fallback for clients with no javascript I think it's perfectly valid in this case.
If you combine the synchronous ga.js call with a meta refresh you get the best of both worlds: an almost instant, tracked redirect if JS is enabled; a delayed but still effective redirect if not (and a hard link in the body just in case all else fails).
I think maybe just use jquery ready method so it won't start the timer till the page is fully loaded...
If you're using the new GA code you can simply replace this line
ga('send', 'pageview');
with this code:Example in full: