Wie kann man die Suchbegriffe der Webseitensuche (meist über indexed_search) auch in Google Analytics anzeigen?
Ich versuche an dieser Stelle die Daten, die ich von vielen Stellen zusammengetragen habe, in einem Thread zusammenzufassen.
Ideen und Ansätze
1. urchinTracker()
Zu allererst kam mir die Idee über den guten alten urchinTracker() von Google Analytics die Suchbegriffe nach GA zu übertragen.
1.1 Was ist die urchinTracker() Funktion?
Über die urchinTracker() Funktion von Google Analytics kann man mit Javascript Downloads oder andere Klicks ganz einfach aufzeichnen.
Beispiel Download einer fiktiven Datei mit Aufzeichnung in Google Analytics:
<a href="download.pdf" onclick="urchinTracker('download.pdf')">Download Now!</a> |
1.2 Beispieleinbindung
Über das HTML Template der indexed_search (plugin.tx_indexedsearch.templateFile = EXT:indexed_search/pi/indexed_search.tmpl) kann man das Input Feld in dieser Weise bearbeiten:
<input type="text" name="tx_indexedsearch[sword]" value="###SWORD_VALUE###" onblur="urchinTracker('/searchform/' + this.value);" /> |
1.3 Problem beim urchinTracker()
Seit längerem bietet Google einen völlig neuen Google Analytics Code an (ga.js statt früher urchin.js).
Hier handelt es sich um objektorientierte Programmierung und hat durchaus seinen Sinn. Jedenfalls funktioniert hier die urchinTracker() Funktion nicht mehr und wurde abgelöst durch die Methode _trackPageview()
2. _trackPageview()
Da ich bereits ga.js nutze und nicht auf die veraltete Version umsteigen will, versuche ich es also mit dem Nachfolger.
2.1 Was ist _trackPageview()
Im Prinzip der Nachfolger von urchinTracker() mit gleicher Funktionsweise
Beispiel Download einer fiktiven Datei mit Aufzeichnung in Google Analytics:
<a href="download.pdf" onclick="pageTracker._trackPageview('download.pdf')">Download Now!</a> |
Hinweis: Der Google Code zum Einfügen des Javascripts darf nicht am Ende des HTML stehen sondern muss gleich zu Beginn nach dem anfänglichen BODY Tag eingefügt werden!
2.2 Beispieleinbindung
Für unsere indexed_search also:
<input type="text" name="tx_indexedsearch[sword]" value="###SWORD_VALUE###" onblur="pageTracker._trackPageview('/searchform/' + this.value);" /> |
2.3 Problem auch hier
Die Aufzeichnung an sich funktioniert:
Dennoch wäre es noch schöner, wenn Google Analytics wüsste, dass es sich um die Suche handelt. Hiermit ergeben sich eine Reihe schöner Features:
3. Website-Suche von Google Analytics
3.1 Was ist die Website-Suche von GA?
Über den Menüpunkt Website-Suche von GA gibt es eine Reihe von Features (siehe Link unten), da Google explizit weiß, dass es sich um eine Suchfunktion handelt:
3.2 Einbindung der indexed_search für die Website-Suche von Google Analytics
Im Prinzip soll das ziemlich einfach funktionieren. Man sagt Google wie der GET Parameter der Suche ist und die Aufzeichnung startet (so die Theorie). Im Bereich „Analytics-Einstellungen“ kann man das entsprechende Projekt bearbeiten. Danach im Bereich Profilinformationen auf Bearbeiten klicken und die Suche aktivieren.
Meine Eingabe natürlich: „tx_indexedsearch[sword]“. Klar kann GA nur GET Parameter auslesen – weswegen ich also die Suche auch noch auf GET umgestellt habe.
3.3 Probleme mit tx_indexedsearch[sword]
Leider blieb das alles ohne Erfolg. Zu diesem Zeitpunkt kann ich nur mutmaßen, warum Google die Suche nicht erfassen konnte – diese beiden Fehler könnte ich mir vorstellen:
- Zu viele GET Parameter in Verwendung
- Probleme mit Parametern in zweiter Ebene param1[param1.1]
3.4 Lösung über fiktiven Parameter
Zuerst habe ich wieder auf POST umgestellt – so wie es sich auch gehört. Im Anschluss habe ich in den Einstellungen von GA den Suchparameter auf „s“ geändert (nicht mehr „tx_indexedsearch[sword]“).
Danach über ein kleines JS den Suchparamter &s= an die Zieladresse im Suchformular anhängen:
<form onsubmit="document.forms[0].action = document.forms[0].action + window.document.forms[0].elements[3].value;" action="###ACTION_URL###?s=" method="post" name="tx_indexedsearch"> |
Damit wird die Seite zielseite.html?s=SUCHWORT geöffnet. TYPO3 kann in der Regel mit einem Parameter &s=xx nichts anfangen aber Google schon.
Hinweis: Die [3] steht für das vierte Feld im ersten Formular (Beispiel unten mit ID) – wenn noch drei Hiddenfields vor dem eigentlichen Suchfeld kommen.
3.5 Kompletter HTML Code des Formulares
<form action="de/special/ergebnisse.html" method="post" class="search search_form" id="search_form" onsubmit="document.getElementById('search_form').action = document.getElementById('search_form').action + '?s=' + document.getElementById('search_input').value;"> <input type="text" name="tx_indexedsearch[sword]" value="Suchbegriff" onfocus="if(this.value=='Suchbegriff') this.value='';" onblur="if(this.value=='') this.value='Suchbegriff';" class="search search_input" id="search_input" /> <input type="submit" value="Jetzt Suchen" class="search search_submit" /> </form> |
4. Ich bin glücklich
Wer es also bis hier her geschafft hat, darf sich – genau wie ich – glücklich schätzen.
Im Übrigen kann man in den Einstellungen von Google auch noch auswählen, dass der Such-Parameter aus der URL Zeile im Browser entfernt wird. Das habe ich noch nicht probiert, wäre aber der ideale Weg, denn &s= bringt dem User nichts, wenn keine wirkliche Funktion dahinter steht.
It just works…
Links zum Thema:
- urchinTracker() Beispiel
- _trackPageview() Beispiel
- Vorteile der GA Website-Suche
- Suchparameter an Zielseite anhängen
- Indexsuche auf jeder Seite einbinden
Cheers, Alex