Śledź wydarzenie w google analytics po kliknięciu formularza wyślij

Muszę śledzić wydarzenie w google analytics, gdy ktoś wypełni formularz i kliknie prześlij. Wynikowa strona, która pojawia się, jest standardową stroną typu Pulpitu nawigacyjnego, więc aby śledzić Zdarzenie na tej stronie, musiałbym przejść w zdarzeniu w adresie url, a następnie odczytać adres url i wypisać kod javascript śledzący zdarzenia Google analytics na jego podstawie. Jest to często zakładkowa strona i strona, która jest przeładowywana, klikana z powrotem itp. Więc naprawdę wolałbym nie mijać śledzenia zdarzeń w URL i spieprzyć analitykę.

Zamiast tego wolałbym zrobić coś takiego jak następujący kod jQuery na stronie z formularzem:

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

Problem, którego obawiam się z powyższym, polega na tym, że będę tęsknił za śledzonymi wydarzeniami, ponieważ natychmiast po wywołaniu tego javascript przeglądarka prześle formularz i przejdzie na inną stronę. Jeśli utm.GIF tracking image nie jest ładowany na czas, brakuje mi tego wydarzenia :(.

Czy mój strach jest usprawiedliwiony? Jak mam się upewnić, że nie śledzi Pan wydarzenia?
Author: at., 2010-11-03

9 answers

Istnieją tylko 2 sposoby, aby zapewnić, w 100%, że wszystkie zgłoszenia formularza (wśród użytkowników, którzy mają włączone JS i którzy nie blokują GA) są następujące:

  • można zrobić Ajax złożyć, a następnie nie trzeba się martwić o zmianę strony, a tym samym mieć cały czas na świecie dla GA do przetworzenia i nowa strona załadować w miejsce starego.
  • możesz wymusić otwarcie formularza w nowym oknie, pozostawiając wszystkie procesy działające w tle na stronie głównej i zapobiegając stan rasy, o który się martwisz.

Powodem tego jest to, że Google Analytics nie ma funkcji wywołania zwrotnego, więc nigdy nie możesz być pewien, że przechwytywasz wszystkie zgłoszenia, nawet jeśli umieścisz 10 sekund opóźnienia.

Alternatywnie, możesz po prostu przekazać wartość GET do przesłanej strony i ustawić sprawdzanie na tej stronie dla wartości. Jeśli jest ustawiony, możesz wysłać połączenie trackEvent.

 17
Author: Yahel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-13 14:55:07

Użyj Google Analytics hitCallback

Możesz określić niestandardową funkcję wywołania zwrotnego w obiekcie trackera.

_gaq.push(['_set', 'hitCallback', function(){}]);

Wywołanie zwrotne jest wywoływane po pomyślnym wysłaniu "hit"."

Jeśli chcesz śledzić kliknięcie przycisku Wyślij i wysłać formularz, możesz użyć następującego kodu (używa jQuery) dla Twojego wydarzenia:

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

Lub jako onclick jedna linijka dla Twojego <input type="submit"> elementu:

onclick="var _this=this;_gaq.push(['_set','hitCallback',function(){$(_this).parents('form').first().submit();}]);_gaq.push(['_trackEvent','My category','My action']);return !window._gat;"

Co to robi, że śledzi Zdarzenie My category/My action, używa jQuery, aby znaleźć element formularza podstawowego przycisku Wyślij, po prostu nacisnął, a następnie przesyła cały formularz.

Zobacz: Google Analytics-wysyłanie danych do Google Analytics-Hit Callback (dzięki supervacuo)

Aktualizacja Jeśli korzystasz z nowoczesnej analityki.kod js z zdefiniowaną funkcją ga () można zapisać w następujący sposób:

var _this = this;
ga('send', 'event', 'My category', 'My action', {
    'hitCallback': function() {
        $(_this).parents('form').first().submit();
    }
});

return !window.ga;
 143
Author: flu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-18 08:41:51

Dla tych, którzy mają do czynienia z Google analytics universal i robi jakąś sztuczkę z hitCallback (f. X. track zdarzenia po walidacji, ale przed przesłaniem formularza) należy pamiętać, że google-analytics.js potencjalnie może zostać zablokowany, jednak funkcja ga będzie nadal zdefiniowana, więc submit nie nastąpi.

ga('send', 'pageview', event, {
  'hitCallback': function() {
    _this.submit();
  }
})
return !window.ga;

Można naprawić za pomocą walidacji, która sprawdza, czy ga jest załadowana

ga('send', 'pageview', event, {
  'hitCallback': function() {
    _this.submit();
   }
})
return !(ga.hasOwnProperty('loaded') && ga.loaded === true)
 12
Author: Dmytro Pastovenskyi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-07 14:39:59

To pytanie ma już kilka lat i wydaje się, że google analytics dostarczył sposób, aby to zrobić bez hacków podanych powyżej.

Z google analytics docs :

Oprócz tablic poleceń, można również wepchnąć obiekty funkcji do kolejki _gaq. Funkcje mogą zawierać dowolny JavaScript i podobnie jak tablice komend, są wykonywane w kolejności, w jakiej są wypychane na _gaq.

Możesz połączyć to z multiple-command push to make aboslute sure that they are added in order (and save a call).

$('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
Author: epocsquadron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-01 14:40:52

Jeśli nie przejmujesz się 100% dokładnością, możesz po prostu włożyć 1-sekundowe opóźnienie.

$('#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
Author: lonesomeday,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-03 11:51:00

Chociaż rozwiązanie hitCallback jest dobre, wolę ustawienie pliku cookie i wyzwalanie zdarzenia z następnej strony. W ten sposób awaria w GA nie zatrzyma mojej strony:

// 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
Author: jsalvata,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-16 07:08:49

Tak się robi wywołania zdarzeń w gtag.js, aby upewnić się, że dane Google Analytics są wysyłane przed zmianą adresu URL strony:

gtag('event', 'view_promotion', { myParameter: myValue, event_callback: function () {
    console.log('Done!');
    // Now submit form or change location.href
} });

Źródło: https://developers.google.com/analytics/devguides/collection/gtagjs/sending-hits

 2
Author: Tom Söderlund,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-02 09:27:29

Ok ponieważ przeszliśmy do Universal analytics, chciałbym odpowiedzieć na to samo za pomocą GTM i UA.


GTM:

Śledź Zdarzenie w google analytics po kliknięciu formularza wyślij jest dość łatwe za pomocą GTM.

  • Utwórz znacznik UA i ustaw typ na event w GTM.
  • wypełnij żądaną akcję wydarzenia, kategorię i Etykietę
  • Utwórz WYZWALACZ wysyłania formularza typu.
  • umieścić więcej warunków, aby celować przycisk ty desire
Jest to najlepsze, optymalne i łatwe podejście do operacji.]}

Tutaj wpisz opis obrazka

 1
Author: Tushar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 05:13:24

Kiedy ważne jest śledzenie każdego zgłoszenia, Zwykle umieszczam plik cookie w backendzie ze wszystkimi wymaganymi danymi. Następnie Ustaw regułę w GTM, aby odpalić tag na podstawie istnienia tego 1st party cookie. Tag przetwarza plik cookie dla wymaganych wartości i robi z nimi wszystko, co jest wymagane, i usuwa plik cookie.

Bardziej złożonym przykładem jest Śledzenie zakupów. Chcesz odpalić 5 różnych tagów, gdy użytkownik dokona zakupu. Warunki wyścigowe i natychmiastowe przekierowanie na jakieś mile widziane strona utrudnia poleganie na prostym śledzeniu "onSubmit". Tak więc ustawiłem plik cookie ze wszystkimi danymi związanymi z zakupem i na każdej stronie użytkownik kończy się na GTM rozpozna plik cookie, odpalić "entry point" tag, który będzie analizować plik cookie, push wszystkie wartości do dataLayer, usunąć plik cookie, a następnie sam tag będzie push zdarzeń do dataLayer tym samym wyzwalając 5 tagi, które wymagają danych zakupu (który jest już w dataLayer).

 0
Author: Alexander Filatov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-27 13:25:27