Creare un modello per la modalità di consenso

Questo articolo è rivolto agli sviluppatori che gestiscono una soluzione di gestione del consenso sui siti web che utilizzano Google Tag Manager (GTM).

Questa pagina introduce i tipi di consenso in Google Tag Manager e mostra come integrarli con la tua soluzione di gestione del consenso.

Quando fornisci un modello di tag, gli utenti possono integrare la tua soluzione per il consenso senza codice, con un notevole risparmio di tempo e fatica.

Gli utenti possono impostare gli stati del consenso predefiniti utilizzando un modello per la modalità di consenso e comunicare a Google Tag Manager le scelte dei visitatori relative al consenso. Ciò garantisce il funzionamento ottimale dei tag Google e di terze parti che supportano la modalità di consenso.

In qualità di creatore di modelli, puoi implementare i modelli della modalità di consenso per uso interno o pubblicarli nella Galleria modelli della community per renderli disponibili pubblicamente. I fornitori di piattaforme di gestione del consenso (CMP) che offrono modelli per la modalità di consenso hanno l'opportunità di essere elencati nella nostra documentazione sulla modalità di consenso e hanno il selettore Galleria modelli di presentare i propri modelli.

I tag di Google e di terze parti modificano il proprio comportamento di archiviazione in base a uno stato del consenso pari a granted o denied. Possono disporre di controlli integrati del consenso per uno qualsiasi dei seguenti tipi di consenso:

Tipo di consenso Descrizione
ad_storage Consente l'archiviazione di informazioni, ad esempio i cookie, relativi alla pubblicità.
ad_user_data Imposta il consenso per l'invio dei dati utente a Google per scopi di pubblicità online.
ad_personalization Imposta il consenso per la pubblicità personalizzata.
analytics_storage Abilita l'archiviazione, ad esempio i cookie, relativi all'analisi (ad esempio la durata della visita).
functionality_storage Abilita l'archiviazione che supporta le funzionalità del sito web o dell'app, come le impostazioni della lingua.
personalization_storage Abilita l'archiviazione relativa alla personalizzazione, ad esempio i suggerimenti sui video.
security_storage Consente l'archiviazione di informazioni relative alla sicurezza, ad esempio la funzionalità di autenticazione, la prevenzione delle attività fraudolente e altre protezioni per gli utenti

La modalità di consenso tiene traccia delle scelte dei visitatori relative al consenso e i controlli del consenso dei tag assicurano che il comportamento dei tag si adatti di conseguenza. Quando crei un nuovo modello di consenso, segui le best practice:

  • Utilizza le API per la modalità di consenso di Tag Manager setDefaultConsentState e updateConsentState, anziché gtag consent.

  • Imposta gli stati del consenso predefiniti subito dopo l'attivazione utilizzando l'attivatore Inizializzazione del consenso - Tutte le pagine.

  • La CMP deve richiedere al visitatore di concedere o negare il consenso per tutti i tipi di consenso applicabili.

  • Quando un visitatore indica la sua scelta per il consenso, la CMP deve passare lo stato di consenso aggiornato.

1. Crea un nuovo modello

Questo approccio di implementazione utilizza un campo nel modello per mantenere lo stato del consenso predefinito. Il codice di implementazione legge quel campo per impostare lo stato del consenso predefinito in fase di runtime. Per il comando update, il codice tenta di leggere un cookie impostato dalla soluzione per il consenso per memorizzare le scelte dei visitatori. Puoi anche impostare un callback per updateConsentState per gestire il caso in cui un visitatore deve ancora effettuare le selezioni relative al consenso o decide di modificarlo.

  1. Accedi all'account Google Tag Manager.
  2. Nel menu di navigazione a sinistra, seleziona Modelli.
  3. Nel riquadro Modelli di tag, fai clic su Nuovo.
  1. Seleziona la scheda Campi, fai clic su Aggiungi campo > Tabella parametri.
  2. Cambia il nome in defaultSettings.
  3. Espandi il campo.
  4. Aggiorna il Nome visualizzato in Default settings.
  5. Fai clic su Aggiungi colonna, scegli Inserimento di testo, modifica il nome in region e seleziona la casella Richiedi valori di colonna univoci.
  6. Espandi la colonna e modifica il nome visualizzato in Region (leave blank to have consent apply to all regions). L'affermazione tra parentesi è la documentazione per gli utenti del modello. Scopri di più sulla configurazione delle impostazioni predefinite del consenso per regioni diverse.
  7. Fai clic su Aggiungi colonna, scegli Inserimento di testo e modifica il nome in granted.
  8. Espandi la colonna e modifica il nome visualizzato in Granted Consent Types (comma separated).
  9. Fai clic su Aggiungi colonna, scegli Inserimento di testo e modifica il nome in denied.
  10. Espandi la colonna e modifica il nome visualizzato in Denied Consent Types (comma separated)

(Facoltativo) Per aggiungere il supporto per l'oscuramento dei dati pubblicitari:

  1. Fai clic su Aggiungi campo, scegli Casella di controllo e modifica il nome del campo in ads_data_redaction.
  2. Aggiorna il nome visualizzato a Redact Ads Data

Scopri di più sul comportamento dei cookie con l'oscuramento dei dati degli annunci

(Facoltativo) Per aggiungere il supporto per il trasferimento dei parametri URL:

  1. Fai clic su Aggiungi campo, scegli Casella di controllo e modifica il nome del campo in url_passthrough.
  2. Aggiorna il nome visualizzato a Pass through URL parameters

Ulteriori informazioni sul passaggio dei parametri URL

Per aggiungere il codice di implementazione:

  1. Apri la scheda Codice nell'editor del modello.
  2. Nell'esempio di codice riportato di seguito, modifica i campi dei segnaposto.
  3. Copia il codice e sostituisci con il codice boilerplate nell'editor dei modelli.
  4. Salva il modello.
// The first two lines are optional, use if you want to enable logging
const log = require('logToConsole');
log('data =', data);
const setDefaultConsentState = require('setDefaultConsentState');
const updateConsentState = require('updateConsentState');
const getCookieValues = require('getCookieValues');
const callInWindow = require('callInWindow');
const gtagSet = require('gtagSet');
const COOKIE_NAME = 'Your_cookie_name';
/*
 *   Splits the input string using comma as a delimiter, returning an array of
 *   strings
 */
const splitInput = (input) => {
  return input.split(',')
      .map(entry => entry.trim())
      .filter(entry => entry.length !== 0);
};
/*
 *   Processes a row of input from the default settings table, returning an object
 *   which can be passed as an argument to setDefaultConsentState
 */
const parseCommandData = (settings) => {
  const regions = splitInput(settings['region']);
  const granted = splitInput(settings['granted']);
  const denied = splitInput(settings['denied']);
  const commandData = {};
  if (regions.length > 0) {
    commandData.region = regions;
  }
  granted.forEach(entry => {
    commandData[entry] = 'granted';
  });
  denied.forEach(entry => {
    commandData[entry] = 'denied';
  });
  return commandData;
};
/*
 *   Called when consent changes. Assumes that consent object contains keys which
 *   directly correspond to Google consent types.
 */
const onUserConsent = (consent) => {
  const consentModeStates = {
    ad_storage: consent['adConsentGranted'] ? 'granted' : 'denied',
    ad_user_data: consent['adUserDataConsentGranted'] ? 'granted' : 'denied',
    ad_personalization: consent['adPersonalizationConsentGranted'] ? 'granted' : 'denied',
    analytics_storage: consent['analyticsConsentGranted'] ? 'granted' : 'denied',
    functionality_storage: consent['functionalityConsentGranted'] ? 'granted' : 'denied',
    personalization_storage: consent['personalizationConsentGranted'] ? 'granted' : 'denied',
    security_storage: consent['securityConsentGranted'] ? 'granted' : 'denied',
  };
  updateConsentState(consentModeStates);
};
/*
 *   Executes the default command, sets the developer ID, and sets up the consent
 *   update callback
 */
const main = (data) => {
  /*
   * Optional settings using gtagSet
   */
  gtagSet('ads_data_redaction', data.ads_data_redaction);
  gtagSet('url_passthrough', data.url_passthrough);
  gtagSet('developer_id.your_developer_id', true);
  // Set default consent state(s)
  data.defaultSettings.forEach(settings => {
    const defaultData = parseCommandData(settings);
  // wait_for_update (ms) allows for time to receive visitor choices from the CMP
    defaultData.wait_for_update = 500;
    setDefaultConsentState(defaultData);
  });

  // Check if cookie is set and has values that correspond to Google consent
  // types. If it does, run onUserConsent().
  const settings = getCookieValues(COOKIE_NAME);
  if (typeof settings !== 'undefined') {
    onUserConsent(settings);
  }
  /**
   *   Add event listener to trigger update when consent changes
   *
   *   References an external method on the window object which accepts a
   *   function as an argument. If you do not have such a method, you will need
   *   to create one before continuing. This method should add the function
   *   that is passed as an argument as a callback for an event emitted when
   *   the user updates their consent. The callback should be called with an
   *   object containing fields that correspond to the five built-in Google
   *   consent types.
   */
  callInWindow('addConsentListenerExample', onUserConsent);
};
main(data);
data.gtmOnSuccess();

