Mar 01 2012

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo verde - articolo per tutti semaforo giallo - articolo avanzato semaforo rosso - articolo per esperti

Calcolo del tempo sulla pagina

autore: categoria: generale

Questo post vale un po’ come aggiornamento del vecchio post “comprendere in pieno il tempo sul sito“, ed è in realtà una traduzione pressoché totale di un post di Justin Cutroni: lo faccio perché è spiegato bene ed è esaustivo sulla vicenda:

Capire le “engagement hits”

La chiave per comprendere come GA calcoli gli intervalli di tempo è capire i dati che vengono inviati a Google. Ci riferiamo a loro affettuosamente come “HITS”. Lo so, è un termine terribile da usare quando si parla di web analytics, ma sono proprio hits.
Le hits in Google Analytics sono le richieste alla __utm.gif. Ce ne sono sei diversi tipi possibili:

  • Pagine viste
  • Eventi
  • Transazioni Ecommerce
  • Singoli prodotti Ecommerce
  • Dati definiti dall’utente (gli antesignani delle variabili personalizzate)
  • Richieste generate dai social plugin

Sebbene queste siano tutte le possibili richieste, non tutte sono “engagement hits”. Con questo termine ci si riferisce a richieste non contrassegnate come “non interattive” e non contenenti esclusivamente dati definiti dall’utente. Filtrando la lista di prima con questa nuova informazione, ci ritroviamo con cinque tipi di engagement hits:

  • Pagine viste
  • Eventi che non siano non interattivi
  • Transazioni Ecommerce
  • Singoli prodotti Ecommerce
  • Richieste generate dai social plugin

Ti starai domandando “e questo che c’entra con i calcoli sul tempo?” Molti sistemi di web analytics usano il tempo trascorso tra le pageviews per tracciare il tempo. Google Analytics usa gli engagement hits per avere un quadro più dettagliato e preciso del tempo sulle pagine e sul sito.

come è calcolato il tempo sulla pagina
Il tempo sulla pagina è calcolato in due differenti modi, e il calcolo dipende dal fatto che la visita abbia una sola o più pagine viste

Quando ci sono più pagine viste
è piuttosto facile da capire, il calcolo è basato sulla differenza di timestamp tra la richiesta alla pagina successiva e quella corrente. Ad esempio

facile no? Molti sistemi di web analytics lavorano in questo modo, ma questo porta a qualche problema: non possiamo calcolare il tempo sull’ultima pagina, perché non ce n’è una successiva da cui sottrarre il timestamp. Ma di questo ne parliamo dopo.

Quando c’è una sola pagina
Molte persone credono che Google Analytics non possa calcolare, e non calcoli, il tempo trascorso sulla pagina quando essa è l’unica della visita; questo è solo parzialmente corretto. Se non c’è un’altra pagina vista nella sessione, Analytics usa il tempo trascorso tra l’apertura della pagina e l’ultimo engagement hits che segue quella pagina vista.


Tempo sulla pagina = timestamp dell'ultimo engagement hit sulla pagina - timestamp della pagina

Chiariamo, se una visita è di una sola pagina, Google Analytics può calcolare il tempo su quella pagina usando (se ci sono, ndMC) altri engagement hits. Se aggiungete molteplici engagement hits alla pagina, avrete una misurazione più accurata del tempo sulla pagina e sul sito, come mostrato ad esempio nella seguente figura:

Come è calcolata la lunghezza della visita
Anche la lunghezza totale della visita usa gli engagement hits per avere numeri più accurati. Invece di usare il solo tempo tra i timestamp delle pagine, la misurazione del tempo totale di una sessione include il tempo trascorso tra il timestamp della prima pagina vista (la landing page) e il timestamp dell’ultimo engagement hit disponibile nella sessione.


Tempo sul sito = timestamp dell'ultimo engagement hit della visita - timestamp della prima pagina vista

Vediamo un esempio reale: qui sotto abbiamo 3 pagine in una visita. Normalmente, se contassimo la lunghezza della visita basandoci solo sulle pagine viste ci perderemmo il tempo trascorso sull’ultima pagina. Ma siccome c’è un evento su di essa (e un evento E’ un engagement hit, ndMC) possiamo avere una fotografia più completa.

E’ importante sottolineare che in questo esempio Google Analytics userà l’engagement hit anche per calcolare il tempo trascorso sulla pagina di uscita. Nell’immagine #1 non era invece possibile perché non c’era nessun engagement hit dopo l’apertura di pagina 3. Nell’immagine #3 invece c’è un engagement hit sulla pagina di uscita, quindi GA è in grado di usare quel pezzo di informazione per calcolare il tempo.

E ricordate, ci sono anche altri engagement hits, come ad esempio le transazioni ecommerce, che possono essere ugualmente usate per calcolare più precisamente la lunghezza di una visita.

Condividi l'articolo:

