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.

OneTrust Cookie Consent Tab

Successivamente, dal menù clicca Script Integration.  Ecco che per magia escono un po’ di parametri 🙂

  • Clicca su > Production Single Location.
  • Copia lo script

OneTrust Code to inject banner

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 attivazioneUna volta per pagina“.
  • Attivatore imposta All Pages.
  • Salva come “cHTML – Cookie Banner Script”.

Script OneTrust inject banner with Google Tag Manager

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

OneTrust Cookie categories

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

Cookie OptanonConsent with Google Tag Manager

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?

OneTrust Cookie categories with Id

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’

Variable fix OneTrust cookie with pipes in Google Tag Manager

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

OneTrust Trigger Activate Performance Category in Google Tag Manager

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

OneTrust Trigger Block Performance Category in Google Tag Manager

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:

Google Analytics tag with OneTrust policy applied

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.

Console check injection custom html onetrust with Google Tag Manager

  • Accetta l’uso dei cookie e verifica che il tag di Analytics venga eseguito.

Console Accept OneTrust consent Google analytics

  • Fai la verifica contraria, cancella il cookie OptanonConsent dal tuo browser. Questa volta rifiuta il consenso: il tag di Analytics non deve partire.

Console Deny OneTrust consent Google analytics

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 🙂

Condividi anche tu Google Tag Manager!
  • Reply

    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!

  • Reply

    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!

  • Reply

    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 🙂

  • Reply

    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

  • Reply

    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!

Hai ancora qualche dubbio?
Chiedi pure qui sotto, sarò pronto a risponderti!

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *