Dec 23 2013

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo verde - articolo per tutti

Gruppi di contenuti: interessante novità di fine anno

autore: Marco Cilia categoria: funzioni tag: ,

La settimana scorsa è finalmente apparso sul blog ufficiale un post atteso da anni, che riguarda una funzionalità che è sempre mancata nel nostro strumento di digital analytics preferito: la possibilità di raggruppare i contenuti.

La possibilità teorica c’è sempre stata, ammesso di riuscire a taggare tutte le pagine con una apposita variabile personalizzata di livello pagina, ma gli insight relativi erano limitati agli usi e ai report che si possono consultare o costruire a partire dalle custom variables. La possibilità di utilizzare funzioni dedicate, e scritte appositamente dagli ingegneri di Google Analytics eleva lo strumento di un gradino ed apre possibilità interessanti.

Innanzitutto cosa sono i gruppi di contenuti? sono dei raggruppamenti di pagine, che hanno in comune alcune caratteristiche: un esempio classico è la categoria del contenuto, o i tag ad essi associati. E’ un po’ come la categoria del prodotto in un report e-commerce anche se non è per forza 1:1. Un prodotto può avere una sola categoria, mentre un contenuto può far parte di diversi gruppi.

Secondariamente, come si creano i gruppi di contenuto? dall’interfaccia di amministrazione è necessario cliccare su “raggruppamento di contenuti” dentro a una vista, poi “crea nuovo raggruppamento di contenuti”; dato un nome ci sono tre modalità per dire a GA come raggruppare le pagine:

Il primo richiede l’uso di una funzione nel codice di tracciamento (al momento ancora non è disponibile sul TagManager): supponiamo di aver creato il primo indice – ce ne sono 5 disponibili per questa modalità – la funzione da impostare per le pagine che fanno parte del gruppo è


_gaq.push(['_setPageGroup', '1', 'Nome del gruppo']);

questa funzione – essendo una della famiglia _set* – va impostata prima di _trackPageview.

Il secondo metodo consiste nel creare una cosiddetta “estrazione”, cioè una regola che capisce il gruppo di contenuto in base all’URL. E’ basato su espressioni regolari quindi non è proprio facilissimo, ma è molto potente: ad esempio una estrazione con regola /Uomo/(.*)/ crea automaticamente raggruppamenti di pagine del livello inferiore a Uomo, e il nome del gruppo di contenuto corrisponderà a quello presente nella cartella inferiore (/Uomo/intimo, /Uomo/maglie, /Uomo/pantaloni e così via…)

Il terzo metodo è il più classico, cioè le regole simili a quelle dei segmenti avanzati e combinabili a piacere: in alcuni casi è una sovrapposizione delle estrazioni, in altri si hanno molte possibilità in più.

Una volta definiti gruppi di contenuti, tutti i report basati sui contenuti che lo supportano mostreranno la possibilità di utilizzarli e visualizzare le relative metriche, comprese le pageview uniche per gruppo di contenuto. Al momento vedo i gruppi di contenuto funzionare sul report “tutte le pagine” e sul “riepilogo navigazione”. Credo che in futuro verrà esteso anche ad altri report, perché ha senso che ci sia anche un report tipo flow con gli spostamenti dei visitatori sui vari gruppi.


May 12 2011

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo rosso - articolo per esperti

Regular Expression per gli intervalli numerici

autore: Marco Cilia categoria: filtri tag:

Molte persone col tempo dimenticano che le espressioni regolari, comprese quelle che si usano dentro a Google Analytics, funzionano per i caratteri, e non per i numeri. Anzi, per dirla meglio, i numeri vengono trattati come caratteri invece che come cifre.

Per questo quando diciamo che l’espressione regolare [0-9] identifica “tutti i numeri da 0 a 9” diciamo una verità e ne sottindendiamo un’altra: essa identifica SOLO i numeri da 0 a 9. Per cui se voglio fare una espressione regolare che prenda da 0 a 39 non posso scrivere [0-39]. Se scrivessi così intenderei qualcosa che intercetta solo numeri di due cifre, la prima delle quali può essere 0, 1, 2 oppure 3 e la seconda delle quali è sicuramente (e solamente) un 9 un numero di una sola cifra, 0, 1, 2, 3 oppure 9 (tnx to Enrico Altavilla per la correzione).

La regular expression per intercettare tutti i numeri da 0 a 39 è un’altra:

[0-3]?[0-9]
^[0-9]$|^[1-3][0-9]$

(o un numero singolo da 0 a 9 oppure un numero di due cifre la cui prima può essere 1, 2 o 3 e la seconda può andare da 0 a 9).

Le cose si complicano ancora di più quando le cifre non sono “tonde” (chiamo tondo il 39 perché comunque si vuole intercettare tutta la decina dei trenta ed escludere dai quaranta in poi), ad esempio se si vuole fare il match da 0 a 33. La regex diventa

^([0-9]|[1-2][0-9]|3[0-3])$

praticamente la scomposizione dei numeri: “da 0 a 9, oppure da 10 a 29, oppure da 30 a 33”. Un po’ verboso, ma funziona così 🙂


Dec 01 2010

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo rosso - articolo per esperti

Parole chiave più lunghe di TOT parole

autore: Marco Cilia categoria: report tag: ,

Quando si parla di “coda lunga” si intendono, di solito, quelle parole chiave a medio-basso traffico i cui numeri sommati (accessi, ma anche conversioni) possono dar luogo a fenomeni di rilievo, a volte anche maggiori delle equivalenti keyword mainstream. Per intenderci, e a titolo meramente esemplificativo, potremmo associare il concetto alle parole chiave che trovate nei vostri report dalla riga 25 in giù.

Altre persone tendono a definire il concetto come “le parole chiave che contengono più di X parole”, con il numero X variabile. Io non sono d’accordo con questa definizione, ma la regular expression che vi propongo può essere utile a loro ma anche a voi per altri scopi: la regex serve a isolare le keyword con un numero di parole superiore al numero specificato. E’ questa:

^([^ ]+ ){5,}[^ ]+$

e ovviamente in questo caso prende solo le keyword con 6 o più parole (il numero indicato è infatti il numero di spazi). Potete utilizzarla con un filtro al volo direttamente nel report delle parole chiave, oppure creare un segmento avanzato come questo (clicca per ingrandire)

e verificare le performance del segmento rispetto ai dati di tutto il traffico. O crearne vari e controllare le performance di vari segmenti, tenendo ovviamente presente che il segmento con 6 o più parole contiene anche i dati di un eventuale segmento con 3 o più parole chiave.

Prima che me lo chiediate nei commenti, se volete invece la regex che seleziona SOLO le keyword con l’ESATTO numero di parole, dovete togliere la virgola dopo il numero 🙂


Sep 18 2010

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo giallo - articolo avanzato

Altre espressioni regolari sconosciute ai più

autore: Marco Cilia categoria: generale tag:

Quando parliamo di espressioni regolari per semplicità ci riferiamo sempre ai soliti operatori noti: il più, il punto, l’asterisco, il backslash, le parentesi tonde. Ma il mondo delle regex, come dico sempre, è complesso in modo esponenziale. Ecco quattro operatori citati raramente che in futuro potrebbero aiutarvi a semplificare un po’ le vostre regular expression:

  • parentesi graffe {}: servono a definire le ripetizioni, per cui (ahi){2} funzionerà solo per estrarre ahiahi. Si può anche definire un intervallo di ripetizioni, con la sintassi (ahi){3,6}. In questo caso andranno bene tra le tre e le sei ripetizioni di “ahi”
  • \d: serve ad indicare qualsiasi cifra
  • \s: serve ad indicare gli spazi (ma no, non si può usare in un filtro search and replace, mi dispiace), ma anche gli a capo e i tab
  • \w: serve ad indicare qualsiasi carattere alfanumerico o l’underscore

