2011-12-15 13 views
9

Sul mio sito Web ho quattro variabili personalizzate. Il mio problema è che Google Analytics per qualche ragione ne sta registrando solo tre. Lo script nella pagina che non funziona correttamente si presenta così:La variabile personalizzata di Google Analytics non viene impostata

<script type="text/javascript"> 
    var _gaq = _gaq || []; 

    _gaq.push(['_setCustomVar',3,'Category 3','some value']); 
    _gaq.push(['_setCustomVar',4,'Category 4','some value']); 

    _gaq.push(['_setAccount', 'UA-XXXXXXXX']); 
    _gaq.push(['_trackPageview']); 

    (function() { 
     var ga = document.createElement('script'); 
     ga.type = 'text/javascript'; 
     ga.async = true; 
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
    })(); 
</script> 

Questa pagina dovrebbe monitorare due delle variabili personalizzate nell'indice 3 e 4. Un altro pagina sta monitorando le variabili personalizzate in indice 1 e 2.

In Google Analytics posso vedere che ha registrato le categorie nei primi tre slot (Indice 1-3) ma la categoria nel quarto slot non viene mai registrata. According to the documentation puoi avere fino a cinque slot.

Qualcuno può far luce sul motivo per cui la quarta variabile non viene mai registrata?

Aggiornamento

Controllo variabile utme nella richiesta di analisi fornito alcuni risultati interessanti.

Page 1, che sta lavorando, utilizza il seguente script di monitoraggio:

_gaq.push(['_setCustomVar',1,'Category 1','value1']); 
_gaq.push(['_setCustomVar',2,'Category 2','value2']); 

Il risultato è il seguente parametro utme:

8(Category 1*Category 2)9(value1*value2) 

Pagina 2, che non funziona, usa il seguente script di tracciamento:

_gaq.push(['_setCustomVar',3,'Category 3','value3']); 
_gaq.push(['_setCustomVar',4,'Category 4','value4']); 

Ciò risulta nel seguente parametro utme:

8(3!Category 3)9(3!value3) 

E 'chiaramente ignorando l'ultimo valore personalizzato che sto cercando di tracciare!

+0

Dare il codice originale potrebbe aiutare a rispondere meglio .. è tutto vago con i dati attuali. –

risposta

12

ho avuto difficoltà a ottenere questo a lavorare troppo e alla fine è stato un caso di non leggere il documento con sufficiente attenzione.

Non

sicuro se si sta ponendo il codice vero e proprio che si sta utilizzando per impostare le variabili, se non, assicuratevi di essere in conformità con questo avvertimento:

La lunghezza totale combinato di qualsiasi nome di variabile personalizzata e il valore non può superare 128 byte. Tieni presente che non è equivalente a 128 caratteri. Poiché i nomi e i valori sono codificati con URI quando vengono memorizzati, alcuni caratteri usano più di un byte. Ad esempio, = è archiviato come% 3D anziché = e utilizza 3 byte anziché 1. Per ottenere un elenco di valori codificati URI, cercare nel web il riferimento alla codifica dell'URL.

Avete controllato le altre pratiche consigliate? Questi due potrebbero essere una fonte di problemi per te (se stai utilizzando anche variabili di sessione):

Non utilizzare nomi di chiavi duplicati tra gli slot. Sono disponibili fino a 5 variabili personalizzate simultanee da utilizzare in una singola richiesta (ad esempio visualizzazione di pagina o chiamata di evento). La somma di tutti i varaiables personalizzati non può superare 5 in una determinata richiesta (ad esempio non è possibile impostare contemporaneamente 5 visitatori e 5 variabili personalizzate di sessione).

+1

@Christian Hagelid: assicurati anche che non ci siano errori di sintassi (come virgolette mancanti o altri caratteri "illegali" di GA). Non posso davvero dirlo, dal momento che hai appena pubblicato valori di esempio. Inoltre, se possibile, fornire un collegamento alla pagina in questione. –

+1

Grazie! Il problema era che la lunghezza combinata del nome e del valore della variabile era troppo lunga. #RTFM –

+7

Per chiunque altro, Google ha aumentato la lunghezza massima di 128 caratteri. –

1

prova a cambiare l'ordine del tracking per:

_gaq.push(['_setAccount', 'UA-XXXXXXXX']); 

_gaq.push(['_setCustomVar',3,'Category 3','some value'],['_setCustomVar',4,'Category 4','some value']); 

_gaq.push(['_trackPageview']); 

Vedi Custom Variable Not Showing Up in Google Analytics e _gaq push

+0

