Sep 09 2008
funzioni: _setDomainName()
La funzione _setDomainName(stringa) serve a impostare o forzare il dominio nei cookie di GA; questa informazione scritta nel cookie è infatti la sola che Google Analytics usa per determinare su quale dominio stia avvenendo la visita dell’utente. _setDomainName può assumere tre soli valori, cioè “auto”, “none” o il nome del dominio, e per definizione – ovvero quando non è invocata esplicitamente – è impostata su “auto”: questo fa si che GA scriva nel cookie il dominio estrapolandolo dall’oggetto location del DOM (Document Object Model).
Un esempio tipico in cui è necessario utilizzare questa funzione è la tracciatura di un dominio e un sottodominio nello stesso profilo, poniamo www.miosito.it e sub.miosito.it. Per prima cosa bisogna aggiungere al codice di monitoraggio la seguente riga
pageTracker._setDomainName(".miosito.it");
facendo bene attenzione al punto prima del dominio (è all’incirca equivalente a dire *.miosito.it), dopodiché è consigliato impostare un filtro per discernere le pagine all’interno dei report. Essendo i domini tracciati come fossero una sola cosa, infatti, le visite corrispondenti a www.miosito.it/index.asp e sub.miosito.it/index.asp verrebbero sommate a livello di pageview. Il filtro è questo:
e scrive al posto dell’URI della richiesta (index.asp) la stringa completa host-URI (www.miosito.it/index.asp).
L’ultima modalità di chiamata a _setDomainName() è “none” e va usata nel caso in cui si voglia disabilitare il tracciamento tra domini differenti o in quello molto più frequente in cui si voglia farlo avendone però il preciso controllo, quindi usandolo in congiunzione alle funzioni _setAllowLinker(), Link() e Linkbypost() che vedremo prossimamente.
Ciao Marco,
ti faccio i miei complimenti per questo spendido blog, una risorsa unica nel suo genere. Complimenti!!
S.
e io ti ringrazio di cuore 🙂
Ciao Marco,
avrei bisogno un chiarimento.
Ho letto sulla guida di analytics ufficiale l’impostazione dei sottodomini e poi il tuo post. C’è una differenza sul punto aggiunto prima del dominio nel _setDomainName. Tu lo raccomandi ma non mi è chiaro perchè e perchè invece la guida di analytics non lo indica.
Grazie mille in anticipo.
e grazie per il tuo blog che mi facilita la vita…
Elena
Come non detto…ho appena confrontato la guida in Italiano con quella in inglese (in inglese viene richiesto il .nomedominio.it in italiano no)
però é sempre piacevole trovare “le pecche”…:-(
Ciao Marco, complimenti di rito per il blog, di assoluta eccellenza, e domanda: possibile che l’inserimento del filtro “distinzione pagine sottodomini” incida sul tracciamento degli obiettivi? Come devono essere definite le pagine obiettivo e gli step del funnel (URL assoluta/URL relativa) per poter essere riconosciuti? Da quando ho attivato la combinazione setDomainName() e questo filtro gli obiettivi (che si trovano in pagine sul dominio principale in protocollo htttps://) non vengono più rilevati…
di solito imposto gli obiettivi come regular expression, quindi non fa differenza se c’è il filtro o no, però effettivamente negli altri due casi, sovrascrivendo l’URI della richiesta, potrebbe sorgere qualche problema.
Non lavori su risorse gratuite? Strano che non hai citato il problema con l’obiettivo adsense… oggi ho sclerato un po’ e mi son messo a googlare…
https://www.google.com/adsense/support/bin/answer.py?hl=it&answer=99906
Non ti faccio i complimenti per il blog… perchè è un sito in più che mi demotiva a leggere in inglese… però devo dire che hai un perfetto italiano.
Saluti.
non ho capito la questione delle risorse gratuite. Quanto alla modifica per Adsense, quando ho scritto questo post non esisteva ancora l’integrazione. Il resto lo prendo come un complimento: se demotivo la tua lettura inglese deve essere perché i miei articoli sono esaustivi ed originali 🙂
Certo, intendevo quello, ma non son avezzo far complimenti vista la scarsa qualità che trovo in italia, ma questa è davvero un ottima risorsa.
Per risorse gratuite intendevo “siti che vivono da adsense”, nient’altro.
Buon lavoro.
Nella documentazione sia italiana che inglese del monitoraggio su più domini si indica che la seguente istruzione deve essere su entrambi i domini:
pageTracker._setDomainName(“none”);
http://www.google.com/support/analytics/bin/answer.py?hl=en&answer=55503
ho trovato però questo documento che indica la presenza solo sul dominio secondario:
http://code.google.com/apis/analytics/docs/tracking/gaTrackingSite.html#multipleDomains
inoltre aggiunge una funzione non indicata nel primo doc:
pageTracker._setAllowHash(false);
sono alternativi?
nessuno specifica inoltre se le funzioni di Link() e Linkbypost() devono essere utilizzate anche per il rientro dal dominio secondario al dominio primario.
“you’ll need to add the _link function to any links between the domains”, quindi si, anche nei link di ritorno.
La differenza nei codici è perché nel secondo esempio c’è di mezzo anche un sottodominio, mentre nel primo no.
se viene cliccato un dominio che ha una redirect 301 sul mio comporta qualche problema?
che io sappia i 301 sono trasparenti, e si portano pure dietro il referrer originario. quindi no.
Scusa Marco,
sto cercando di capire per bene il funzionamento del tutto, e non ho mai sbattuto il naso in queste cose.
1) Dopo avere introdotto le modifiche che hai segnalato qui: http://www.goanalytics.info/regalo-di-natale-da-google-analytics/ (paragrafo “Nuovo processo di creazione del codice di monitoraggio”) il tuo post è comunque consistente?
2) Se avessi un sito con un codice di monitoraggio, direi “base”; e dovessi tracciare un sottodominio creato di recente, deduco dal tuo post che non dovrei quindi creare un nuovo profilo, bensì aggiornare il codice di monitoraggio del dominio principale (con quello in cui è presente la funzione SetDomainName) ed includere lo stesso codice anche nel sottodominio. Ricollegandomi alla domanda 1, ha ancora senso creare il filtro o, date gli ultimi sviluppi, GA stesso si occuperà automaticamente delle differenziazioni dei sottodominî in fase di reportistica?
Grazie e scusa il disturbo,
~P
è consistente per la teoria, ma in pratica è il processo di creazione che si occupa di aggiungere la riga. Restano però casi “strani” da gestire a mano.
Il processo di creazione dello script NON si occupa di creare l’eventuale filtro, che resta di tua competenza. Quindi si, devi farlo a mano.
Ho un sito con dominio X che è una sorta di carrello elettronico, a lui si riferiscono i siti A e B.
Il problema è che se passo da A a X viene scritto il Cookie con il referal di A se poi accedo DIRETTAMENTE a X per utilizzare un carrello di B mi utilizza i cookie di A sull’account di GA di B, quando invece mi aspetterei il referal che mi ha portato direttamente a X (molto spesso direct).
da cosa può dipendere? il codice è secondo specifiche e SetDomainName è ha non per entrambi i siti.
Naturalmente questo succede se uso lo stesso PC con lo stesso browser…
Grazie per una eventuale risposta
direct non è un referral, e non sovrascrive mai un referral ai fini della conversione. Si veda http://www.goanalytics.info/tabelle-di-conversione-delle-sorgenti/
ok, grazie per la precisazione, ma ciò non toglie che mi converte i referral di A nell’account GA di B.
è forse perchè in X dovrei forzare il dominio B con _setDomainName() come suggerito dall’articolo “vedo il mio stesso sito nei referrer”?
Grazie per la pazienza…
Ciao Marco,
a proposito delle discussioni sopra, a me non ben chiaro un punto. Io ho diversi domini di primo livello, uno mirror degli altri, e vorrei far confluire i dati in un unico profilo google analytics. Allora aggiunto al codice la funzione: _gaq.push([‘_setDomainName’, ‘none’]);
_gaq.push([‘_setAllowLinker’, true]);, ma temo che non sia efficace. Dove sto sbagliando? Quali sono le implicazioni sul settaggio degli obiettivi?
Fammi sapere:-). Grazie in anticipo.
Anna
guarda, qua c’è un riassunto utile
http://code.google.com/apis/analytics/docs/tracking/gaTrackingSite.html già aggiornato al codice asincrono (almeno nelle parti di approfondimento)
Ciao Marco, per una serie di circostanze mi trovo a in una condizione anomala: il setdomainname(“sito.it”) è impostato solo sulle pagine del dominio di terzo livello e su quella del primo livello su cui atterrano gli utenti proveninenti dal terzo (ma il setdomain è in auto su tutte le altre pagine del dominio di primo livello)…il tracciamento fra sottodominio e dominio funzionerà comunque? La perplessità che ho è sulla rinconciliazione delle fonti…un utente che entra con provenienza Campaign, effettua il salto da sottodominio a dominio e naviga nel sito, sarà sempre visto come proveniente dalla Campaign iniziale?
bisognerebbe fare delle prove. Se il resto delle funzioni necessarie è implementato correttamente, potrebbe anche funzionare…
Sto utilizzando il codice standard suggerito da Google per il tracciamento dei sottodomini: non ho altre esigenze particolari, per cui dovrebbe essere tutto corretto, i margini di errore sull’implementazione standard dovrebbero esser minimi.
Hai un suggerimento su tool di debug che possano aiutarmi sul real-time anzichè aspettare i risultati in piattaforma? Per il momento uso GA Debug su Chrome, ma sembra che il tracking beacon non venga sganciato sulle pagine che non hanno il setdomainname…
il tracking code suggerito da Google, a meno che non sia cambiato ultimamente, dovrebbe avere il punto davanti, quindi .sito.it mentre tu hai scritto sito.it
Lo preciso perché secondo me funzionerebbe nel caso citato da te, ma funzionerebbe “per fortuna”.
No per il debug anche io uso quello, o semmai Fiddler
Ciao Marco,
ho un’applicazione richiamata in un iframe che effettua chiamate GA a pagine fittizie, in particolare il codice GA nell’iframe è all’interno di un file .js.
Non so perchè, ma tali chiamate non riescono ad intercettare l’host name (che corrisponde sempre al sito principale http://www.sito.it) eccetto in caso di utilizzo di IE versione 9.0.
Quindi: per IE9 le chiamate sono associate all’host name http://www.sito.it, mentre per tutti gli altri browser o versioni di IE, l’host name è undefined.
Questo mi crea un bel problema in quanto poi ho necessità di creare un profilo in cui filtro solo il dominio principale.
Ritenendo inutile chiedere come può succedere questo (ma se hai una qualche idea è ben accetta…), posso usare la funzione setDomainName per forzare l’inserimento dell’host name in tutte le chiamate? Che parametro devo passare: http://www.sito.it, .sito.it o sito.it?
Tieni conto che nel resto del sito, quindi anche nella pagina che richiama l’iframe, non faccio uso del setDomainName… è un problema? Mi può creare errori nei cookie GA?
Grazie come al solito!!!
quando c’è di mezzo un iframe setDomainName non basta. Quasi sicuramente è un problema da risolvere con _getLinkerUrl
Ciao Marco,
ho un sito con n sottodomini. Ho inserito in tutte le pagine, sia del sito che dei sottodomini, la funzione _setDomainName, ho creato il filtro avanzato per distinguere all’interno del profilo le visite dai sottodomini. In più ho anche creato degli altri profili duplicati (sempre con stesso codice analytics) per ogni singolo sottodominio con un filtro di inclusione delle visite con nome host.
Ora, la mia domanda è questa: il filtro che indichi tu e che io avevo già inserito nel profilo generale di preciso a che serve? Io ero convinta mi servisse per non vedere le visite dei sottodomini come referral, ma mi sa che non è così perchè continuo a vederne diversi. Se non sevre a questo, c’è un modo per non vedere le visite tra sottodomini come referral?
no, come vedi “referral” non è nemmeno nominato, nel filtro. Serve a distinguere pagine con lo stesso nome che si possono trovare sul dominio principale e su uno o più sottodomini
e la funzione per ignorare certi referral è _addIgnoredRef 🙂
Ok Marco, tutto chiaro.
Mi resta solo un dubbio: se voglio evitare di visualizzare le visite da sottodomini come referral, uso la funzione _addIgnoredRef. Ma di preciso dove va inserita? Sia sul dominio principale che nei sottodomini? per esempio andrò a mettere la chiamata _gaq.push([‘_addIgnoredRef’, ‘miosito’]); ovunque?
Grazie mille e scusa l’esaurimento! 🙂
la metti dove vuoi che il referrer sia ignorato!
Ciao Marco,
ho un e-commerce su dominio di terzo livello: shop.domain.it.
Alcuni acquisti li ricevo da sorgente (domain.it) e vorrei che questo dominio di secondo livello venisse “integrato” in modo da vedere il reale sorgente che ha portato l’acquisto.
Per far questo devo inserire _gaq.push([‘_addIgnoredRef’, ‘domain.it’]) su shop.domain.it ?
Grazie mille
esattamente 🙂
Grazie per la celere risposta!
Nel mio caso devo anche tenere su entrambi i domini il codice
_gaq.push([‘b._setDomainName’, ‘.domain.it’]) ?
Continua a tracciarmi gli acquisti da referral per quelli proveniente da dominio di secondo livello 🙁
Questo è il mio settaggio:
domani.it:
[‘_setAccount’, ‘UA-xxxxxx-47’], [‘_trackPageview’], [‘_setDomainName’, ‘.domain.it’]
sub.domain.it:
[‘_setAccount’, ‘UA-xxxxxx-47’], [‘_trackPageview’], [‘_setDomainName’, ‘.domain.it’], [‘_addIgnoredRef’, ‘domain.it’]
setdomainname va messo PRIMA di trackpageview
Funziona alla grande. Grazie 😉
Ciao Marco,
scusa se ti sto stressando, ma ho notato che il tracciamento si perde quando l’utente fa:
Query Google -> Dominio secondo livello -> Altra pagina domonio secondo livello.
Quando l’utente visita una seconda pagina, il referral diventa sorgente diretta anzichè da Google organico.
Che può essere?
non c’è lo stesso identico codice in tutte le pagine del sottodominio? c’è di mezzo un redirect javascript o una metarefresh a 0 secondi?
Si, è lo stesso in tutte le pagine e non c’è nessun mezzo che fa un redirect javascript o metarefresh.
Il problema è che perde la traccia del sorgente quando l’utente visita una seconda pagina sempre su dominio di secondo livello. (domain.it)
Questo è il codice GA del dominio di secondo livello
[‘_setAccount’, ‘UA-xxxxxx-47’], [‘_setDomainName’, ‘.domain.it’], [‘_trackPageview’]
su una pagina hai .domain.it e sull’altra domain.it ? senza vederlo è dura andare a tentativi 😀