Ovviamente il consiglio è sempre quello di testare il più possibile prima di mettere in produzione una regular expression: io consiglio sempre l’ottimo RegEx Designer di RadSoftware, ma la rete è piena di strumenti, anche online, per fare lo stesse mestiere. Alcuni dei più noti sono RegExr, RegexPal e il tester di regex.info.


Jun 09 2010

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo giallo - articolo avanzato

Vuoi capire meglio le regular expression?

autore: Marco Cilia categoria: generale tag: ,

Usando Google Analytics prima o poi tutti si trovano ad avere a che fare con le regular expression, c’è poco da fare. Che sia la configurazione di un obiettivo, la creazione di un filtro o di una regola per filtrare le colonne di un report, la sola parola “regular expression” è in grado di far scappare molte persone a gambe levate.

Eppure ricorrendo ad una buona dose di buon senso si riesce spesso ad averne ragione, perché tipicamente le espressioni che servono alle persone sono abbastanza semplici; per i casi più complessi esistono i consulenti mica per nulla 🙂

Robbin Steif di Lunametrics ha messo insieme un grazioso ebook intitolato proprio “regular expressions for Google Analytics“, che dovrebbe togliere almeno i dubbi principali a chi si accinge – o non ha mai compreso fino in fondo il funzionamento – a creare regex nello strumento di Google.
Non ho finito di leggerlo tutto, ma mi sembra che la lettura scorra fluida e i concetti siano chiari. L’unica pecca è che è scritto in inglese, e questo potrebbe creare un ulteriore livello di difficoltà in alcune persone.

L’ebook è scaricabile gratuitamente dal sito di Lunametrics oppure è consultabile direttamente online, tramite un lettore in Flash.

Già che ci siamo voglio inserire in questo post altre risorse che nel tempo mi sono trovato a consigliare quando mi hanno chiesto lumi in merito: nella mia libreria ci sono “Espressioni Regolari” di Marco Beri – livello facile – e “Mastering Regular Expression” della O’Reilly – livello tremendamente complicato.
Per fare le prove (fate SEMPRE le prove, mi raccomando!) uso Regex Designer


Jun 23 2009

Keep it simple

autore: Marco Cilia categoria: filtri tag: ,

Bruno Munari
Keep it simple, stupid è una locuzione anglosassone che viene spesso indicata tramite il suo acronimo K.I.S.S. e significa “falla semplice, stupido”. Viene spesso associata al mondo dell’informatica, dove il grado di complicazione tende a salire molto velocemente e dove esistono sempre soluzioni e accorgimenti che, con molto lavoro in più, riescono a fare quello che ci prefiggiamo.

Bruno Munari, che di informatica penso ne sapesse ben poco, diceva in un suo celebre scritto:

Complicare è facile, semplificare è difficile. Per complicare basta aggiungere, tutto quello che si vuole: colori, forme, azioni, decorazioni, personaggi, ambienti pieni di cose. Tutti sono capaci di complicare. Pochi sono capaci di semplificare.
Piero Angela ha detto un giorno è difficile essere facili. Per semplificare bisogna togliere, e per togliere bisogna sapere cosa togliere

e questa è la frase che riporto sempre quando parlo con qualcuno delle famigerate regular expression di Google Analytics. Prendiamo questo caso reale dal forum di assistenza inglese:

Filter: Exclude traffic from IP addresses in the range of 1 to 9 and 11 to 255.
Filter design: ^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[2-9][0-9]|1[1-9]|[0-9])\.
Result in Google: 0 page views.

Che gli IP possibili sono solo 256 (da 0 a 255) spero sia chiaro anche all’autore, altrimenti serve un ripassino di base sulla tecnica di internet, e non ha senso lanciarsi a fare un filtro senza sapere cosa e come si deve filtrare. Ora, assunto che la regola sia chiara, perché mai fare un filtro complicato per escludere tutti gli IP da 1 a 9 e da 11 a 255?

Fai un filtro che include solo 0 o 10! eccolo:
(0|10)
🙂


Apr 02 2009

Raggruppare i domini delle webmail

autore: Marco Cilia categoria: filtri tag: ,

Se il vostro sito offre una funzione di invio degli articoli per email, ha una newsletter o semplicemente i vostri lettori usano segnalare pagine ad altre persone utilizzando la mail, è probabile che guardando il report “tutte le sorgenti di traffico” dentro a Google Analytics abbiate molte righe del genere:

wmail-new.libero.it / referral
webmailcommunicator.alice.it / referral
mail.google.com / referral
mail.tiscali.it / referral
it.mg40.mail.yahoo.com / referral
fastmail.fastwebnet.it / referral
it.mg41.mail.yahoo.com / referral
it.mc236.mail.yahoo.com / referral
co109w.col109.mail.live.com / referral
it.mc238.mail.yahoo.com / referral
co115w.col115.mail.live.com / referral
it.mc279.mail.yahoo.com / referral
by110w.bay110.mail.live.com / referral
by111w.bay111.mail.live.com / referral
by104w.bay104.mail.live.com / referral
webmail.interfree.it / referral

questo accade perché le webmail, specialmente quelle dei grandi provider che ne gestiscono decine di migliaia, risiedono su differenti server, e generano di conseguenza referrer differenti. Per ovviare a questo problema il blog francese wagablog.com propone un filtro avanzato di riscrittura, che permette di raggruppare le visite da uno stesso provider di posta elettronica.
Il filtro prende come campo A il “sorgente campagna” con espressione regolare:

mail(.*)\.(.*)\..{2,4}

Il campo B non è necessario.
L’output (il constructor) è lo stesso campo “sorgente campagna” con espressione:

webmail - $A2

In pratica effettua una sovrascrittura del campo eliminando le parti superflue, come il nome esatto del server della webmail. Non ho testato il filtro in sé, ma ho fatto parecchie prove con il mio programma preferito di test delle espressioni regolari, verificando che la regex è buona e funziona per bene anche con i provider italiani. Per i più curiosi, l’espressione regolare guarda dove vi sia scritto “mail” nel dominio, e raggruppa qualsiasi cosa vi sia da lì fino al dominio primario memorizzandolo dentro alla variabile $A1. Il dominio (con esclusione dell’estensione) viene estrapolato e memorizzato nella variabile $A2, che è poi quella che viene mostrata nei report.


Mar 05 2009

Filtri con campi obbligatori

autore: Marco Cilia categoria: filtri tag: , ,

Se avete un account Adwords collegato a quello di Analytics è probabile che abbiate sentito parlare del famoso doppio filtro per avere le chiavi cercate invece di quelle acquistate. Le istruzioni per creare il filtro sono in questo post su semvironment, e una discussione sull’argomento è sul forum Seonida.
Non mi dilungo sul filtro perché non è oggetto di questo post.

Una domanda che mi è stata fatta ieri è questa:

Il Campo A del filtro personalizzato del primo passo di estrazione delle chiavi cercate, tira fuori dal Referral la sequenza (\?|&)(q|p|qs|_nkw)=([^&]*)

Il Campo B tira fuori dal Mezzo della Campagna cpc|ppc
L’output finisce in Campo personalizzato 1, con la stringa $A3

Ma allora, il campo B a che serve, visto che nel campo personalizzato 1 non si prende il considerazione?

La risposta sta in questa immagine, presa dal post di semvironment

Il campo B in effetti guarda dentro al mezzo della campagna e capisce se questo mezzo è cost per clic o pay per clic, ma non fa altro. L’output di quella parte di filtro non solo non viene estratto, ma non verrebbe nemmeno salvato per un uso successivo nè trascritto in un altro campo. A tutti gli effetti quello è un campo che potremmo definire “di controllo“, poiché è un campo obbligatorio ma non genera un output. Se però la condizione non è soddisfatta, se l’output fosse vuoto, il filtro non agirebbe, perché appunto l’impostazione è “campo B obbligatorio”.

Nello specifico un controllo sul solo referrer non è sufficiente, perché non è affatto scontato che il referrer (un qualsiasi referrer) non contenga almeno un parametro tra q, p e qs. Più difficile, ma non impossibile, _nkv…
Il campo B quindi serve solo ed esclusivamente a prevenire che un referrer con uno di quei parametri possa mettere erroneamente in azione il filtro.


Feb 03 2009

Raggruppare i contenuti

autore: Marco Cilia categoria: filtri tag: , ,

C’è una cosa che Google Analytics non fa nativamente, al contrario di strumenti considerati “più professionali” e costosi: i cosiddetti Content Group, ovvero gruppi più o meno omogenei di pagine o contenuti categorizzati con un nome, la cui analisi può essere fatta in forma aggregata.
In realtà GA consente di analizzare gruppi di URL in forma aggregata tramite il report “dettaglio contenuto“, ma in questo caso i gruppi sono determinati dalla struttura degli URL del sito (directory e sottodirectory, fisiche o create ad arte tramite riscrittura degli URL), oppure si possono analizzare gruppi di pagine che abbiano una parte comune di title tramite il report “contenuti per titolo“.

La soluzione di E-nor è quella di applicare dei filtri avanzati (ad un profilo-copia, aggiungerei) in grado di sostituire ad esempio tutti gli URL che contengono la parola ADIDAS con un url secco tipo /adidas.html

Allargando il discorso si può ipotizzare un tentativo “alla webtrends” in cui il raggruppamento avviene tramite una regular expression (o una regular expression per il nome della pagina + un parametro particolare), sempre tramite filtro avanzato, oppure una via più elegante che modifichi il title della pagina aggiungendo il nome del content group, lasciando intatto l’URL per eventuali altre analisi.
La soluzione proposta è indubbiamente valida, ma non mi fa impazzire per almeno due motivi:

  1. il primo, come ho avuto di dire nei commenti a quel post, è che su siti di grandi dimensioni potrebbero esserci problemi con url che contengono due termini da sostituire, nel qual caso il primo filtro farebbe tutto il lavoro trattenendo la pagina dentro al relativo content-group. Più in generale il sistema proposto è più facile da implementare in siti con URL rewrite attivo, mentre risulta più difficoltoso con url “criptici”
  2. il secondo, più importante, è che questo è un workaround: i content group dovrebbero funzionare come i tag, evitando il problema di cui al punto precedente e permettendo ad una pagina di essere conteggiata in due o più gruppi di contenuto

Come sempre, se sapete esattamente cosa state facendo e quali dati in uscita avrete potete operare; diversamente bisognerà aspettare che Google implementi nativamente questa funzione, oppure suggerirla tramite il form apposito 🙂


Jan 22 2009

Migliorare il tracciamento SEO

autore: Marco Cilia categoria: filtri tag: , , ,

Il post precedente ha riscosso un certo interesse nel mondo dei SEO e di chi fa web analytics. Una delle critiche più grandi mosse al metodo riportato è che non è molto chiaro che start=30 non significa pagina 30, ma pagina 2. Per questo motivo Damon Gudaitis ha scritto alcuni altri filtri per sistemare la cosa. Purtroppo il grado di complicazione introdotto non giustifica sempre lo sforzo richiesto, per cui il mio consiglio è di procedere solo se non siete soddisfatti del metodo precedente e se leggendo questo post avrete tutto chiaro.

Il “metodo Damon” estende il tracking anche a Yahoo e MSN. Vi traduco le istruzioni step-by-step, da applicare naturalmente sempre ad un profilo copia:

