Piwik: Aufenthaltsdauer und Absprungrate korrigieren

Bereits vor drei Jahren habe ich einen Artikel über die Aufenthaltsdauer und Absprungrate in Piwik geschrieben. Durch ein Kommentar wurde ich darauf aufmerksam gemacht, dass sich beim Piwik-Tracking-Code etwas getan hat, also habe ich es mir genauer angeschaut.

Der aktuelle Piwik-Tracking-Code sieht, je nach dem welche Optionen man ausgewählt hat, so oder so ähnlich aus:

<script type="text/javascript">
    var _paq = _paq || [];
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
    (function() {
        var u = (("https:" == document.location.protocol) ? "https" : "http") + "://www.virtual-maxim.de/piwik/";
        _paq.push(['setTrackerUrl', u + 'piwik.php']);
        _paq.push(['setSiteId', 1]);
        var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
        g.type = 'text/javascript';
        g.defer = true;
        g.async = true;
        g.src = u + 'piwik.js';
        s.parentNode.insertBefore(g, s);
    })();
</script>
<noscript><p><img src="http://www.virtual-maxim.de/piwik/piwik.php?idsite=1" style="border:0;" alt="" /></p></noscript>

Der neue Tracking-Code sieht komplizierter aus, tut aber genau das gleiche, nur mit dem kleinen Unterschied, dass das Piwik-Skript asynchron ausgeführt wird. Das bedeutet, dass der Browser nicht wartet bis Piwik geladen ist, sondern sofort andere Elemente lädt. Das Piwik-Skript wird parallel dazu im Hintergrund geladen. Durch diese Vorgehensweise wird der Websiteaufruf beschleunigt.

An der Methode zur Korrektur der Aufenthaltsdauer, die ich im ersten Artikel beschrieben habe, hat sich nichts geändert.
Ich habe den Code trotzdem etwas angepasst und verbessert.

Man kann jetzt die Zeitintervalle für den erneuten Piwik-Aufruf einfacher erweitern. Zudem läuft die Stoppuhr nur falls das Fenster oder der Tab aktiv sind. Dafür wird in Abständen von 0,5 Sekunden überprüft ob, das Fenster aktiv ist und nur wenn es der Fall ist, die Uhrzeit der Stoppuhr runtergezählt.

Um den Code zu benutzen, muss man ihn einfach hinter den Piwik-Tracking-Code einfügen.
Natürlich muss man dabei auch den Piwik-Pfad anpassen (einfach aus dem Piwik-Tracking-Code kopieren).

<script type="text/javascript" async>

    // Piwik-Pfad angeben
    var u = (("https:" == document.location.protocol) ? "https" : "http") 
    + "://www.virtual-maxim.de/piwik/";

    // Zeitabstände (in Sekunden) zwischen den einzelnen Aufrufen
    // Falls gewünscht, anpassen
    var recall_times = [10, 10, 10, 30, 60, 120, 120, 120, 300, 300];


    function ptrack()
    {
        var piwikTracker = Piwik.getTracker(u + "piwik.php", 1);
        piwikTracker.trackPageView();
    }

    // beim Schließen des Fensers noch mal aufrufen
    window.onunload = window.onbeforeunload = ptrack;

    var tid;
    function piwik_recall() {

        // Piwik aufrufen
        try {
            ptrack();
        } catch (err) {
        }

        if (recall_times.length == 0)
        {
            return;
        }

        var delta = 500;
        var time = recall_times.shift() * 1000;

        tid = setInterval(function() {
            if (window.blurred) {
                return;
            }
            time -= delta;
            if (time <= 0) {
                clearInterval(tid);
                piwik_recall();
            }
        }, delta);
    }
    ;

    piwik_recall();

    window.onblur = function() {
        window.blurred = true;
    };
    window.onfocus = function() {
        window.blurred = false;
    };
    
</script>
<!-- End Piwik Code -->

Wie auch bei dem letzten Skript, hat man bei dieser Methode den Nachteil, dass die Anzahl an Aktionen nicht mehr stimmt.

Viel Spaß beim Ausprobieren! Bitte um eine Rückmeldung, ob das Skript tut was es soll.

