Беговые соревнования в аналитике Google при нажатии на форму отправляют

Я должен отследить событие в аналитике Google, когда кто-то заполняет форму, и щелчки отправляют. Получающаяся страница, которая подходит, является стандартной полосой набора панели инструментов, поэтому для отслеживания события на той странице, которую я должен был бы передать в конечном счете в URL и затем считать URL и произвести событие аналитики Google, отслеживающее код JavaScript на основе его. Это - часто отмечаемая страница, хотя и страница, которая перезагружается, нажала назад к, и т.д. Таким образом, я действительно скорее не передам события отслеживания в URL и завинчу аналитику.

Вместо этого я очень сделал бы что-то как следующий код jQuery на странице с формой:

$('#form_id').submit(function() {
  _gaq.push('_trackEvent', 'my category', 'my action');
});

Проблема, которой я боюсь с вышеупомянутым, состоит в том, что я собираюсь пропустить некоторые события, прослеживаемые, потому что сразу после вызова, что JavaScript браузер собирается отправить форму и перейти к другой веб-странице. Если utm.gif, отслеживающий изображение, не загружается вовремя, я пропускаю событие :(

Мой страх выравнивается по ширине? Как я удостоверяюсь, чтобы я не пропускал прослеживаемые события?

62
задан 3 November 2010 в 14:30

9 ответов

Существует только 2 способа удостовериться, 100%, что все представления формы (среди пользователей, у которых есть JS, включил и кто не блокирует GA) следующие:

  • можно сделать, Ajax отправляет, и затем не должны волноваться об изменении страницы и таким образом иметь все время в мире для GA для обработки И новая страница для загрузки вместо старой.
  • можно вынудить форму открыть свое действие в новом окне, таким образом оставив все фоновые процессы на основной работе страницы и предотвращении состояния состязания, по поводу которого Вы волнуетесь.

причина этого состоит в том, что Google Analytics не имеет функции обратного вызова, таким образом, Вы никогда не можете быть уверены, что получаете весь из отправления даже при помещении 10 вторых задержек.

Поочередно, можно просто передать ПОЛУЧИТЬ значение отправленной странице и установить проверку на той странице для значения. Если его набор, можно отправить вызов trackEvent.

17
ответ дан 31 October 2019 в 13:11

Используйте Google Analytics 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;
144
ответ дан 31 October 2019 в 13:11

Для тех, кто имеет дело с аналитикой 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)
12
ответ дан 31 October 2019 в 13:11

Этому вопросу несколько лет теперь, и кажется, что аналитика 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();
        }
    );
});
7
ответ дан 31 October 2019 в 13:11

Если Вы не слишком побеспокоены приблизительно 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);
});
6
ответ дан 31 October 2019 в 13:11

В то время как 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();
}
6
ответ дан 31 October 2019 в 13:11

Это - то, как Вы делаете обратные вызовы события в 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

2
ответ дан 31 October 2019 в 13:11

Хорошо, так как мы переместились в Универсальную аналитику, я хотел бы ответить на то же использование GTM и UA.

<час>

GTM:

Беговые соревнования в аналитике Google при нажатии на форму отправляют, довольно легкое использование GTM.

  • Создают тег UA и устанавливают тип на event в GTM.
  • Заливка Ваше желаемое Действие События, Категория и Маркируют
  • Create триггер Представления Формы типа.
  • Помещенный больше условий предназначаться для кнопки Вы требуете

, Это - лучший, оптимальный и спокойный подход для OP.

enter image description here

1
ответ дан 31 October 2019 в 13:11

То, когда крайне важно, чтобы каждый отправлять, прослежено, я обычно устанавливал cookie на бэкенде со всеми необходимыми данными. Затем установите правило в GTM для исчерпывания тега на основе существования этого 1-го партийного cookie. Тег анализирует cookie для необходимых значений и делает то, что требуется с ними, и удалите cookie.

А более сложным примером является отслеживание покупки. Вы хотите исчерпать 5 различных тегов, когда пользователь выполняет покупку. Условия состязания и непосредственное перенаправление к некоторой странице приветствия мешают полагаться на простое отслеживание "onSubmit". Таким образом, я установил cookie со всеми связанными с покупкой данными, и на любой странице стороны пользователя на GTM распознают cookie, исчерпают тег "точки входа", который проанализирует cookie, продвинуть все значения к dataLayer, удалить cookie, и затем сам тег продвинет события к dataLayer, таким образом, инициировавшему 5 тегов, которые требуют данных покупки (который уже находится в dataLayer).

0
ответ дан 31 October 2019 в 13:11

Другие вопросы по тегам:

Похожие вопросы: