Отслеживание событий в Google Analytics с помощью _trackEvent при отправке формы
Я пытаюсь отследить событие, когда пользователь нажимает кнопку отправки в моей форме регистрации.
У меня есть следующий код на моей странице:
Google Analytics - непосредственно перед моим закрытием </head>
тег:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-XX']);
_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>
Отслеживание событий формы:
<input onclick="_gaq.push(['_trackEvent', 'Forms', 'Submit', 'mylist', , false]);" name="submit" id="af-submit-image-873297158" type="image" class="image img-responsive" style="background: none;" alt="Submit Form" src="img/orange_free_instant_access_button.png" tabindex="503">
Каждый раз, когда я загружаю страницу и щелкаю форму, событие регистрируется в разделе событий Google Analytics в реальном времени. Кажется, это работает нормально, однако из более чем 100 известных регистраций в списке за последние 24 часа регистрируется только несколько. (Всего 12, большинство из которых были моими собственными заявками на тестирование).
Я могу только предположить, что событие не отправляется в Google, но насколько я вижу, код выглядит нормально, и я также могу видеть, что событие отправляется через консоль с помощью плагина отладки GA.
Я пытался вызвать событие с помощью вызова jQuery, я пробовал различные события, такие как onmousedown и фактическое событие отправки формы, но ничего. (Я даже откатился с analytics.js на ga.js, создав новый профиль, так как считал, что это проблема с бета-версией.)
Я подозревал, что событие не было запущено вовремя, пока страница не сменила местоположение, но когда я проверял себя, оно срабатывало каждый раз. Я пробовал Chrome, FF и IE10.
В своем стремлении исправить это я прикрепил событие onload к телу страницы, и я вижу, что события записываются для этого даже от живых посетителей. Проблема, кажется, сосредоточена вокруг события формы.
2 ответа
Хорошо, похоже, пришло время ответить на мой вопрос в интересах других:
Я немного покопался, и это было вызвано тем, что место смены страницы было правильно отслежено. Благодаря посту Джоэла Петерсона я придумал этот фрагмент кода:
jQuery(document).ready(function($){
$('form').submit(function(event){
//if analytics object exists
if(window._gat){
event.preventDefault();
optinForm = this;
_gaq.push(['_set','hitCallback', function(){
optinForm.submit();
}]);
_gaq.push(['_trackEvent', 'Forms', 'Submit', 'hbsanewtraffic']);
}
//if no analytics object, service as normal
});
});
Он использует функцию обратного вызова, чтобы убедиться, что событие отправляется первым, а затем отправляет мою форму.
Замените _gaq.push(['_trackEvent', 'Forms', 'Submit', 'mylist', false)];
с ниже.
ga ("отправить", "событие", "категория", "действие");
Пример:
ga ("отправить", "событие", "формы", "отправить");
Поместите как значение для атрибута onClick.