Il livello dati è un oggetto utilizzato da Google Tag Manager e gtag.js per trasmettere informazioni ai tag. Gli eventi o le variabili possono essere trasmessi tramite il livello dati e gli attivatori possono essere configurati in base ai valori delle variabili.
Ad esempio, se attivi un tag di remarketing quando il valore di purchase_total è maggiore di 100 $o in base a eventi specifici, ad esempio quando viene fatto clic su un pulsante, il livello dati può essere configurato in modo da rendere questi dati disponibili per i tag. L'oggetto del livello dati è strutturato come JSON. Ad esempio:
{
event: "checkout_button",
gtm: {
uniqueEventId: 2,
start: 1639524976560,
scrollThreshold: 90,
scrollUnits: "percent",
scrollDirection: "vertical",
triggers: "1_27"
},
value: "120"
}
I tag Google sono progettati per fare riferimento alle informazioni aggiunte al livello dati in modo organizzato e prevedibile, anziché analizzando variabili, informazioni sulle transazioni, categorie di pagine e altri indicatori presenti nella pagina. Un'implementazione del livello dati con variabili e valori associati contribuirà a garantire che i dati pertinenti siano disponibili quando i tag ne hanno bisogno.
Installazione
Per le installazioni di pagine web di Tag Manager, devi creare un livello dati. Il seguente esempio di codice mostra dove viene stabilito il livello dati, prima del caricamento di Tag Manager.
<script>
window.dataLayer = window.dataLayer || [];
</script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->
Nelle implementazioni standard di gtag.js in cui il tag è stato copiato dal prodotto e aggiunto a una pagina web, viene fornito il codice per stabilire il livello dati. Nelle implementazioni personalizzate del tag Google, aggiungi il codice del livello dati all'inizio dello script, come mostrato nel seguente esempio di codice:
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments)};
gtag('js', new Date());
gtag('config', 'TAG_ID');
</script>
Come vengono elaborate le informazioni del livello dati
Quando viene caricato un contenitore, Tag Manager inizia a elaborare tutti i messaggi push del livello dati in coda. Tag Manager elabora i messaggi in base all'ordine di ricevimento: ogni messaggio viene elaborato uno alla volta. Se il messaggio è un evento, tutti i tag le cui condizioni di attivazione sono state soddisfatte verranno attivati prima che Tag Manager passi al messaggio successivo.
Se viene effettuata una chiamata gtag() o dataLayer.push() tramite il codice su una pagina, in un modello personalizzato o in un tag HTML personalizzato, il messaggio associato viene messo in coda ed elaborato dopo che tutti gli altri messaggi in attesa sono stati valutati. Ciò significa che non è garantita la disponibilità di valori del livello dati aggiornati per l'evento successivo.
In questi casi, devi aggiungere il nome di un evento a un messaggio quando viene
inviato al livello dati, poi ascoltare tale nome con un attivatore di evento
personalizzato.
Utilizzare un livello dati con i gestori di eventi
L'oggetto dataLayer utilizza un comando event per avviare l'invio degli eventi.
Il tag Google e Tag Manager utilizzano una variabile di livello dati speciale denominata event, che viene utilizzata dai listener di eventi JavaScript per attivare i tag quando un utente interagisce con gli elementi del sito web. Ad esempio, potresti voler attivare un tag di monitoraggio delle conversioni quando un utente fa clic su un pulsante di conferma dell'acquisto. Gli eventi possono essere chiamati ogni volta che un utente interagisce con elementi del sito web come link, pulsanti, scorrimenti e così via.
Questa funzionalità viene implementata chiamando dataLayer.push() quando si verifica un evento. La sintassi per l'invio di un evento con dataLayer.push() è la seguente:
dataLayer.push({'event': 'event_name'});
Dove event_name è una stringa che descrive l'evento, ad esempio 'login',
purchase, o search.
Utilizza dataLayer.push() per inviare i dati degli eventi quando si verifica un'azione che vuoi misurare. Ad esempio, per inviare un evento quando un utente fa clic su un pulsante, modifica il gestore onclick del pulsante per chiamare dataLayer.push():
<button onclick="dataLayer.push({'event': 'login'});">Button 1</button>
Puoi eseguire il push delle variabili del livello dati nel livello dati in modo dinamico per acquisire informazioni come i valori inseriti o selezionati in un modulo, i metadati associati a un video riprodotto dal visitatore, il colore di un prodotto (ad es. un'auto) personalizzato dal visitatore, gli URL di destinazione dei link su cui è stato fatto clic e così via.
Come per gli eventi, questa funzionalità viene implementata chiamando l'API push() per aggiungere o sostituire le variabili del livello dati nel livello dati. La sintassi di base per l'impostazione delle variabili del livello dati dinamico è la seguente:
dataLayer.push({'variable_name': 'variable_value'});
Dove 'variable_name' è una stringa che indica il nome della variabile del livello dati
da impostare e 'variable_value' è una stringa che indica il valore della variabile del livello dati
da impostare o sostituire.
Ad esempio, per impostare una variabile del livello dati con una preferenza di colore quando un visitatore interagisce con uno strumento di personalizzazione del prodotto, potresti eseguire il push della seguente variabile del livello dati dinamico:
dataLayer.push({'color': 'red'});
Un push, più variabili
Puoi eseguire il push di più variabili ed eventi contemporaneamente:
dataLayer.push({
'color': 'red',
'conversionValue': 50,
'event': 'customize'
});
Mantenere le variabili del livello dati
Per mantenere le variabili del livello dati tra le pagine web, chiama dataLayer.push() dopo che il livello dati è stato creato al caricamento di ogni pagina ed esegui il push delle variabili nel livello dati. Se vuoi che queste variabili del livello dati siano disponibili per Tag Manager quando viene caricato il contenitore, aggiungi una chiamata dataLayer.push() sopra il codice del contenitore Tag Manager, come mostrato di seguito.
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'event': 'Pageview',
'pagePath': 'https://www.googleanalytics.dev/pancakes',
'pageTitle': 'Pancake Event Signup',
'visitorType': 'customer'
});
</script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->
Ogni variabile dichiarata all'interno dell'oggetto del livello dati verrà mantenuta solo finché il visitatore rimane sulla pagina corrente. Le variabili del livello dati pertinenti tra le pagine (ad es. visitorType) devono essere dichiarate nel livello dati su ogni pagina del tuo sito web. Sebbene non sia necessario inserire lo stesso set di variabili nel livello dati su ogni pagina, devi utilizzare una convenzione di denominazione coerente. In altre parole, se imposti la categoria di pagina nella pagina di registrazione utilizzando una variabile denominata pageCategory, anche le pagine di prodotto e di acquisto devono utilizzare la variabile pageCategory.
Risoluzione dei problemi
Ecco alcuni suggerimenti per la risoluzione dei problemi del livello dati:
Non sovrascrivere la variabile window.dataLayer: quando utilizzi direttamente il livello dati (ad es. dataLayer = [{'item': 'value'}])), sovrascriverà tutti i valori
esistenti in dataLayer. Le installazioni di Tag Manager devono creare il livello dati il più in alto possibile nel codice sorgente, sopra lo snippet del contenitore, utilizzando window.dataLayer = window.dataLayer || [];. Dopo aver dichiarato the
dataLayer, utilizza dataLayer.push({'item': 'value'}) per aggiungere
altri valori e, se questi valori devono essere disponibili per Tag Manager
al caricamento della pagina, anche questa chiamata dataLayer.push() deve essere sopra il codice del contenitore Tag
Manager.
Il nome dell'oggetto dataLayer è sensibile alle maiuscole: se provi a eseguire il push di una variabile
o di un evento senza la distinzione tra maiuscole e minuscole corretta, il push non funzionerà.
datalayer.push({'pageTitle': 'Home'}); // Bad (datalayer in lowercase)
dataLayer.push({'pageTitle': 'Home'}); // Good (dataLayer in camel case)
dataLayer.push deve essere chiamato con oggetti JavaScript validi. Tutti i nomi delle variabili del livello dati devono essere racchiusi tra virgolette.
dataLayer.push({new-variable: 'value'}); // Bad - no quote marks
dataLayer.push({'new-variable': 'value'}); // Good - proper quote marks
Mantieni i nomi delle variabili coerenti tra le pagine: se utilizzi nomi di variabili diversi per lo stesso concetto su pagine diverse, i tag non potranno essere attivati in modo coerente in tutte le posizioni desiderate.
Non valido:
// Homepage:
dataLayer.push({'visitorType': 'low-value'});
// Checkout Page:
dataLayer.push({'visitor_type': 'high-value'});
Valido:
// Homepage:
dataLayer.push({'visitorType': 'low-value'});
// Checkout Page:
dataLayer.push({'visitorType': 'high-value'});
Rinominare il livello dati
Il nome predefinito dell'oggetto del livello dati avviato dal tag Google o da Tag Manager è dataLayer. Se preferisci utilizzare un nome diverso per il livello dati, puoi farlo modificando il valore del parametro del livello dati nello snippet del tag Google o del contenitore Tag Manager con il nome che preferisci.
gtag.js
Aggiungi un parametro di ricerca denominato "l" all'URL per impostare il nuovo nome del livello dati, ad es. l=myNewName. Aggiorna tutte le istanze di dataLayer nello snippet del tag Google con il nuovo nome.
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID&l=myNewName"></script>
<script>
window.myNewName = window.myNewName || [];
function gtag(){myNewName.push(arguments);}
gtag('js', new Date());
gtag('config', 'TAG_ID');
</script>
Tag Manager
Sostituisci il valore parametro del livello dati (evidenziato di seguito) nello snippet contenitore con il nome che preferisci.
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','myNewName','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->
Una volta rinominato, tutti i riferimenti al livello dati (ovvero quando dichiari il livello dati sopra lo snippet o quando esegui il push di eventi o variabili del livello dati dinamico nel livello dati con il comando .push()) devono essere modificati in modo da riflettere il nome del livello dati personalizzato:
<script>
myNewName = window.dataLayer || [];
myNewName.push({'variable_name': 'variable_value'});
</script>
Metodi del livello dati personalizzati
Se esegui il push di una funzione nel livello dati, verrà richiamata con questo set su un modello di dati astratto. Questo modello di dati astratto può ottenere e impostare i valori in un archivio di coppie chiave-valore e fornisce anche un modo per reimpostare il livello dati.
imposta
La funzione set sul modello di dati astratto consente di impostare i valori da recuperare tramite get.
window.dataLayer.push(function() {
this.set('time', new Date());
});
get
La funzione get sul modello di dati astratto consente di recuperare i valori impostati.
window.dataLayer.push(function() {
const existingTime = this.get('time');
if (existingTime !== null) {
// Change behavior based on whether or not this value exists...
} else {
// ...
}
})
reimposta
La funzione reset sul modello di dati astratto consente di reimpostare i dati nel livello dati. Questa funzione è più utile con una pagina che rimarrà aperta e la cui dimensione del livello dati continua a crescere nel tempo. Per reimpostare il livello dati, utilizza il seguente codice:
window.dataLayer.push(function() {
this.reset();
})