11 Kommentare zu “Piwik: Aufenthaltsdauer und Absprungrate korrigieren”

  1. Henryam 30. July 2014 um 19:20 Uhr

    Moin Maxim!

    Danke für den neuen Code! Habe ihn gerade hinter meinem Piwik-Code angefügt und schaue was sich tut. Ich gebe dann nochmal Feedback!

    Gruß
    Henry

  2. Henryam 31. July 2014 um 07:42 Uhr

    Kurzes Feedback:

    Scheint sehr gut zu funktionieren, ich habe das Script ja erst seit gestern 19:00 Uhr drin und dementsprechend sind es nicht mal 24/h, aber Ergebnisse zeigen sich jetzt schon:

    VORHER
    Absprungrate: 87%
    Aufenthaltsdauer: 46s

    NACHHER
    Absprungrate:2m1s
    Aufenthaltsdauer:62%

    Denke mal heute Abend sieht es noch klarer aus – danke Maxim! :)

  3. Maximam 31. July 2014 um 12:13 Uhr

    Dann hat sich die Arbeit ja gelohnt ;) Bitte.

  4. Henryam 31. July 2014 um 17:41 Uhr

    Heute bin ich sogar bei 10% Absprungrate.. <3 Das Script tut also was es soll :)

  5. Maxam 26. September 2014 um 11:21 Uhr

    Hallo,
    also das mit der Verweildauer versteh ich und ergibt auch Sinn.

    Wieso sollte sich jedoch die Absprungrate verringern? Das macht für mich keinen Sinn.

    Wenn ein Benutzer auf die Webseite (Einstiegsseite) kommt (ohne dein JS Code) und das Browser Fenster schließt, wird die Absprungrate hochgezählt.
    Wenn ein Benutzer auf die Webseite (Einstiegesseite) kommt (mit deinem JS Code) und das Browser Fenster schließt, wird die Absprungrate doch logischerweise auch hochgezählt?

    Oder habe ich da einen Denkfehler?

    Def. Absprungrate:
    Als Absprungrate wird der Prozentsatz der Besucher bezeichnet, die während eines Besuchs auf Ihrer Website nur eine Seite anzeigen. (Quelle Google Support)

  6. Maximam 26. September 2014 um 20:18 Uhr

    @Max:
    Ich weiß ehrlich gesagt nicht mehr, wie Piwik die Absprungrate berechnet (hat). Ich glaube, dass ein Besuch als Absprung gewertet wurde, wenn der Benutzer nur eine Seite besucht hat und dort keine Aktionen (Klicks) getätigt wurden (+ Verweildauer 0 s ?). Das heißt den Benutzer hat die Website nicht interessiert.
    Wenn aber auf der ersten Seite eine Aktion ausgeführt wurde, so wird es als Hinweis dafür benutzt, dass der Benutzer länger auf der Website unterwegs ist, z.B. Text liest und nicht nur die Website im Tab offen hat. Das wäre dann kein Absprung.

    Das unterscheidet sich von der Googles Definition, ist für mich aber logischer. Schließlich möchte ich ja nur wissen, ob die Besucher auf der Website das finden, was sie suchen.

  7. Janam 26. January 2015 um 23:55 Uhr

    Hi,

    ich hatte ebenfalls das selbe Problem und habe das ein bisschen anders gelöst: Ich habe die Methode trackEvent(category, action, [name], [value]) benutzt anstatt einen neuen PageView zu erzeugen.

    Außerdem habe ich den Tracker anders geholt:

    function ptrack() {
    if(typeof Piwik !== 'undefined') {
    var tracker = Piwik.getAsyncTracker();
    tracker.trackEvent('Reading Page', 'Ping');
    }
    }

    Das hat den Vorteil, dass man den Piwik-Code ganz normal einfügen kann und diese Funktion einfach zusätzlich definiert. D.h. keine zusätzlichen anpassungen! ptrack() kann man dann wie gehabt mit Deiner piwik_recall() Funktion o.ä. aufrufen.

    Viele Grüße
    Jan

  8. güntheram 20. August 2015 um 16:46 Uhr

    hallo maxim,
    vielen dank für den code!
    sehr gute beschreibung. konnte ich sogar nachvollziehen und das soll schon was heißen :-)
    gruß günther

  9. Chrisam 3. December 2015 um 23:58 Uhr

    Hallo,

    ist der o.g. Code eigentlich noch aktuell, was das neueste Piwik angeht?

    Danke.

  10. Henryam 5. September 2016 um 16:57 Uhr

    Hm, scheint leider nicht mehr mit dem aktuell ausgegebenen Code zu funktionieren :(

  11. Henryam 5. September 2016 um 17:03 Uhr

    Nachtrag: Hier ein Snippet das perfekt funktioniert und scheinbar die Anzahl an Aktionen unangetastet lässt: http://computer-service-remscheid.de/piwik-und-die-absprungrate-mit-einer-zeile-code-bessere-daten-erhalten/

Trackback URI | Kommentare als RSS

Einen Kommentar schreiben

XHTML: Du kannst folgende Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <sub> <sup>

Hinweis: Ich behalte mir das Recht vor solche Kommentare, die Beleidigungen oder rechtswidrige Inhalte beinhalten erst nach einer Editierung freizugeben oder kommentarlos zu löschen. Ähnliches gilt auch für Kommentare die offensichtlich nur der Suchmaschinenoptimierung dienen.