Filtrare solo il traffico organico:

  1. selezionare la gestione filtri dalla schermata principale
  2. cliccare su aggiungi filtro
  3. assegnare al filtro il nome Traffico Organico
  4. scegliere filtro personalizzato dal menu a tendina e selezionare includi
  5. nel Campo filtro selezionare Mezzo della Campagna
  6. nel Pattern filtro inserire organic
  7. applicare il filtro al profilo-copia desiderato
  8. salvare le modifiche

Restringere il profilo a Google, Yahoo e MSN:

  1. cliccare aggiungi filtro
  2. assegnare al filtro il nome Visitatori da motori di ricerca
  3. scegliere filtro personalizzato dal menu a tendina e selezionare includi
  4. nel campo filtro selezionare Referral
  5. nel Pattern filtro inserire (google|yahoo|msn|live)\.[a-z]+
  6. assegnare il filtro al profilo-copia desiderato
  7. salvare le modifiche

Estrarre le informazioni desiderate dalle SERP di riferimento:

  1. cliccare aggiungi filtro
  2. assegnare al filtro il nome Search Ranking
  3. scegliere filtro personalizzato dal menu a tendina e selezionare avanzato
  4. Campo A -> Estrai A, selezionare Termine Campagna e inserire (.*)
  5. Campo B -> Estrai B, selezionare Referral e inserire (\?|&)(start|first|b)=([^&]*)
  6. Output in -> Constructor, selezionare Definito dall’utente e inserire $A1 | pagina: $B3
  7. applicare il filtro al profilo-copia desiderato
  8. salvare le modifiche

Formattare correttamente la pagina 1:

  1. cliccare aggiungi filtro
  2. assegnare al filtro il nome Pagina 1
  3. scegliere filtro personalizzato dal menu a tendina, poi selezionare Cerca e sostituisci
  4. Campo filtro, selezionare Definito dall’utente. Cerca stringa, scrivere pagina:$
  5. Sostituisci stringa, scrivere pagina: 1
  6. applicare il filtro al profilo-copia desiderato
  7. salvare le modifiche

Formattare correttamente le pagine 2,3, eccetera:
[la ragione per cui le espressioni regolari comprendono 10 e 11, ad esempio, è che Google fa iniziare pagina 2 dal risultato #10, Yahoo e MSN invece dal risultato #11]

  1. per ogni pagina che si vuole tracciare, cliccare aggiungi filtro
  2. assegnare al filtro il nome Pagina 2 (o 3, 4, eccetera…)
  3. scegliere filtro personalizzato dal menu a tendina, poi selezionare Cerca e sostituisci
  4. Campo filtro, scegliere Definito dall’utente
  5. Cerca stringa, inserire pagina: 1[0-1]$ (o pagina: 2[0-1]$ per pagina 3, pagina: 3[0-1]$ per pagina 4 ecetera…)
  6. Sostituisci stringa, inserire pagina 2 (o pagina 3 eccetera…)
  7. applicare il filtro al profilo-copia desiderato
  8. salvare le modifiche

Ordine dei filtri:
Mai come in questo caso l’ordine dei filtri è importante; i filtri che riformattano i numeri di pagina vanno in rigoroso ordine numerico crescente, pena il caos.
L’ordine dei filtri funzionante è questo:

– Traffico Organico
– Visitatori da motori di ricerca
– Search Ranking
– Pagina 1
– Pagina 2
– Pagina 3, eccetera…

La soluzione non mi fa impazzire di gioia, se ricevete visite anche da pagina 12 delle SERP avrete bisogno di 12 filtri per riformattare correttamente i numeri di pagina, ma d’altronde i filtri cerca e sostituisci non sono così versatili da includere una regular expression unica che modifichi tutto. Se proprio sentite l’esigenza di avere i numeri di pagina corretti, questo è quel che dovete fare…