Исходящие клики не отслеживаются Google Analytics

Я пытаюсь отслеживать количество исходящих кликов Google Analytics на рекламном баннере на моем веб-сайте.

Как это работает, если вы вошли в систему, вы не видите баннер. Если вы не вошли в систему, вы увидите баннер. Я успешно сделал это на моем сайте WordPress, используя следующий код:

<?php if (is_user_logged_in()){ echo "No Ads - Thank You for Supporting Us"; } else { echo " <a href=\"http://www.advertiser.org/\" onClick=\"pageTracker._trackEvent('Outbound', 'CuteDog', '300sb');\" target=\"_blank\" rel=\"nofollow\"><img src=\"http://www.mydomain.com/box/cp/cuteDog.gif\" width=300 height=250 alt=\"Cute Dog\" style=\"border:none;\" /></a> "; }; ?> 

Теперь, баннер и все работает, но он не отслеживается GA. Я уверен, что функция onclick корректна:

 onClick="pageTracker._trackEvent('Outbound', 'CuteDog', '300sb');" 

Код отслеживания GA находится в заголовке моей страницы, и это самый последний код:

  <script type="text/javascript">var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-8441420-2']); _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> 

Что я делаю неправильно?

Вы используете две разные версии кода GA. Вот асинхронная версия, которую вы должны использовать:

 _gaq.push(['_trackEvent','Outbound', 'CuteDog', '300sb']); 

Вы можете поместить это прямо в свой onclick или сделать функцию обертки, чтобы вызвать его.

отредактировать комментарий к OP за непонимание того, что делать с этим

Вы помещаете этот бит кода в onclick вашей ссылки …

Измените это:

 <a href=\"http://www.advertiser.org/\" onClick=\"pageTracker._trackEvent('Outbound', 'CuteDog', '300sb');\" target=\"_blank\" rel=\"nofollow\"><img src=\"http://www.mydomain.com/box/cp/cuteDog.gif\" width=300 height=250 alt=\"Cute Dog\" style=\"border:none;\" /></a> 

К этому:

 <a href=\"http://www.advertiser.org/\" onClick=\"_gaq.push(['_trackEvent','Outbound', 'CuteDog', '300sb']);\" target=\"_blank\" rel=\"nofollow\"><img src=\"http://www.mydomain.com/box/cp/cuteDog.gif\" width=300 height=250 alt=\"Cute Dog\" style=\"border:none;\" /></a> 

Здесь есть две проблемы:

  1. Вы используете объект pageTracker в событии pageTracker но используете асинхронную версию кода GA. В этой версии объект напрямую не доступен через глобальный контекст window поэтому, вероятно, возникает ошибка.
  2. Даже если объект pageTracker был доступен, новая страница загрузится, прежде чем у него будет возможность отправить данные в GA.

Вы должны использовать функцию, аналогичную следующей:

  <script type="text/javascript"> function recordOutboundLink(link, category, action, value) { try { var pageTracker=_gat._getTracker("UA-XXXXXX-XX"); pageTracker._trackEvent(category, action, value); window.setTimeout("window.location = '"+link.href+"';", 100); }catch(err){} } </script> 

Затем назовите его в своем событии onClick :

 onClick="recordOutboundLink(this, 'Outbound', 'CuteDog', '300sb'); return false;"