Ok Yandex! Wo sind unsere Ziele?

Die Geschichte von Yandex.Metrika ReachGoal, dem Mädchen Lida und dass es keine unlösbaren Probleme gibt



Die Welt ist unvollkommen, das World Wide Web ist noch unvollkommener. Manchmal können Sie Ihre Augen davor schließen. Aber nicht nur, wenn ein schönes Mädchen namens Lida aus der „Marketingabteilung“ vor Ihnen steht, in Ihre Augen schaut und die Frage stellt: „Aus irgendeinem Grund unterscheiden sich die Daten, die ich im Bestelltrichter sehe, in Y. Metrica von denen was ich in unserem Buchhaltungssystem sehe. Und wir haben mehr Aufträge. “

Da Mädchen mit schönen Augen auf jede mögliche Weise geliebt und geschätzt werden sollten, wurde beschlossen, die Protokollierung von Ereignissen, die während des Bestellvorgangs mit Kunden auftreten, zu verknüpfen.

Insbesondere ohne auf einen interessanten Effekt zu hoffen und daher nicht klug zu sein, wurde schnell ein Dienst hinzugefügt, der die Ereignisse auf dem Frontend in den Browsern der Besucher unserer Website aufzeichnet.

Zunächst waren wir an Ereignissen interessiert, die während der Ausführung von Y. Metrica-Code auftreten können, nämlich yaCounterXXXXXX.reachGoal ().

Wir richten uns also überall dort ein, wo wir die Ausnahme abfangen und diese Ereignisse an den Server senden müssen:

try { yaCounterXXXXXX.reachGoal("EVENT_XXX"); } catch(e) { $.get("/front/service/event", {event: "YM-warning", goal: " EVENT_XXX ", message: e.message}); } 

Die Zeit vergeht, wir erinnern uns, dass wir eine Angelrute geworfen haben, aber den Fang nicht überprüft haben.
Wir schauen uns die Protokolle an und sehen dort zu unserer Überraschung ungefähr Folgendes:

 [2018-04-17 09:04:51.431] [BASKET_LOAD] [yaCounterXXXXXX is not defined] [Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36] [2018-04-17 09:09:18.082] [BASKET_LOAD] [yaCounterXXXXXX is not defined] [Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:59.0) Gecko/20100101 Firefox/59.0] [2018-04-17 09:09:21.369] [BASKET_LOAD] [yaCounterXXXXXX is not defined] [Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:59.0) Gecko/20100101 Firefox/59.0] [2018-04-17 09:09:24.990] [BASKET_LOAD] [yaCounterXXXXXX is not defined] [Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:59.0) Gecko/20100101 Firefox/59.0] [2018-04-17 09:09:27.001] [] [yaCounterXXXXXX is not defined] [Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:59.0) Gecko/20100101 Firefox/59.0] [2018-04-17 09:12:44.778] [ORDER_CREATED] [yaCounterXXXXXX is not defined] [Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:59.0) Gecko/20100101 Firefox/59.0] ...    

Eine schnelle Berechnung ergab, dass etwa 3..4..5% der Ereignisse im Korb an Y. Metrika vorbeigehen. Lida hatte recht. Und da das Mädchen Recht hat, muss etwas getan werden. Obwohl, wenn das Mädchen falsch liegt, müssen Sie noch etwas tun.

Wir beginnen nach einem Grund zu suchen. Der Zähler ist richtig eingestellt, die meisten Ereignisse werden von ihnen korrekt protokolliert. Wir versuchen, das Vorhandensein ähnlicher Probleme bei Kollegen im Workshop zu googeln. Nichts dergleichen wurde gefunden.

Yandex TechSupport antwortete mit einem Brief, der einen Link zur Dokumentation für die Installation des Metrikzählers enthielt, wofür natürlich ein separates, herzliches Dankeschön!

Ich werde nicht alle Hypothesen beschreiben, die wir versucht haben. Das Fazit ist, dass zum Zeitpunkt des Ladens der Seite der Yandex.Metrica-Zählercode nicht in den Browser des Clients geladen und dort nicht initialisiert wurde. Es kann sich um einen Werbeblocker und / oder Tracking-Tracker handeln. Es können Netzwerkprobleme zwischen dem Client und dem Yandex-Server auftreten (dies ist unwahrscheinlich).

Ich musste Lida bei den Händen nehmen, in ihre bodenlosen Augen schauen und widerwillig die harte Wahrheit sagen: "Lida, wir müssen uns damit abfinden, dass einige Besucher unserer Website keine Ereignisse von" Bestellung / Verweigerung der Bestellung "in Y. Metrika erhalten. Aber wir werden uns definitiv etwas einfallen lassen. "

Der Sommer verging und der Herbst neigte sich dem Ende zu, als Lida wieder an der Schwelle des Büros erschien. In ihren Augen voller Tränen wurde klar, dass dieses unglückliche Interesse sie daran hinderte, ihren Vorgesetzten schöne Berichte zu zeigen und dadurch einen jährlichen Bonus zu erhalten, den sie bereits in ihrem Budget für Reisen nach Thailand für die Neujahrsferien enthielt.

Das Herz zitterte. Das gesamte Team der Front-End-Gruppe wurde zusammengestellt und in harter Form angewiesen, "von hier bis zum Mittagessen zu graben!" Die Aufgabe war es, dieses Problem mit allen Mitteln zu lösen! Nicht das !!! Andernfalls kann Lida nicht nach Thailand gehen ...

Frontend wollte lange nicht graben und eine schnelle Lösung wurde fast sofort angeboten:

 //     .    , //         //     var n = document.getElementsByTagName("script")[0], s = document.createElement("script"); s.src = "/js/yaScriptLocal.js"; n.parentNode.insertBefore(s, n); 

Das Ergebnis dieser Entscheidung ist in der Grafik zu sehen. Dies ist eine Analyse des Ereignisprotokolls



Wie Sie sehen können, ist die Anzahl der Fehler auf fast 0 gesunken

Wenn Sie den Erfolg des Herunterladens von Yandex.Metrica-Skripten auf Ihrer Website noch nicht überprüft haben, überprüfen Sie dies unbedingt. Interessante Entdeckungen können auch Sie erwarten.

Haftungsausschluss: Ich habe Verständnis dafür, dass die oben genannte Lösung alles andere als optimal ist. Ich würde mich freuen, Gedanken und Meinungen zu diesem Thema zu hören.

Source: https://habr.com/ru/post/de437476/


All Articles