Successivamente, configura le autorizzazioni per accedere allo stato del consenso e ai cookie.

  1. Seleziona la scheda Autorizzazioni e fai clic su Accedi allo stato del consenso.
  2. Fai clic su Aggiungi tipo di consenso.
  3. Fai clic sulla casella e seleziona ad_storage dal menu a discesa.
  4. Seleziona Scrivi.
  5. Fai clic su Aggiungi
  6. Ripeti i passaggi 2-5 per ad_user_data, ad_personalization e analytics_storage. Se hai bisogno di tipi di consenso aggiuntivi, aggiungili allo stesso modo.
  7. Fai clic su Salva.

Per aggiungere le autorizzazioni per l'accesso ai cookie:

  1. Seleziona la scheda Autorizzazioni e fai clic su Lettura dei valori dei cookie.
  2. In Specifico, inserisci i nomi di ciascuno dei cookie che il codice deve leggere per determinare le scelte dell'utente relative al consenso, un nome per riga.
  3. Fai clic su Salva.

2. Crea test delle unità

Per informazioni sulla creazione di test per il tuo modello, consulta la sezione Test.

Il codice seguente mostra un esempio di come questo modello potrebbe essere integrato con il codice per la tua soluzione di gestione del consenso aggiungendo un listener:

// Array of callbacks to be executed when consent changes
const consentListeners = [];

/**
 *   Called from GTM template to set callback to be executed when user consent is provided.
 *   @param {function} Callback to execute on user consent
 */
window.addConsentListenerExample = (callback) => {
  consentListeners.push(callback);
};

/**
 *   Called when user grants/denies consent.
 *   @param {Object} Object containing user consent settings.
 */
const onConsentChange = (consent) => {
  consentListeners.forEach((callback) => {
    callback(consent);
  });
};

Dopo che un visitatore del sito web ha indicato le proprie scelte relative al consenso, in genere tramite l'interazione con un banner del consenso, il codice del modello deve aggiornare gli stati del consenso di conseguenza con l'API updateConsentState.

L'esempio seguente mostra la chiamata updateConsentState per un visitatore che ha indicato di acconsentire a tutti i tipi di archiviazione. Anche in questo esempio, questo esempio utilizza valori impostati come hardcoded per granted, ma in pratica, questi valori dovrebbero essere determinati in fase di runtime utilizzando il consenso del visitatore raccolto dalla CMP.

const updateConsentState = require('updateConsentState');

updateConsentState({
  'ad_storage': 'granted',
  'ad_user_data': 'granted',
  'ad_personalization': 'granted',
  'analytics_storage': 'granted',
  'functionality_storage': 'granted',
  'personalization_storage': 'granted',
  'security_storage': 'granted'
});

Informazioni sul comportamento specifico per regione

Per impostare gli stati del consenso predefiniti da applicare ai visitatori provenienti da determinate aree, specifica una regione (secondo lo standard ISO 3166-2) nel modello. L'uso dei valori per regione consente agli utenti del modello di rispettare le normative locali senza perdere le informazioni dei visitatori esterni alle regioni. Se una regione non è specificata in un comando setDefaultConsentState, il valore si applica a tutte le altre regioni.

Ad esempio, quanto segue imposta lo stato predefinito di analytics_storage su denied per i visitatori provenienti da Spagna e Alaska e imposta analytics_storage su granted per tutti gli altri:

const setDefaultConsentState = require('setDefaultConsentState');

setDefaultConsentState({
  'analytics_storage': 'denied',
  'region': ['ES', 'US-AK']
});
setDefaultConsentState({
  'analytics_storage': 'granted'
});

I criteri più specifici hanno la precedenza

