Guida Base

Guida Base: Gestire la Cookie Law di Iubenda con Google Tag Manager

[Aggiornata 14 Aprile 2020]

Per gestire correttamente la Cookie Law e la GDPR dobbiamo disabilitare gli strumenti di profilazione dell’utente e, soprattutto, far apparire il fastidioso avviso che il sito sta utilizzando i cookie.

Allora, esistono vari modi per gestire la cosa. La prima soluzione è cercare di gestire in maniera autonoma questa implementazione (con Google Tag Manager diviene davvero semplice). Un’altra soluzione è quella di utilizzare servizi esterni, come ad esempio Iubenda. Uh proposito, se stai pensando di scegliere Iubenda ti lascio il link: [SCONTO 10% IUBENDA].

In questa guida ti spiegherò come gestire la Cookie Law/GDPR con Iubenda secondo le sue linee guida.

Poi ti dirò anche come le ho ottimizzate e rese più performanti 🙂

[News del 5 Marzo 2018]

A seguito di questa guida Iubenda ha aggiornato la sua guida ufficiale, citandomi come fonte. Trovi tutto nella sezione “Configurazione Avanzata”.

Che cosa bellissima 🙂

Sei pronto ad installare Iubenda con GTM? Iniziamo!

Dalla guida di Iubenda (non proprio ottimale)

Secondo la guida dovresti, per prima cosa, inserire a mano il codice JavaScript prima della chiusura del body:

<script type="text/javascript">
 var _iub = _iub || [];
 _iub.csConfiguration = {
 cookiePolicyId: XXX,
 siteId: YYY,
 lang: "it",
 callback: {
 onConsentGiven: function(){
 dataLayer.push({'event': 'iubenda_consent_given'});
 }
 }
 };
 (function (w, d) {
 var loader = function () { var s = d.createElement("script"), tag = d.getElementsByTagName("script")[0]; s.src = "//cdn.iubenda.com/cookie_solution/iubenda_cs.js"; tag.parentNode.insertBefore(s, tag); };
 if (w.addEventListener) { w.addEventListener("load", loader, false); } else if (w.attachEvent) { w.attachEvent("onload", loader); } else { w.onload = loader; }
 })(window, document);
</script>

Dove XXX e YYY sono dei valori numerici univoci che Iubenda associa al vostro sito e alla vostra policy. La parte in blu invece, identifica la creazione di un evento personalizzato sul dataLayer che servirà come attivatore per i vari Tag.

Step 1 – Crea l’attivatore personalizzato

Una volta che hai inserito a mano lo snippet, il prossimo passo è creare l’Attivatore che utilizza proprio quell’evento personalizzato iubenda_consent_given.

  • Attivatore > Nuovo > Configurazione attivatore.
  • Tipo Attivatore: Evento personalizzato.
  • Nome evento: iubenda_consent_given.
  • Questo attivatore su: Tutti gli eventi personalizzati.
  • Inserisci come nome dell’Attivatore: “Iubenda Accettato”.

Dovresti quindi avere una cosa simile:

Step 2 – Associa l’attivatore ai tag

Non ci resta che associare l’Attivatore personalizzato ai Tag che non vogliamo attivare senza il consenso.
Quali potrebbero essere?

Niente paura 🙂

Ecco un succoso elenco:

Quello che devi fare è selezionare come attivatore “Iubenda Accettato”. Dovresti avere una serie di Tag simili a questo:

Alcune considerazioni

Dunque, sarò sincero. Questa soluzione non mi affascina. Per niente.

Ma come? Se la guida di Iubenda dice così, cosa c’è che non va?

C’è che non mi piace quando viene scatenato l’evento. Guarda tu stesso.

Non noti nulla di strano?

Sì dai, l’hai notato. L’evento di Iubenda scatta dopo il caricamento della pagina. Un bel problema.

Perché potrebbe essere un problema?

Semplice.

Alcuni Tag potrebbero attivarsi davvero troppo tardi.

E quindi?

E quindi ora ti dico cosa bisogna fare per farlo performare.

Allacciati le cinture, ora ti insegno un #barbatrucco.

Step 1 – Il codice di Iubenda inseriamolo con Google Tag Manager

