Livello dati

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. gli attivatori possono essere impostati in base ai valori delle variabili.

Ad esempio, se attivi un account di remarketing quando il valore di purchase_total è maggiore di 100 $o in base al tag eventi specifici, ad esempio quando un pulsante viene selezionato, il livello dati può essere configurato per rendere i dati disponibili per i tag. L'oggetto livello dati strutturati 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 studiati per fare riferimento alle informazioni aggiunte al in modo organizzato e prevedibile, anziché mediante l'analisi variabili, informazioni sulle transazioni, categorie di pagine e altri indicatori sparsi in tutta la pagina. Un'implementazione del livello dati completata con variabili e per garantire che i dati pertinenti siano disponibili quando ne servono i tag.

Installazione

Per le installazioni di pagine web di Tag Manager, devi creare un livello dati. La il codice evidenziato di seguito mostra dove viene stabilito il livello dati prima del tag Gestore caricato.

<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 dall'interno dal prodotto e aggiunto a una pagina web, il codice per stabilire il livello dati è fornito. Nelle implementazioni personalizzate del tag Google, aggiungi il codice del livello dati all'inizio dello script, come mostrato nell'esempio evidenziato di seguito:

<!-- 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 un contenitore viene caricato, Tag Manager inizia a elaborare tutti i dati in coda di messaggi push a livello. Tag Manager elabora i messaggi in base all'ordine di ricezione base: ogni messaggio viene elaborato uno alla volta, nell'ordine in cui è stato ricevuto. Se il messaggio è un evento, tutti i tag con condizioni di attivazione che sono state soddisfatte si attiverà prima che Tag Manager passi al messaggio successivo.

Se una chiamata gtag() o dataLayer.push() viene effettuata tramite il codice in una pagina, in un o in un tag HTML personalizzato, il messaggio associato viene messo in coda elaborati dopo la valutazione di tutti gli altri messaggi in attesa. Ciò significa che qualsiasi non è garantito che i valori del livello dati aggiornati siano disponibili per il prossimo evento. Per gestire questi casi, devi aggiungere il nome di un evento a un messaggio così com'è. automaticamente al livello dati e poi ascoltare il nome dell'evento con una Trigger di evento.

Utilizzare un livello dati con gestori di eventi

L'oggetto dataLayer utilizza un comando event per avviare l'invio di eventi.

Il tag Google e Tag Manager utilizzano una variabile di livello dati speciale denominata event utilizzato dai listener di eventi JavaScript per attivare i tag quando un utente interagisce con gli elementi del sito web. Ad esempio, potresti voler attivare una conversione tag di monitoraggio quando un utente fa clic su un pulsante di conferma di un acquisto. Gli eventi possono essere viene chiamato ogni volta che un utente interagisce con elementi del sito web come link, pulsanti, scorrimenti ecc.

Questa funzionalità si ottiene chiamando dataLayer.push() quando un evento . La sintassi per inviare 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 dati sugli 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 inviare dinamicamente le variabili del livello dati al livello dati per acquisire informazioni come i valori inseriti o selezionati in un modulo, metadati associati con un video in riproduzione da parte del visitatore, il colore di un prodotto (ad es. un'auto) personalizzati dal visitatore, gli URL di destinazione dei link su cui è stato fatto clic e così via.

Come per gli eventi, questa funzionalità si ottiene chiamando l'API push() per aggiungere o sostituire le variabili del livello dati nel livello dati. La sintassi di base l'impostazione delle variabili di livello dati dinamico è il seguente:

dataLayer.push({'variable_name': 'variable_value'});

Dove 'variable_name' è una stringa che indica il nome del livello dati e 'variable_value' è una stringa che indica il valore di la variabile del livello dati da impostare o sostituire.

Ad esempio, per impostare una variabile di livello dati con una preferenza di colore quando un visitatore interagisce con uno strumento di personalizzazione del prodotto, potresti inserire le seguenti variabile di livello dati:

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'
});

Mantieni variabili del livello dati

