Я должен отследить событие в аналитике Google, когда кто-то заполняет форму, и щелчки отправляют. Получающаяся страница, которая подходит, является стандартной полосой набора панели инструментов, поэтому для отслеживания события на той странице, которую я должен был бы передать в конечном счете в URL и затем считать URL и произвести событие аналитики Google, отслеживающее код JavaScript на основе его. Это - часто отмечаемая страница, хотя и страница, которая перезагружается, нажала назад к, и т.д. Таким образом, я действительно скорее не передам события отслеживания в URL и завинчу аналитику.
Вместо этого я очень сделал бы что-то как следующий код jQuery на странице с формой:
$('#form_id').submit(function() {
_gaq.push('_trackEvent', 'my category', 'my action');
});
Проблема, которой я боюсь с вышеупомянутым, состоит в том, что я собираюсь пропустить некоторые события, прослеживаемые, потому что сразу после вызова, что JavaScript браузер собирается отправить форму и перейти к другой веб-странице. Если utm.gif, отслеживающий изображение, не загружается вовремя, я пропускаю событие :(
Мой страх выравнивается по ширине? Как я удостоверяюсь, чтобы я не пропускал прослеживаемые события?
Существует только 2 способа удостовериться, 100%, что все представления формы (среди пользователей, у которых есть JS, включил и кто не блокирует GA) следующие:
причина этого состоит в том, что Google Analytics не имеет функции обратного вызова, таким образом, Вы никогда не можете быть уверены, что получаете весь из отправления даже при помещении 10 вторых задержек.
Поочередно, можно просто передать ПОЛУЧИТЬ значение отправленной странице и установить проверку на той странице для значения. Если его набор, можно отправить вызов trackEvent.
hitCallback
, можно указать пользовательскую функцию обратного вызова на объекте средства отслеживания.
_gaq.push(['_set', 'hitCallback', function(){}]);
обратный вызов вызывается после того, как "хит отправляется успешно".
, Если Вы хотите отследить щелчок по кнопке отправки и отправить форму впоследствии, можно использовать следующий код (использует jQuery) для события:
var _this = this; // The form input element that was just clicked
_gaq.push(['_set','hitCallback',function() {
$(_this).parents('form').first().submit(); // Submit underlying form
}]);
_gaq.push(['_trackEvent', 'My category', 'My action']);
return !window._gat; // Ensure that the event is bubbled if GA is not loaded
Или как onclick
один лайнер для Вашего <input type="submit">
элемент:
onclick="var _this=this;_gaq.push(['_set','hitCallback',function(){$(_this).parents('form').first().submit();}]);_gaq.push(['_trackEvent','My category','My action']);return !window._gat;"
то, Что это делает это, что это отслеживает событие My category/My action
, использует jQuery для нахождения базового элемента формы кнопки отправки просто продвинутым и затем отправляет целую форму.
См.: Google Analytics - Передающие Данные к Google Analytics - Обратный вызов Хита (благодарит supervacuo)
ОБНОВЛЕНИЕ , Если Вы используете современный analytics.js код с ga () функция, определяемая, можно записать это как следующее:
var _this = this;
ga('send', 'event', 'My category', 'My action', {
'hitCallback': function() {
$(_this).parents('form').first().submit();
}
});
return !window.ga;
Для тех, кто имеет дело с аналитикой Google, универсальной и делающей некоторый прием с hitCallback (f.x. беговые соревнования после проверки, но прежде отправляют формы) имеют в виду, что google-analytics.js потенциально мог быть заблокирован, однако ga функция будет все еще определен, поэтому отправит, не произойдет.
ga('send', 'pageview', event, {
'hitCallback': function() {
_this.submit();
}
})
return !window.ga;
Может быть зафиксирован с проверкой, которые проверяют, загружается ли ga
ga('send', 'pageview', event, {
'hitCallback': function() {
_this.submit();
}
})
return !(ga.hasOwnProperty('loaded') && ga.loaded === true)
Этому вопросу несколько лет теперь, и кажется, что аналитика Google позволила делать это без взломов, данных выше.
От документы аналитики Google :
, Кроме того, для управления массивами можно также продвинуть функциональные объекты на _gaq очередь. Функции могут содержать любой произвольный JavaScript и как массивы команды, они выполняются в порядке, в котором они продвинуты на _gaq.
можно объединить это с продвижением нескольких-команд для создания aboslute уверенный, что они добавляются в порядке (и сохраните вызов).
$('input[type="submit"]').click(function(e) {
// Prevent the form being submitted just yet
e.preventDefault();
// Keep a reference to this dom element for the callback
var _this = this;
_gaq.push(
// Queue the tracking event
['_trackEvent', 'Your event', 'Your action'],
// Queue the callback function immediately after.
// This will execute in order.
function() {
// Submit the parent form
$(_this).parents('form').submit();
}
);
});
Если Вы не слишком побеспокоены приблизительно 100%-я точность, Вы могли бы просто всунуть 1 вторую задержку.
$('#form_id').submit(function(e) {
var form = this;
e.preventDefault(); // disable the default submit action
_gaq.push('_trackEvent', 'my category', 'my action');
$(':input', this).attr('disabled', true); // disable all elements in the form, to avoid multiple clicks
setTimeout(function() { // after 1 second, submit the form
form.submit();
}, 1000);
});
В то время как hitCallback решение хорошо, я предпочитаю установить cookie и инициировать событие от следующей страницы. Таким образом отказ в GA не остановит мой сайт:
// Function to set the event to be tracked:
function setDelayedEvent(category, action, label, value) {
document.cookie='ev='+escape(category)+'!'+escape(action)+'!'+escape(label)+'!'+value
+'; path=/; expires='+new Date(new Date().getTime()+60000).toUTCString();
}
// Code run in every page, in case the previous page left an event to be tracked:
var formErrorCount= formErrorCount || 0;
var ev= document.cookie.match('(?:;\\s*|^)ev=([^!]*)!([^!]*)!([^!]+)!([^!]+)(?:;|\s*$)');
if (ev && ev.length>2) {
_gaq.push(['_trackEvent', unescape(ev[1]), unescape(ev[2]),
unescape(ev[3]), parseInt(ev[4])]);
document.cookie='ev=; path=/; expires='+new Date(new Date().getTime()-1000).toUTCString();
}
Это - то, как Вы делаете обратные вызовы события в gtag.js
, чтобы гарантировать, что данные Google Analytics отправляются перед изменением страницы URL:
gtag('event', 'view_promotion', { myParameter: myValue, event_callback: function () {
console.log('Done!');
// Now submit form or change location.href
} });
Источник: https://developers.google.com/analytics/devguides/collection/gtagjs/sending-hits
Хорошо, так как мы переместились в Универсальную аналитику, я хотел бы ответить на то же использование GTM и UA.
<час>GTM:
Беговые соревнования в аналитике Google при нажатии на форму отправляют, довольно легкое использование GTM.
event
в GTM. , Это - лучший, оптимальный и спокойный подход для OP.
То, когда крайне важно, чтобы каждый отправлять, прослежено, я обычно устанавливал cookie на бэкенде со всеми необходимыми данными. Затем установите правило в GTM для исчерпывания тега на основе существования этого 1-го партийного cookie. Тег анализирует cookie для необходимых значений и делает то, что требуется с ними, и удалите cookie.
А более сложным примером является отслеживание покупки. Вы хотите исчерпать 5 различных тегов, когда пользователь выполняет покупку. Условия состязания и непосредственное перенаправление к некоторой странице приветствия мешают полагаться на простое отслеживание "onSubmit". Таким образом, я установил cookie со всеми связанными с покупкой данными, и на любой странице стороны пользователя на GTM распознают cookie, исчерпают тег "точки входа", который проанализирует cookie, продвинуть все значения к dataLayer, удалить cookie, и затем сам тег продвинет события к dataLayer, таким образом, инициировавшему 5 тегов, которые требуют данных покупки (который уже находится в dataLayer).