Trovo assurdo che tutto sia gestito da uno snippet JavaScript che dobbiamo inserire a mano. Quindi elimina tutto dal <body> e facciamolo con un Tag di tipo HTML personalizzato. Daremo anche una priorità all’attivazione del Tag rispetto agli altri.

  • Tag > Nuovo > Configurazione tag.
  • Tipo di tag: Tag HTML personalizzato.
  • Incolla lo snippet di Iubenda.
  • Attivazione: All pages (Tutte le pagine)
  • Impostazioni avanzate > Priorità di attivazione > 99999.

Dovresti avere una cosa simile:

 

[Aggiornamento 11 Aprile 2017]

Questa è la parte inserita nella guida avanzata.

Step 2 – Creiamo una variabile di tipo Cookie

Per capire se l’utente ha accettato i cookie, e quindi non far più apparire più il messaggio di accettazione della Cookie Law, Iubenda utilizza un cookie.

Con Google Tag Manager è possibile intercettare questi cookie. Per semplicità ti dico che il cookie di Iubenda è fatto in questo modo:

_iub_cs-XXX

Dove XXX è il cookiePolicyId di Iubenda, quello dello snippet per capirci.

Quindi non ti resta che creare la Variabile:

  • Variabili > Nuova > Configurazione variabile.
  • Tipo di variabile: Cookie proprietario.
  • Nome Cookie: _iub_cs-XXX
  • Flagga la voce Decodifica in formato URI il cookie.
  • Nomina la Variabile: “cookie iubenda”.

Dovresti avere una cosa simile:

Step 3 – Creiamo un attivatore “negativo”: No accetta Cookie Law

Il cookie che abbiamo creato contiene un valore che identifica se effettivamente l’utente ha cliccato o meno l’accettazione della Cookie Law.

Per gestire al meglio la cosa, ci basterà creare un Attivatore che verifichi se l’utente NON ha accettato la Cookie Law.

  • Attivatore > Nuovo > Configurazione attivatore.
  • Tipo di attivatore: Visualizzazione di pagina.
  • Questo attivatore si attiva su: Alcune visualizzazioni di pagina.
  • Aziona questo attivatore quando: cookie iubenda non contiene “consent”:true
  • Nomina l’Attivatore così: “no accetto cookie law”.

Dovresti avere una variabile simile a questa:

Step 4 – Associamo i Tag l’eccezione e l’attivatore iubenda

Ora che abbiamo a disposizione il cookie diviene tutto più immediato. Ai vari Tag che devono essere sottoposti alla gestione della Cookie Law.

Tutti i Tag devono sottostare a questa regola:

  • Attivatore ►Attivatore classico (es: all pages)
  • Attivatore ► Iubenda Accettato
  • Attivatore Eccezioni ► no accetto cookie law
  • Opzioni del tag: Attiva una sola volta per pagina

Ecco l’esempio con il Tag di Hotjar:

Ricordati che per rendere tutte le modifiche effettive devi sempre pubblicare la nuova versione del contenitore cliccando il pulsante blu “Invia” 😉

Ok, ma cosa accade realmente?

Dunque, tutto sto casino per ottimizzare cosa?

Semplice.

In questo modo:

  • Nel caricamento di pagina, la prima volta il Tag non verrà subito attivato su All Pages perché il cookie non esiste ancora.
  • Non appena viene scatenato “Iubenda Accettato” il Tag si attiva (e il cookie di Iubenda viene creato).
  • Nei prossimi caricamenti di pagina il Tag verrà attivato su All Pages perché il cookie esiste già.

In questo modo non dovremo aspettare l’evento personalizzato di Iubenda.

Allora gestire la Cookie Law/GDPR con Google Tag Manager diventa semplice, non trovi?

