Questo articolo è rivolto agli sviluppatori che gestiscono una soluzione di gestione del consenso su Siti web che utilizzano Google Tag Manager (GTM).
Questa pagina introduce i tipi di consenso in Google Tag Manager e mostra come di integrarle con la tua soluzione di gestione del consenso.
Perché usare un modello di tag per il consenso?
Quando fornisci un modello di tag, gli utenti possono integrare il tuo consenso soluzione 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 le scelte dei visitatori relative al consenso a Google Tag Manager. Ciò garantisce un'ottimizzazione funzionamento dei tag Google e di terze parti che supportano il consenso .
In qualità di creatore di modelli, puoi implementare i modelli per la modalità di consenso per uso interno oppure pubblicali nella Galleria modelli della community per disponibili pubblicamente. Fornitori di piattaforme di gestione del consenso (CMP) che offrono I modelli di modalità di consenso possono essere elencati nella nostra modalità di consenso documentazione e il selettore Galleria modelli offre i propri modelli.
Stato e tipi di consenso
I tag di Google e di terze parti modificano il comportamento relativo allo spazio di archiviazione in base al consenso
stato di granted
o denied
. Può disporre di controlli integrati per il consenso
per uno dei seguenti tipi di consenso:
Tipo di consenso | Descrizione |
---|---|
ad_storage |
Consente l'archiviazione di informazioni, ad esempio i cookie, correlate alla pubblicità. |
ad_user_data |
Imposta il consenso per l'invio dei dati utente a Google per scopi pubblicitari online. |
ad_personalization |
Imposta il consenso per la pubblicità personalizzata. |
analytics_storage |
Consente l'archiviazione di informazioni, come i cookie, correlate a dati e analisi (ad esempio, visita media). |
functionality_storage |
Consente l'archiviazione di informazioni che supportano la funzionalità del sito web o dell'app come le impostazioni della lingua. |
personalization_storage |
Consente l'archiviazione di informazioni correlate alla personalizzazione, ad esempio i video personalizzati. |
security_storage |
Consente l'archiviazione di informazioni relative alla sicurezza, come l'autenticazione funzionalità, prevenzione delle attività fraudolente e altre protezioni per gli utenti |
Crea un nuovo modello di consenso
La modalità di consenso tiene traccia delle scelte dei visitatori relative al consenso e dei tag relativi ai controlli del consenso assicura che il comportamento del tag si adegua di conseguenza. Quando crei un nuovo 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 il metodo Attivatore Inizializzazione del consenso - Tutte le pagine.
La CMP deve chiedere al visitatore il prima possibile di concedere o negare il consenso per tutti i tipi di consenso applicabili.
Quando un visitatore indica la propria scelta relativa al consenso, la CMP deve trasmettere stato del consenso.
1. Crea un nuovo modello
Questo approccio di implementazione utilizza un campo nel modello per contenere stato del consenso predefinito. Il codice di implementazione legge questo campo per impostare stato del consenso predefinito in fase di runtime. Per il comando di aggiornamento, il codice tenta di leggere un cookie impostato dalla soluzione per il consenso per memorizzare le scelte dei visitatori relative al consenso. Configurerai anche un callback per
updateConsentState
per gestire la richiesta Se un visitatore deve ancora selezionare il consenso o decide di modificare il loro consenso.
Per creare un modello di consenso:
- Accedi all'account Google Tag Manager.
- Nel menu di navigazione a sinistra, seleziona Modelli.
- Nel riquadro Modelli di tag, fai clic su Nuovo.
Per impostare gli stati del consenso predefiniti:
- Seleziona la scheda Campi, fai clic su Aggiungi campo > Tabella dei parametri.
- Cambia il nome in
defaultSettings
. - Espandi il campo.
- Aggiorna il Nome visualizzato impostandolo su
Default settings
. - Fai clic su Aggiungi colonna, scegli Input di testo, modifica il nome in
region
e Seleziona la casella Richiedi che i valori delle colonne siano univoci. - Espandi la colonna e cambia il nome visualizzato in
Region (leave blank to have consent apply to all regions)
. L'affermazione tra parentesi è per gli utenti del modello. Scopri di più su configurare i valori predefiniti del consenso per regioni diverse. - Fai clic su Aggiungi colonna, scegli Input di testo, modifica il nome in
granted
. - Espandi la colonna e cambia il nome visualizzato in
Granted Consent Types (comma separated)
. - Fai clic su Aggiungi colonna, scegli Input di testo, modifica il nome in
denied
. - Espandi la colonna e cambia il nome visualizzato in
Denied Consent Types (comma separated)
(Facoltativo) Per aggiungere il supporto per l'oscuramento dei dati pubblicitari:
- Fai clic su Aggiungi campo, scegli Casella di controllo e modifica il nome del campo in
ads_data_redaction
. - Aggiorna il nome visualizzato in
Redact Ads Data
Scopri di più sul comportamento dei cookie con l'oscuramento dei dati pubblicitari
(Facoltativo) Per aggiungere il supporto del passaggio dei parametri URL:
- Fai clic su Aggiungi campo, scegli Casella di controllo e modifica il nome del campo in
url_passthrough
. - Aggiorna il nome visualizzato in
Pass through URL parameters
Scopri di più sul passaggio dei parametri URL
Per aggiungere il codice di implementazione:
- Apri la scheda Codice nell'editor dei modelli.
- Nell'esempio di codice riportato di seguito, modifica i campi segnaposto.
- Copia il codice e sostituiscilo con il codice boilerplate nell'editor dei modelli.
- 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();
Poi, configura le autorizzazioni per l'accesso allo stato del consenso cookie.
Per aggiungere autorizzazioni per la gestione degli stati del consenso:
- Seleziona la scheda Autorizzazioni e fai clic su Accesso allo stato del consenso.
- Fai clic su Aggiungi tipo di consenso.
- Fai clic sulla casella e seleziona
ad_storage
dal menu a discesa. - Seleziona Scrivi.
- Fai clic su Aggiungi
- Ripeti i passaggi 2-5 per
ad_user_data
,ad_personalization
eanalytics_storage
. Se hai bisogno di altri tipi di consenso, aggiungili nella allo stesso modo. - Fai clic su Salva.
Per aggiungere le autorizzazioni per l'accesso ai cookie:
- Seleziona la scheda Autorizzazioni e fai clic su Legge i valori dei cookie.
- In Specifici, inserisci i nomi di ciascuno dei cookie necessari per il codice. da leggere per determinare le scelte dell'utente relative al consenso, un nome per riga.
- Fai clic su Salva.
2. Crea test delle unità
Per informazioni sulla creazione di test per il tuo modello, consulta la sezione Test.
3. Integra il modello con la soluzione per il consenso
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);
});
};
Aggiorna lo stato del consenso
Dopo che un visitatore del sito web ha indicato le proprie scelte relative al consenso, in genere tramite interagendo con un banner del consenso, il codice del modello deve aggiornare il consenso stati di conseguenza con l'API updateConsentState.
L'esempio seguente mostra la chiamata updateConsentState
per un visitatore che
indicato di acconsentire a tutti i tipi di archiviazione. Anche in questo caso, questo esempio utilizza hardcoded
per granted
, ma in pratica dovrebbero essere determinati in fase di runtime
usando 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 che si applicano ai visitatori di determinate aree:
specifica una regione (secondo le norme ISO
3166-2) nel
modello. L'uso dei valori della regione consente agli utenti del modello di rispettare le
senza perdere le informazioni dei visitatori al di fuori di quelle regioni. Quando
non è specificata una regione in un comando setDefaultConsentState
, il valore
si applica a tutte le altre regioni.
Ad esempio, quanto segue imposta lo stato predefinito per 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 più specifici hanno la precedenza
Se nella stessa pagina con valori relativi a una regione si verificano due comandi predefiniti per il consenso
e una sottoregione, verrà applicata quella con una regione più specifica. Per
ad esempio, se ad_storage
è impostata su 'granted'
per la regione US
e
ad_storage
impostata su 'denied'
per la regione US-CA
, un visitatore della California
verrà applicata l'impostazione US-CA
più specifica.
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,
si applica agli utenti che non si trovano negli Stati Uniti o negli Stati Uniti e 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 informazioni relative a clic sugli annunci, ID cliente e ID sessione negli URL
Quando un visitatore viene indirizzato al sito web di un inserzionista dopo aver fatto clic su un annuncio, informazioni sull'annuncio potrebbero essere aggiunte agli URL pagina di destinazione come query . Per migliorare la precisione delle conversioni, i tag Google in genere memorizzano questo informazioni nei cookie proprietari sul dominio dell'inserzionista.
Tuttavia, se ad_storage
è denied
, i tag Google non salveranno queste informazioni
a livello locale. In questo caso, per migliorare la qualità della misurazione dei clic sugli annunci, gli inserzionisti possono
facoltativamente trasmettere le informazioni sui clic sugli annunci tramite i parametri URL tra le pagine utilizzando un
chiamata passthrough dell'URL.
Allo stesso modo, se il criterio analytics_storage
è impostato su Negato, è possibile utilizzare il passthrough dell'URL
di inviare dati e analisi basati su eventi e sessioni (incluse le conversioni) senza
cookie tra le pagine.
Per utilizzare il passthrough dell'URL, devono essere soddisfatte le seguenti condizioni:
- Nella pagina sono presenti tag Google sensibili al consenso.
- Il sito ha attivato l'utilizzo della funzionalità passthrough dell'URL.
- La modalità di consenso è implementata nella pagina.
- Il link in uscita fa riferimento allo stesso dominio della pagina corrente.
- È presente un gclid/dclid nell'URL (solo tag Google Ads e Floodlight)
Il modello deve consentire all'utente di configurare vorresti abilitare questa impostazione. Il seguente codice modello viene utilizzato per impostare url_passthrough su true:
gtagSet('url_passthrough', true);
Oscura i dati pubblicitari
Quando il criterio ad_storage
viene negato, non vengono impostati nuovi cookie per la pubblicità
scopi. Inoltre, i cookie di terze parti precedentemente impostati su google.com e
doubleclick.net non verrà utilizzato. I dati inviati a Google includeranno comunque
URL completo della pagina, incluse eventuali informazioni sui clic sugli annunci nei parametri URL.
Per oscurare ulteriormente i dati pubblicitari quando ad_storage
viene negato, imposta
ads_data_redaction
su true.
Quando il valore ads_data_redaction
è true e il valore ad_storage
è negato, il clic sull'annuncio
gli identificatori inviati nelle richieste di rete dai tag Google Ads e Floodlight
oscurati.
gtagSet('ads_data_redaction', true);
ID sviluppatore
Se sei un fornitore di CMP con un ID sviluppatore rilasciato da Google, utilizza quanto segue: per impostarlo il prima possibile nel modello.
Ti serve un ID sviluppatore solo quando la tua implementazione verrà utilizzata in più siti web di società o persone giuridiche non correlate. Se l'implementazione verrà utilizzata da un sito o da un'entità, non richiedere un ID sviluppatore.
gtagSet('developer_id.<your_developer_id>', true);
Fornisci la documentazione per gli utenti
Gli utenti utilizzeranno il modello di consenso per configurare un tag che raccolga gli utenti consenso. Fornisci agli utenti la documentazione che spiega meglio quanto segue pratiche:
- Come configurare i valori predefiniti per il consenso nella tabella Impostazioni.
- Come configurare valori predefiniti per il 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 modello a tutti gli utenti di Tag Manager, caricalo nel Galleria modelli della community.