Grazie per aver postato. Ho guardato il link e uno dei commenti mi ha spinto a controllare il parametro utme nella richiesta. Ancora non più vicino alla risoluzione del problema, ma almeno posso verificare che il parametro non venga mai passato nella richiesta a Google Analytics –

4

Ho anche avuto problemi nel far funzionare le variabili personalizzate, e siamo diventati consapevoli dei (numerosi) trucchi che dovresti conoscere.

grattacapi comuni

(La documentazione ufficiale fa stato la maggior parte di questi, ma è molto facile sbagliare, e difficile da capire perché.)

  • Utilizzare un numero di slot valido. Per impostazione predefinita si tratta di un numero intero compreso tra 1 e 5, ma gli utenti di Premium Analytics disporranno di più slot disponibili.
  • Il valore per la variabile personalizzata deve essere una stringa . Lo dice nella documentazione, ma non dare per scontato che un numero intero (ad esempio 1) venga convertito in una stringa (ad esempio "1"). Devi convertirlo con il metodo toString() (o facendo value + ""). Che cosa succederà se non lo fai (questo è successo a noi, vedi) è che il nome della variabile personalizzata verrà impostato, ma senza valore! - Nei tuoi rapporti vedrai la variabile, ma quando fai clic su di esso, riceverai il messaggio minaccioso: "Non ci sono dati per questa vista".
  • Il nome per la variabile personalizzata non deve essere valutato su false. Pertanto non è possibile utilizzare il numero intero 0.
  • Il valore per la variabile personalizzata non deve essere valutato su false. I valori 0, false, null, undefined e la stringa vuota "" sono tutti valutati come falsi, pertanto non verranno utilizzati nei rapporti di Analytics. (In ogni caso, non si dovrebbero impostare valori che non siano stringhe.)
  • La lunghezza combinata del nome e del valore della variabile personalizzata non deve superare i 128 caratteri. Altre persone hanno avvertito che devi prendere in considerazione la decodifica URI (cioè trattare il carattere '=' come 3 caratteri, perché viene codificato in '% 3D'-tuttavia abbiamo guardato il codice da soli, e non 't sembra essere il caso. (almeno, non da oggi.)
  • non utilizzare nomi chiave duplicati attraverso fessure.
  • Chiamare la funzione _setCustomVar() quando può essere impostato prima di una visualizzazione di pagina o richiesta GIF evento: In alcuni casi ciò potrebbe non essere possibile e sarà necessario impostare un'altra richiesta _trackPageview() dopo aver impostato una variabile personalizzata. In genere, è necessario solo in quelle situazioni in cui l'utente attiva una variabile personalizzata di sessione o di visita , w qui non è possibile associare tale metodo a una chiamata di verifica di pagina, evento o di e-commerce.
  • Controllare le collisioni tra variabili di pagina e di sessione. Se è necessario tenere traccia di un numero elevato di variabili personalizzate, prendere in considerazione l'utilizzo di una matrice di slot per evitare che si verifichino collisioni.

debug

Se si imposta una variabile personalizzata in cui il valore è falso, o la lunghezza combinata va oltre il limite di 128 caratteri, la funzione _setCustomVar() tornerà false. È possibile uscita il valore di ritorno al vostro browser per vedere cosa sta succedendo:

setTimeout(function() { 
    var tracker = _gaq._getAsyncTracker(); 
    console.log(tracker._setCustomVar(slot, name, value, scope)); 
    // should normally print 'true' 
}, 2000); 

(è necessaria la funzione setTimeout(), supponendo che si sta utilizzando lo snippet asincrono, perché altrimenti la variabile _gaq non viene impostato questo. non è pucker codice, ovviamente, ma è abbastanza buono per il debug.)

Guardando richiesta __utm.gif

Infine, se avete ancora problemi, aprire gli strumenti di sviluppo, e guardare le richieste il browser sta facendo. Dovresti visualizzare una richiesta per http://www.google-analytics.com/__utm.gif?....

Quindi esaminare la richiesta completa per il parametro utme. Esso dovrebbe essere simile a questo:

&utme=8(var1*var2*var3)9(val1*val2*val3)11(scope1*scope2*scope3) 

Se vedi un punto esclamativo ovunque (preceduto da un intero), ciò significa che nessun valore è stato fissato per quella variabile personalizzata. (Il numero intero è solo un intero incrementato, non significa nulla di speciale.)

(Si potrebbe notare che alcuni valori sono fuggiti con gli apostrofi Il metodo di fuga è la seguente:. '0 significa '; '1 significa ); '2 significa *; ; significa !.) (Naturalmente l'intera stringa di richiesta sarà anche codificata con URI.)

Problemi correlati