In questa guida ti mostrerò come gestire la Cookie Law e il GDPR attraverso lo strumento di OneTrust con Google Tag Manager in maniera corretta e ottimizzata.
Vedremo assieme step by step come implementare gli script, gli attivatori direttamente su GTM. Sei pronto?
Step 1 – Recupera lo script
La prima cosa che devi fare è ovviamente recuperare lo script di OneTrust. Per farlo basterà collegarti con il tuo account su https://app-eu.onetrust.com.
Una volta che hai fatto l’accesso, per trovare lo script clicca sul modulo Cookie Consent.
Successivamente, dal menù clicca Script Integration. Ecco che per magia escono un po’ di parametri 🙂
- Clicca su > Production Single Location.
- Copia lo script
Step 2 – Crea l’HTML Personalizzato
Tieni aperta questa pagina per dopo, adesso da Tag Manager crea il Tag per iniettare lo script.
- Sezione Tag > Nuovo > HTML Personalizzato
- Copia lo script all’interno, ma c’è da fare qualche modifica, sarà più o meno così:
<!-- OneTrust Cookies Consent Notice (my-domain.com) start --> <script src="https://optanon.blob.core.windows.net/consent/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.js" type="text/javascript" charset="UTF-8"></script> <script type="text/javascript"> function OptanonWrapper() { window.dataLayer = window.dataLayer || []; window.dataLayer.push({event: 'OneTrustGroupsUpdated'}); } </script> <!-- OneTrust Cookies Consent Notice (my-domain.com) end -->
- In blu c’è la parte diversa; in rosso al posto delle x dovrai mettere l’ID corretto.
- Apri le impostazioni avanzate, in Priorità di attivazione inserisci un numero alto 999999999999.
- Opzioni di attivazione “Una volta per pagina“.
- Attivatore imposta All Pages.
- Salva come “cHTML – Cookie Banner Script”.
Le categorie di cookie
Fino ad ora era facile, ora inizia il divertimento.
I Cookie sono raggruppati attraverso delle categorie. Ad esempio nel mio caso:
- Necessari
- Performance
- Targeting
La bellezza di OneTrust rispetto a CookieBot o Iubenda è che puoi completamente personalizzare le categorie e le sottocategorie direttamente dall’interfaccia di OneTrust per suddividere ulteriormente i cookie in piccole parti. Ad esempio, potremmo creare una nuova categoria Video Cookies dove includere tutti i cookie provenienti da sorgenti video.
Figo no? 🙂
Lo scopo di questa categorizzazione è informare l’utente attraverso il banner per il consenso dei cookie e di fargli vedere che tipo di cookie ci sono nel sito, decidendo quindi se bloccare o accettare una determinata categoria.
Viva la granularità!
Le preferenze dell’utente sono rese permanenti grazie ad un cookie che viene installato nel browser (un po’ come fanno tutti gli altri. Attenzione però al Cookiegeddon!) su questo cookie “speciale” si baseranno gli Attivatori che creerai con Tag Manager per gestire la Cookie Law.
Step 3 – Crea la variabile cookie
Torniamo su Google Tag Manager. Andiamo a creare una variabile di tipo cookie con lo scopo di ciucciare le preferenze che l’utente andrà a dichiarare.
Psssss… ti anticipo già che si chiama OptanonConsent.
- Sezione Variabili > Definite dall’utente > Nuova
- Tipo Cookie Proprietario
- Nome cookie: OptanonConsent
- Attiva il flag: Decodifica in formato URI il cookie
- Salva: Cookie – OptanonConsent
Struttura del cookie
‘Spetta… questo non è un vero e proprio step. Diciamo che è una specie di bonus che ci servirà per comprendere meglio come diavolo funzionano i valori del Cookie OptanonConsent.
Facciamo un po’ di teoria.
Il cookie contiene una serie di informazioni simile a questo:
....version=4.6.0&EU=true&groups=1:1,2:1,4:0,0_83143:0,0_83144:0,0_83145:0
Nella parte segnata in grassetto e in rosso sono presenti le preferenze specifiche per ogni categoria divise tra di loro (te le ricordi? Proprio quelle che hai creato prima!), che sono formattate secondo due semplici regole:
- [Id Categoria]:0 ► La categoria è disattivata
- [Id Categoria]:1 ► La categoria è attiva
Ok, ma cos’è questo Id Categoria?
Uhhh, ora te lo spiego 🙂
Riprendiamo OneTrust nella sezione di prima e presta attenzione agli ID nella prima colonna. La magia sta tutta in quel numeretto. Attraverso questo numeretto, infatti, sarà possibile risalire alla categoria.
Figo, no?
Facciamo un altro esempio. Il cookie di OptanonConsent generato al momento del consenso dà queste informazioni:
- con 2:1 significa che ho acconsentito l’uso di cookie di Performance;
- con 4:0 invece ho rifiutato l’uso di cookie per il Targeting.
Facile no? Uhh sì, dai che è più facile ora.
Step 4 – Ottimizziamo il cookie
Se mi conosci, sai che sono un perfezionista e non mi piace come questo cookie salva le informazioni.
Attraverso un #barbatrucco ho deciso di pulirlo 🙂
Prima di continuare, useremo un po’ di JavaScript per cambiare la struttura dei valori.
Andiamo su:
- Sezione Variabili > Definite dall’utente > Nuova
- Tipologia: Javascript personalizzato
- Incolla questa funzione
function() { cookie = {{Cookie - OptanonConsent}}; cookie = cookie.substring(cookie.indexOf('groups=')+7, cookie.length); return '|' + cookie.split(',').join('|') + '|'; }
- Salva come ‘cj – Cookie Categories’
Il contenuto di questa variabile sarà più o meno così, è scritto in modo diverso da prima ma ci aiuterà per la creazione degli attivatori.
|1:1|2:0|4:0|0_83143:0|0_83144:0|0_83145:0|
Non ti sembra più pulito? 🙂
Step 5 – Crea gli attivatori
A questo punto dovrai creare un doppio attivatore per ogni categoria.
Beh, non proprio tutte. Magari solo quelle principali.
Prendendo esempio dalla categoria dei cookie di Performance, identificabile dall’id 2, crea due attivatori: uno nel caso di accettazione e l’altro per gestire il rifiuto.
[Nota]: Fai attenzione agli ID, devi usare gli stessi che trovi nel pannello di controllo del tuo account OneTrust perché potrebbero essere diversi.
- Sezione Attivatori > Nuovo
- Tipologia: Evento personalizzato
- Nome evento: inserisci OneTrustGroupsUpdated
- Questo attivatore si attiva su: seleziona Alcuni eventi
- Come condizione: imposta cj – Cookie Categories contiene |2:1|
- Salva con Activate – Performance Cookies
Crea l’altro attivatore negativo.
- Sezione Attivatori > Nuovo
- Tipologia: Evento personalizzato
- Nome evento: inserisci “.*” e attiva il flag Utilizza la corrispondenza con espressione regolare
- Questo attivatore si attiva su: seleziona Alcuni eventi
- Come condizione: imposta cj – Cookie Categories NON contiene |2:1|
- Salva con Block – Performance Cookies
Se lo ritieni necessario, ripeti il procedimento per le altre categorie. Nel mio esempio potrebbe essere la categoria con id 4 Targeting Cookie.
Step 6 – Aggiorna i tag presenti su Google Tag Manager
Bene, ora hai tutto l’occorrente per gestire al meglio la Cookie Law con OneTrust. Non ti resta che applicare gli Attivatori in modo corretto nei tag del tuo contenitore di Google Tag Manager.
Facciamo l’esempio con Google Analytics. Nel tag relativo al Pageview (è solo un esempio). La regola di base da seguire è questa:
- se la categoria di cookie è stata rifiutata, non bisogna inviare dati ad Analytics;
- se la categoria è stata accettata, o anche se le preferenze vengono aggiornate con il consenso, possiamo iniziare ad inviare dati ad Analytics.
Insomma, la stessa logica usata per CookieBot e Iubenda 🙂
Modifica il tag, o i tag, nel seguente modo:
Riepilogando:
- aggiungi l’attivatore Activate – Performance Cookies;
- aggiungi l’attivatore in eccezione Block – Performance Cookies;
- valuta se impostare la voce Opzioni di attivazione tag = Una volta per pagina, questo per evitare l’invio doppio di hit.
Step 7 – Verifica e pubblica
Prima di pubblicare fai un controllo completo della configurazione con la modalità di debug e anteprima.
Fai queste serie di controlli.
- Verifica che venga caricato e visualizzato il banner per il consenso.
- Accetta l’uso dei cookie e verifica che il tag di Analytics venga eseguito.
- Fai la verifica contraria, cancella il cookie OptanonConsent dal tuo browser. Questa volta rifiuta il consenso: il tag di Analytics non deve partire.
Perfetto, quando hai verificato tutto puoi pubblicare con il tasto blu “Invia“.
Yeah, ce l’hai fatta!
Fammi sapere se ti è tutto chiaro nei commenti 🙂
Altre Guide che potrebbero interessarti
- Come gestire la Consent Mode v2 con Iubenda e Google Tag…
- Tutto sulla Consent Mode e come gestire la Consent Mode v2:…
- Guida Base: come gestire l'attivazione di Google Signals in…
- Alternativa a Google Optimize: usa Google Tag Manager per…
- Case study: Università IULM
- Cosa fare con la mail di Federico Leva? È necessario…
Chiedi pure qui sotto, sarò pronto a risponderti!
Unisciti alla più grande community italiana dedicata alla Digital Analytics!
Iscrivendoti alla newsletter gratuita di Tag Manager Italia riceverai:
- guide (base/avanzate) passo passo
- news di approfondimento
- webinar gratuiti
- offerte esclusive
e altre risorse di 1°classe sul mondo della Digital Analytics!
- Caso studio: LUISAVIAROMA ottimizza il tracciamento dei dati Ecommerce e le performance Advertising grazie a GA4 e BigQuery
- Caso studio: Mondo Convenienza realizza +85% di vendite ecommerce e +100% di conversioni aggiuntive per le campagne Meta Ads grazie a GA4 e Server-Side Tracking
- Come creare un report in GA4 per analizzare il funnel di conversione di un sito web o ecommerce
- Seconda edizione del GA4 Summit: oltre 500 partecipanti per due giorni di formazione e confronti sul presente e futuro dell’Analytics per il Marketing e l’Advertising
- Attribuzioni errate in GA4: cause e soluzioni al problema
- Matteo Zambon su Come installare Google Analytics 4 (GA4) con Google Tag Manager
- Matteo Zambon su Guida Base: come tracciare l’E-commerce in GA4 con Google Tag Manager Server-Side
- Matteo Zambon su Guida Avanzata: come tracciare in GA4 l’Invio Contact Form 7 con Google Tag Manager
- Matteo Zambon su I segreti di GA4: best practice e soluzioni ai problemi di utilizzo e implementazione di Google Analytics 4
- Matteo Zambon su Guida Base: come rilevare automaticamente il traffico dei bot in Google Universal Analytics e GA4
Cristina
02 07 2024
Buongiorno Matteo.
Io utilizzo ONE TRUST sul mio dominio.
A differenza di quanto indicato, io ho creato 3 attivatori per ogni tipologia di cookie:
ecco l’esempio per i Functional cookie
1- First Party Cookie – Active Functional – OT: evento personalizzato, SI attiva su “OptanonConsent” se contiene C0003:1
2- Functional Exception Trigger: Si attiva su “OnetrustActiveGroups” se non corrisponde a ,C0003,
3 – Functional Firing Trigger: si attiva su “OnetrustActiveGroups” se corrisponde a ,C0003,
poi ho altri riferimenti ma il succo è che ho 3 tipi di attivatori per ogni categoria di COOKIE: è corretto?
Matteo Zambon
15 07 2024
Ciao Cristina, se è sempre su C0003 significa che è quella la categoria quindi faranno a capo dello stesso trigger 😀
Fammi sapere!
davide cevolani
02 03 2022
Ciao Matteo, grazie mille per la guida. Avrei però alcune cose da chiederti. La funzione javascript personalizzata non funziona più non so se per gli aggiornamenti che hanno apportato. Ho quindi deciso di procedere in modo differente ho notato che quando viene dato il consenso in corrispondenza dell’evento OneTrustGroupsUpdated il datalayer diventa il seguente:
event: “OneTrustGroupsUpdated”,
gtm: {
uniqueEventId: 19,
start: 1646231618732,
element: “HTMLButtonElement: html.js.flexbox.flexboxlegacy.canvas” +
“.canvastext.webgl.no-touch.geolocation.postmessage.webs” +
“qldatabase.indexeddb.hashchange.history.draganddrop.web” +
“sockets.rgba.hsla.multiplebgs.backgroundsize.borderimag” +
“e.borderradius.boxshadow.textshadow.opacity.cssanimatio” +
“ns.csscolumns.cssgradients.cssreflections.csstransforms” +
“.csstransforms3d.csstransitions.fontface.generatedconte” +
“nt.video.audio.localstorage.sessionstorage.webworkers.n” +
“o-applicationcache.svg.inlinesvg.smil.svgclippaths > bo” +
“dy > div#onetrust-consent-sdk > div.otFlat.bottom.ot-wo” +
“-title.ot-buttons-fw#onetrust-banner-sdk > div > div.ot” +
“-sdk-container > div.ot-sdk-row > div.ot-sdk-three.ot-s” +
“dk-columns.has-reject-all-button#onetrust-button-group-” +
“parent > div#onetrust-button-group > button#onetrust-ac” +
“cept-btn-handler”,
elementClasses: “”,
elementId: “onetrust-accept-btn-handler”,
elementTarget: “”,
elementUrl: “”
},
OnetrustActiveGroups: “,C0001,C0002,C0003,C0004,”,
OptanonActiveGroups: “,C0001,C0002,C0003,C0004,”,
event_category: “Web Vitals”,
event_action: “LCP”,
event_value: 1767,
event_label: “v1-1646231621039-1490802101173”,
optanonCategory: “OneTrust Cookie Consent”,
optanonAction: “Banner Accept Cookies”,
optanonLabel: undefined,
optanonValue: undefined,
developer_id: {dYWJhMj: true}
Sono quindi andato a creare una variabile datalayer OnetrustActiveGroups che riporta i valori dei diversi consensi. Come attivatore al tag di analytics ho messo quindi l’evento personalizzato più questa variabile che contiene ,C0001,C0002,C0003, è corretto? (non ho inserito il c0004 in quanto sono quelli pubblicitati). Come attivatore in seguito all’aggiornamento della cookie policy di gennaio ho quindi messo non più in or anche il page view ma solo questo, di modo che il tag si attivi solo in seguito ad accetazione cookie. Per quelli invece di google ads pensavo di mettere come attivatore solo la variabile c0004 come condizione.
Dici che può funzionare così?
Matteo Zambon
11 04 2022
Ciao Davide, come già detto (a breve aggiorneremo la guida) sono cambiati i nomi delle categorie mettendo un C000 davanti al valore precedente.
Ti basterà cambiare l’attivatore mettendo cj – Cookie Categories contains |C0004:1 come valore (ad esempio di targeting cookie)
Inoltre nel Tag HTML custom di onetust ti basterà togliere tutto quello dentro alla funzione.
DA COSI
function OptanonWrapper() {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({event: ‘OneTrustGroupsUpdated’});
}
A COSI
function OptanonWrapper() { }
perché ora oneTrust fa da solo il push 🙂
fammi sapere!
Gianmarco
17 02 2022
Ciao Matteo, da quando ho installato OneTrust il bounce rate è completamente crollato, mentre prima indicava dati corretti.
Credo che quando l’utente accetti il consenso venga registrato come hit da interazione…
Come si può risolvere?
Grazie per il tuo lavoro!
Matteo Zambon
11 04 2022
Ciao Gianmarco,
Per caso stai monitorando tramite evento di Analytics l’accettazione del consenso da parte dell’utente?
In caso fosse così, ti basta utilizzare l’opzione “Not Interaction Hit” presente nel Tag evento e impostare su true.
Fammi sapere 🙂
Cris
15 02 2022
La stringa del cookie mi sa che è cambiata, è così: |C0004:0|C0001:1|C0002:1|”
Matteo Zambon
15 02 2022
Sì, è cambiata 🙂 Ma il meccanismo rimane lo stesso 😉
Grazie della segnalazione Cris
Fabio
21 08 2019
Ciao Matteo, grazie per l’ottima guida. Ho una domanda: i due attivatori andrebbero inseriti su ogni tag di tipo Analytics? (es. tracciamento di eventi come clic sul carrello, step del funnel, pagamenti, ecc.). Floodlight inclusi?
Grazie ancora
Matteo Zambon
26 08 2019
Ciao Fabio, li devi inserire nei tag che vuoi gestire. Nel dettaglio della tua domanda ti direi di sì su entrambi 🙂
Fammi sapere, a presto!