Se nella stessa pagina si verificano due comandi per il consenso predefiniti con valori per una regione e una sottoregione, verrà applicato quello con una regione più specifica. Ad esempio, se ad_storage è impostato su 'granted' per la regione US e ad_storage impostato su 'denied' per la regione US-CA, un visitatore della California applicherà l'impostazione più specifica US-CA.

Regione ad_storage Comportamento
US 'granted' Si applica agli utenti negli Stati Uniti che non si trovano in Canada
US-CA 'denied' Si applica agli utenti US-CA
Non specificato 'granted' Utilizza il valore predefinito di 'granted'. In questo esempio, ciò si applica agli utenti che non si trovano negli Stati Uniti o in Canada

Metadati aggiuntivi

Puoi utilizzare l'API gtagSet per impostare i seguenti parametri facoltativi:

Queste API sono disponibili solo nell'ambiente sandbox del modello GTM.

Trasmettere le informazioni relative a clic sull'annuncio, ID cliente e ID sessione negli URL

Quando un visitatore arriva sul sito web di un inserzionista dopo aver fatto clic su un annuncio, le informazioni sull'annuncio potrebbero essere aggiunte agli URL pagina di destinazione come parametro di ricerca. Per migliorare l'accuratezza delle conversioni, i tag di Google in genere memorizzano queste informazioni nei cookie proprietari nel dominio dell'inserzionista.

Tuttavia, se ad_storage è denied, i tag Google non salveranno queste informazioni localmente. Per migliorare la qualità della misurazione dei clic sugli annunci in questo caso, gli inserzionisti possono, in via facoltativa, trasferire le informazioni sui clic sugli annunci attraverso i parametri URL delle pagine utilizzando una funzionalità chiamata passthrough URL.

Analogamente, se analytics_storage viene impostato su negato, il passthrough URL può essere utilizzato per inviare dati analitici basati sulle sessioni e sugli eventi (incluse le conversioni) tra le pagine senza cookie.

Per utilizzare il passthrough URL, devono essere soddisfatte le seguenti condizioni:

  • Nella pagina sono presenti tag Google sensibili al consenso.
  • Il sito ha attivato l'utilizzo della funzionalità di passthrough dell'URL.
  • La modalità di consenso è implementata nella pagina.
  • Il link in uscita fa riferimento allo stesso dominio della pagina corrente.
  • Nell'URL è presente un gclid/dclid (solo tag Google Ads e Floodlight)

Il tuo modello deve consentire all'utente del modello di configurare l'attivazione o meno di questa impostazione. Per impostare url_passthrough su true, viene utilizzato il seguente codice modello:

gtagSet('url_passthrough', true);

Oscura i dati pubblicitari

Quando ad_storage viene negato, non vengono impostati nuovi cookie per scopi pubblicitari. Inoltre, non verranno utilizzati i cookie di terze parti precedentemente impostati su google.com e doubleclick.net. I dati inviati a Google continueranno a includere l'URL completo della pagina, incluse eventuali informazioni sui clic sugli annunci nei parametri URL.

Per oscurare ulteriormente i dati pubblicitari quando il criterio ad_storage viene negato, imposta ads_data_redaction su true.

Quando ads_data_redaction è true e ad_storage è negato, gli identificatori dei clic sugli annunci inviati nelle richieste di rete dai tag Google Ads e Floodlight verranno oscurati.

gtagSet('ads_data_redaction', true);

ID sviluppatore

Se sei un fornitore di CMP con un ID sviluppatore rilasciato da Google, utilizza il seguente metodo per impostarlo il prima possibile nel tuo modello.

È necessario un ID sviluppatore solo quando la tua implementazione verrà utilizzata su più siti web da società o entità non correlate. Se l'implementazione verrà utilizzata da un sito o una persona giuridica, non richiedere un ID sviluppatore.

gtagSet('developer_id.<your_developer_id>', true);

Fornisci la documentazione per gli utenti

Gli utenti utilizzeranno il tuo modello di consenso per configurare un tag che raccolga il loro consenso. Fornisci ai tuoi utenti la documentazione che spiega le seguenti best practice:

  • Come configurare le impostazioni predefinite per il consenso nella tabella Impostazioni.
  • Come configurare le impostazioni predefinite del consenso per regioni diverse aggiungendo altre righe della tabella.
  • Attiva il tag sull'attivatore Inizializzazione del consenso - Tutte le pagine.

Passaggi successivi

Se vuoi fornire il tuo modello a tutti gli utenti di Tag Manager, caricalo nella Galleria modelli della community.