Per rendere persistenti le variabili del livello dati tra le pagine web, richiama dataLayer.push() successivamente viene creata un'istanza del livello dati a ogni caricamento pagina ed eseguire il push delle variabili al livello dati. Se vuoi che queste variabili del livello dati siano disponibili per Tag Quando il container viene caricato, aggiungi una chiamata dataLayer.push() al di sopra di Il codice del contenitore di 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 livello dati viene mantenuta solo finché il visitatore rimane nella pagina corrente. Variabili del livello dati pertinenti tra pagine (ad es. visitorType) devono essere dichiarate nel livello dati di ogni pagina del tuo sito web. Sebbene non sia necessario inserire lo stesso insieme di variabili il livello dati su ogni pagina, devi utilizzare una convenzione di denominazione coerente. Nella In altre parole: se imposti la categoria di pagina nella pagina di registrazione utilizzando una variabile denominato pageCategory, le pagine relative ai prodotti e agli acquisti devono utilizzare il pageCategory.

Risoluzione dei problemi

Di seguito sono riportati alcuni suggerimenti per la risoluzione dei problemi relativi al livello dati:

Non sovrascrivere la variabile window.dataLayer: quando utilizzi i dati direttamente (ad es. dataLayer = [{'item': 'value'}]), sovrascriverà qualsiasi valori esistenti in dataLayer. Le installazioni di Tag Manager devono creare un'istanza il livello dati più in alto possibile nel codice sorgente, sopra il container utilizzando window.dataLayer = window.dataLayer || [];. Dopo aver dichiarato dataLayer, utilizza dataLayer.push({'item': 'value'}) per aggiungere altri valori e, se tali valori devono essere disponibili per Tag Manager al caricamento della pagina, La chiamata dataLayer.push() deve essere posizionata sopra il codice del contenitore di Tag Manager come beh.

Il nome dell'oggetto dataLayer è sensibile alle maiuscole: se provi a eseguire il push di una variabile o un evento senza le maiuscole corrette, la spinta 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 livelli dati i nomi delle variabili 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 in tutte le pagine: se utilizzi variabili diverse. lo stesso concetto su pagine diverse, i tag non saranno in grado si attivino sempre in tutte le località desiderate.

Scadente:

// Homepage:
dataLayer.push({'visitorType': 'low-value'});

// Checkout Page:
dataLayer.push({'visitor_type': 'high-value'});

Buono:

// Homepage:
dataLayer.push({'visitorType': 'low-value'});

// Checkout Page:
dataLayer.push({'visitorType': 'high-value'});

Rinominare il livello dati

Il nome predefinito dell'oggetto livello dati avviato dal tag Google oppure Tag Manager è dataLayer. Se preferisci utilizzare un nome diverso per il tuo livello dati, puoi farlo modificando il valore parametro del livello dati nel tuo Tag Google o snippet contenitore di Tag Manager con il nome che preferisci.

gtag.js

Aggiungi all'URL un parametro di query denominato "l" per impostare il nuovo nome del livello dati. ad es. l=myNewName. Aggiorna tutte le istanze di dataLayer nel 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) nel contenitore snippet con il nome di tua scelta.

<!-- 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 rinominati, tutti i riferimenti al livello dati (ad esempio durante la dichiarazione dei dati livello sopra lo snippet o quando vengono trasferiti eventi o variabili di livello dati dinamiche al livello dati con il comando .push()) devono essere regolati in modo da riflettere nome 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 al livello dati, questa verrà richiamata con questo set su un un modello di dati astratto. Questo modello di dati astratto può ottenere e impostare valori su una chiave di archiviazione dei valori, oltre a fornire un modo per reimpostare il livello dati.

imposta

La funzione set sul modello di dati astratto ti 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 ti consente di recuperare i valori che sono state impostate.

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 ti consente di reimpostare i dati in livello dati. Ciò è particolarmente utile con una pagina che rimarrà aperta e i dati delle dimensioni dei livelli continua a crescere nel tempo. Per reimpostare il livello dati, utilizza il metodo codice seguente:

window.dataLayer.push(function() {
  this.reset();
})