Lasciami un commento se hai qualche domanda e, mi raccomando, iscriviti alla newsletter (ci sono tanti altri #barbatrucchi).

PS: Puoi fare tutto questo anche con altri strumenti come Cookiebot, oneTrust o altri servizi simili.

Matteo Zambon

View Comments

  • Ciao Matteo, nella creazione del TAG adesso sono presenti in beta alcune funzioni, come ad esempio "Impostazioni relative al consenso". Consigli di impostare qualcosa o lasciare su "Non Impostata".? Grazie

  • Una domanda, ho seguito la guida ma da quello che ho capito se vengono attivati i semplici cookie "necessari" non posso misurare nemmeno le pageview?

    • Ciao Gabriele, dipende come stai implementando GA4. Se non usi la consent mode o altre configurazioni per rendere la hit anonima, devi ragionare con GA4 acceso o spento a seconda del consenso (compreso il page_view).

      Diciamo che è un po' più complesso, ti consiglio di valutare il corso: https://shop.tagmanageritalia.it/corso-ga4-per-il-gdpr/

      A presto!

  • Salve Matteo,
    innanzitutto grazie per questa guida.

    Io sto provando ad installare Iubenda con il metodo da te proposto, ma purtroppo, i call back non funzionano, ed i tag non vengono triggerati.

    Ti icollo di seguito la sezione callbacks:

    "callback": {
    onPreferenceExpressedOrNotNeeded: function(preference) {
    dataLayer.push({
    iubenda_ccpa_opted_out: _iub.cs.api.isCcpaOptedOut()
    });
    if (!preference) {
    dataLayer.push({
    event: "iubenda_preference_not_needed"
    });
    } else {
    if (preference.consent === true) {
    dataLayer.push({
    event: "iubenda_consent_given"
    });
    } else if (preference.consent === false) {
    dataLayer.push({
    event: "iubenda_consent_rejected"
    });
    } else if (preference.purposes) {
    for (var purposeId in preference.purposes) {
    if (preference.purposes[purposeId]) {
    dataLayer.push({
    event: "iubenda_consent_given_purpose_" + purposeId
    });

  • Ciao Matteo,
    ma i tag così non ti partono due volte? Una volta al Iubenda accettato e una volta al caricamento della pagina?

  • Ciao Matteo,
    sto implementando la cookie solution con Iubenda e lo script js che viene fornito (forse a causa di un aggiornamento, forse a seguito della personalizzazione) risulta essere diverso da quello presentato sia nella tua, che nella loro guida.
    Riporto questo in quanto lo script:

    var _iub = _iub || [];
    _iub.csConfiguration = {"consentOnContinuedBrowsing":false,"perPurposeConsent":true,"lang":"en","siteId":XXXX,"floatingPreferencesButtonDisplay":"bottom-right","cookiePolicyId":XXXXX, "banner":{ "acceptButtonDisplay":true,"customizeButtonDisplay":true,"acceptButtonColor":"#0073CE","acceptButtonCaptionColor":"white","customizeButtonColor":"#DADADA","customizeButtonCaptionColor":"#4D4D4D","rejectButtonColor":"#0073CE","rejectButtonCaptionColor":"white","closeButtonDisplay":false,"position":"float-bottom-center","backgroundOverlay":true,"textColor":"black","backgroundColor":"white" }};

    Non presenta il datalayer push event che poi mi fa scattare l'accettazione del cookie.

    A tale proposito non riesco a capire se è un errore da parte mia, mi sono perso qualcosa, oppure Iubenda fornisce uno script differente adesso e quindi devo riadattare il js o implementarlo in maniera diversa.

    Sapresti chiarirmi questo dubbio?

  • Ciao, ho seguito le indicazioni (con sito IT/EN) ma all'accettazione dell'utente non sembra che accada niente. Ma forse sto usando uno snippet non corretto, quello di Iubenda va modificato? Questo che segue è quello che sto usando:

    var _iub = _iub || [];
    _iub.csConfiguration = {"consentOnContinuedBrowsing":false,"whitelabel":false,"lang":"it","siteId":XXXXX,"cookiePolicyId":XXXX, "banner":{ "acceptButtonDisplay":true,"customizeButtonDisplay":true,"acceptButtonColor":"#0073CE","acceptButtonCaptionColor":"white","customizeButtonColor":"#212121","customizeButtonCaptionColor":"white","rejectButtonDisplay":true,"rejectButtonColor":"#0073CE","rejectButtonCaptionColor":"white","position":"bottom","textColor":"white","backgroundColor":"#000001" }};

    • Ciao Matteo, sto leggendo il libro GTM per chi inizia e sono arrivato alla implementazione di Iubenda, Volevo chiederti, oggi devo seguire questa guida o quella del consenso granulare? Te lo chiedo perche sono abbastanza alle prime armi e la guida del consenso granulare mi sembra bella tosta... Come fare? Grazie!

    • Ciao Pietro manca la parte del function dove aggiunge l'evento. Forse è stato cancellato nella pubblicazione del commento. Puoi condividere l'url del sito così verifico?

      Fammi sapere!

  • Ciao Matteo,
    se lascio lo snippet di codice per l'accettazione/non accettazione dei cookies è inserito anche nella tab Cookie Solution del plugin di Iubenda su Wp che tipo di problematiche ci possono essere?
    Grazie

  • Buongiorno Matteo.
    Sono un ragazzo uscito da un corso di scrittura in HTML e tutto LAMP che sta cercando di fare un proprio blog (più per manualità che utilizzo).
    Taglio corto. Ho seguito l'attuale guida di iubenda alla lettera (incluso eccezioni e attivatori come indicato), quindi utilizzato il mio script (quello dopo la creazione del banner) integrato con il codice che fornisce iubenda per gli eventi, non il tuo.
    Senza fare come indichi tu non si attiva nulla. Senza iubenda funzionava e ora no (quindi suppongo che almeno lo stia bloccando). Ho ora iniziato a lavorare facendo tutto con dei tag come suggerisci in questa guida. All'ultimo passaggio suggerisci Hotjar, ma io ho fatto il sito con una macchina ec2 di aws e in lamp! Quindi non so come utilizzarlo. Grazie in anticipo. Se avessi tempo sarei disponibile anche a fare una chiamata o similari.
    Grazie molte e buona giornata (grand'articolo!)

  • Ciao Matteo, abilitando l'attivatore Iubenda Accettato ai tag link esterno, timer 30, ecc (creati con le tue guide), questi si attivano subito con l'accettazione dei cookie. Es. il tag timer 30 secondi, parte subito una volta chiuso il banner del consenso, non aspetta che l'utente abbia effettivamente trascorso 30 secondi sul sito. Se invece rimuovo l'attivatore Iubenda Accettato dai tag suddetti, questi non partono proprio. E aggiungo in chiusura di commento che quando usavo cookiebot, con attivatore cookieconsent_statistic, questi tag funzionavano alla meraviglia. Cosa sbaglio? Non è sufficiente sostituire Iubenda Accettato a cookieconsent_statistic? grazie

  • Ciao Matteo,

    Innanzitutto complimenti e grazie per le preziosissime guide!

    Mi sto trovando ad applicare il blocco preventivo su un ecommerce realizzato in squarespace in cui ho già tag manager per monitorare una serie di azione ma il codice di analytics É inserito direttamente sul sito in quanto mettendolo su gtm non mi permetteva di monitorare le transazioni (la pagina checkout di squarespace non prende il gtm).

    C è una soluzione a tuo avviso per poter comunque prevedere il blocco tramite gtm?

    Grazie mille

    • Ciao Giulia e grazie del feedback. Dunque direi che se non puoi mettere GTM nella pagina di Checkout avrai solo scoperto quella fase. In sostanza puoi bloccare ovunque tranne dove non c'è GTM.

      Ti direi di chiedere direttamente sull'assistenza di squarespace come poter fare :)

      A presto!

Recent Posts

Caso studio: LUISAVIAROMA ottimizza il tracciamento dei dati Ecommerce e le performance Advertising grazie GA4 e BigQuery

LUISAVIAROMA è uno dei principali fashion e-tailer di lusso al mondo, con oltre 5 milioni…

4 giorni ago

Caso studio: Mondo Convenienza realizza +85% di vendite ecommerce e +100% di conversioni aggiuntive per le campagne Meta Ads grazie GA4 e Server-Side Tracking

All’interno del vasto e competitivo mercato della Grande Distribuzione Organizzata (GDO), Mondo Convenienza rappresenta uno…

6 giorni ago

Come creare un report in GA4 per analizzare il funnel di conversione di un sito web o ecommerce

Se ti occupi di marketing o advertising, saprai che i funnel rappresentano il percorso che…

1 settimana ago

Attribuzioni errate in GA4: cause e soluzioni al problema

Negli ultimi mesi hai notato in Google Analytics 4 un calo improvviso e inspiegabile nelle…

4 mesi ago

Come creare una Dashboard Ecommerce per analizzare i dati degli acquisti Nuovi e di Ritorno

Se ti trovi su questa guida è perché hai compreso che solo attraverso la Data…

5 mesi ago