11 Commenti

  1. Ciao Marco, grazie del post molto interessante. Se ho capito bene però sono gli eventi interattivi ad influire sul tempo della visita e non quelli non interattivi.

  2. però nel elenco puntato hai scritto eventi non interattivi 🙂

  3. Esatto. Ho corretto 🙂

  4. Buongiorno, grazie della guida.

    Supponiamo che io voglia tracciare il tempo di visualizzazione di un video come finti eventi su pagina.

    Ho così sviluppato il codice :

    all’apertura della pagina eseguo un trackPageView che ha come url il nome del mio video,

    successivamente invio dei trackEvent, in questo modo :

    _gaq.push(
    [‘_setAccount’, ‘UA-XXXXXXXX-1’],
    [‘_setDomainName’, ‘www.miosito.it’],
    [‘_trackPageview’, ‘/video.mp4’]
    );

    e degli eventi :

    _gaq.push(
    [‘_setAccount’, ‘UA-XXXXXXXX-1’],
    [‘_setDomainName’, ‘www.miosito.it’],
    [‘_trackEvent’, ‘EventoManuale’, ‘MantenimentoDelTempo’]
    );

    Così facendo a volte ottengo un tracciamento del tempo perfetto, a volte ottengo tempo medio 0, eppure faccio sempre la stessa cosa.

    La cosa che non capisco è come posso eseguire dei trackEvent senza specificare la pagina : in questo caso mantengo “vivo” il tempo della mia pagina attuale o della pagina che ho impostato col trackpageView?

    forse dovri fare entrambe le cose contemporaneamente?

    purtroppo continuo a ottenere risultati a caso ripetendo sempre gli stessi test =\

    grazie del supporto.

  5. gli eventi sono sempre associati alla pagina REALE su cui sono generati, non a quella virtuale.
    In secondo luogo non c’è bisogno di ripetere setaccount e setdomainname nell’evento (che peraltro andrebbe messo senza il www, a meno di specifica esigenza)

  6. Grazie mille per la risposta. Avevo intuito qualcosa del genere , ma questo implica che se volessi tracciare del tempo su una pagina virtuale dovrei farlo per forza tramite trackPageView , e non tramite eventi?

    Proprio in merito a questo tuttavia ho effettuato la seguente prova :

    _gaq.push(
    [‘_setAccount’, ‘UA-xxxxxx-1’],
    [‘_setDomainName’, ‘www.miosito.it’],
    [‘_trackPageview’]
    );

    _gaq.push(
    [‘_setAccount’, ‘UA-xxxxxxxx-1’],
    [‘_setDomainName’, ‘www.miosito.it’],
    [‘_trackEvent’, ‘EventoManuale’, ‘MantenimentoDelTempo’]
    );

    inviando numerosi eventi, pensavo di tracciare il tempo medio in pagina, invece ottengo un tempo medio in pagina 0.

    Avrei invece dovuto ottenere del tempo medio? sto sbagliando qualcosa?

    grazie mille.

  7. non mi risulta che si possa tracciare il tempo su una pagina virtuale tramite gli eventi…

    il codice – a parte le funzioni in più sull’evento, mi sembra corretto, senza vederlo è difficile dare una valutazione…

  8. Non risulta neanche a me, ma ne ho bisogno. Allora ho pensato di risolvere il problema facendo in modo che :

    all’apertura della pagina traccio l’apertura su una pagina finta e anche su una pagina finta che utilizzerò per tracciare il tempo :
    _gaq.push(
    [‘_trackPageview’,”pagina_finta”]
    );

    _gaq.push(
    [‘_trackPageview’,”pagina_finta_tempo”]
    );

    ed ogni 6 secondi invio un altro page view
    _gaq.push(
    [‘_trackPageview’,”pagina_finta_tempo”]
    );

    solo che questa volta ottengo un tempo medio in pagina di 5 secondi, mentre tutti gli esempi effetuati precedentemente con le trackpageview virtuali mi segnavano un tempo perfetto …….

    Accade perchè effettivamente tra una pagina fittizia e l’altra passano esattamente 5 secondi, vero ?

    io speravo si sommassero …

    come posso sommare tempo su una pagina virtuale quindi? =\

  9. scusa, tolto l’evento perché due pagine virtuali?
    al play del video lanci una PV, e ogni x secondi lanci la stessa. in questo modo ti segna il tempo trascorso su quella PV. E cmq se si chiama “tempo medio” un motivo ci sarà 🙂

    Comunque mi è venuto in mente che esiste lo strumento che fa per te: con un po’ di lavoro di un buon programmatore, il Trackusertiming ti consentirà di farlo senza usare le pagine virtuali
    https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingTiming

  10. Intanto grazie mille per i consigli. Se esempio ogni minuto mando una PV e il video dura 10 minuti mi ritrovo 10 visite, giusto? invece è un utente unico ad aver visto il video.

    E poi mi ritroverei con una durata media di 1 minuto, giusto?

    provo a vedere il tracking timing 🙂 Se ne ricavo qualcosa di buono ti invio un report per il tuo blog 🙂

    comunque a parte il numero di visite,

  11. Ho effettuato delle prove : il tempo è sempre un tempo medio, che non si somma mai. Di conseguenza non ho nessuno strumento per segnare “tempi assoluti” e dovrò sommare gli eventi e moltiplicarli per il delta di tempo in cui li ho inviati …

Scrivi un Commento