Articoli su: Integrazioni
Questo articolo è disponibile anche in:

Google Consent Mode in un custom pixel di Shopify (Google Tag Manager)

Panoramica


Alcuni store caricano un container di Google Tag Manager (GTM) da un Shopify custom pixel (Settings > Customer events) invece di, o oltre a, caricarlo dallo storefront. Questo articolo spiega come applicare Google Consent Mode Advanced ai tag che quel container attiva.


Con GTM si scrive pochissimo codice. Due righe all'inizio del pixel passano il consenso del visitatore al tag Pandectes CMP nel tuo container, e il tag fa il resto.


Se non usi GTM e carichi Google Analytics 4 o Google Ads direttamente con gtag.js, usa invece Google Consent Mode in un custom pixel di Shopify (gtag.js). Usa l'uno o l'altro approccio per una stessa proprietà Google, mai entrambi.


Prima di iniziare


  • Il tag CMP di Pandectes deve essere nel tuo container. Aggiungilo dalla Template Gallery di GTM, attivalo su Consent Initialization - All Pages e imposta il consenso di cui ogni tag ha bisogno. I passaggi sono descritti in Integrazione con Google Tag Manager (GTM) - Template ufficiale Pandectes.
  • Configura prima la parte dello storefront. Il pixel copre solo ciò che viene eseguito al suo interno. I tag Google presenti sullo storefront vanno configurati come descritto in Come configurare Google Tag Manager con Pandectes.
  • Controlla il tuo piano. Google Consent Mode e il tag CMP di Pandectes funzionano con il piano Plus e superiori.


Perché il pixel richiede una configurazione del consenso dedicata


Un custom pixel di Shopify viene eseguito in un iframe sandbox con il proprio window e il proprio dataLayer. È separato dalla pagina dello storefront, e il consenso impostato in uno è invisibile all'altro.


Quindi un container caricato nel pixel non può vedere il consenso che lo storefront ha già. Le due righe qui sotto glielo passano. Tutto ciò che descrive questo articolo si applica solo all'interno del pixel.


Le due righe


Inseriscile all'inizio del custom pixel, prima dello snippet GTM e prima di qualsiasi altra cosa:


window.pandectesPixelInit = init;
window.pandectesSubscribe = api.customerPrivacy.subscribe;


Questa è tutta la configurazione del consenso. Il tag CMP di Pandectes nel tuo container le legge, applica lo stato di consenso predefinito corretto per il visitatore e lo aggiorna ogni volta che il visitatore cambia la sua scelta nel banner. Non devi scrivere comandi default o update né tenere un elenco di regioni: il tag ricava la policy dalle impostazioni del tuo banner.


Due regole di posizionamento:


  • Le righe vengono prima. Il tag le legge all'avvio del container. Se lo snippet GTM viene eseguito prima, non c'è nulla da leggere.
  • Le righe vanno nello stesso pixel del container. Ogni custom pixel è un sandbox a sé. Impostarle in un pixel non serve a nulla per un container caricato in un altro pixel.


Modalità Advanced e permesso del pixel


Questa configurazione ti dà la Google Consent Mode Advanced: il container si carica a ogni visualizzazione di pagina, i suoi tag inviano ping senza cookie finché il consenso è negato, e passano alla misurazione completa una volta concesso il consenso.


Per questo il pixel deve poter essere eseguito prima del consenso. Nel Shopify Admin vai su Settings > Customer events, apri il tuo custom pixel e, in Customer privacy, imposta Permission su Not required. Se lo imposti su Required, Shopify trattiene il pixel finché il visitatore non accetta: il container non si carica mai e non vengono inviati ping senza cookie.


Se preferisci Basic mode (niente si carica finché non viene dato il consenso), imposta Permission su Required, seleziona le categorie che ti servono e lascia che Shopify trattenga il pixel.


Il codice del pixel


  1. Nel Shopify Admin vai su Settings > Customer events e clicca su Add custom pixel.
  2. Dai un nome al pixel e incolla il codice qui sotto.
  3. Sostituisci GTM-XXXXXXX con l'ID del tuo container.
  4. Aggiungi in fondo le tue iscrizioni agli eventi.
  5. Imposta il permesso come descritto sopra, clicca su Save, poi su Connect.


/* Pandectes consent handover.
* Keep these two lines at the very top, above the GTM snippet.
* The Pandectes CMP tag in your container reads them. */
window.pandectesPixelInit = init;
window.pandectesSubscribe = api.customerPrivacy.subscribe;

/* START_MODIFY_FOR_YOUR_STORE */
const GTM_ID = "GTM-XXXXXXX"; // your container ID
/* END_MODIFY_FOR_YOUR_STORE */

/* Load the GTM container inside the pixel sandbox.
* This dataLayer is not shared with the storefront or other pixels. */
window.dataLayer = window.dataLayer || [];

(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_ID);

/* YOUR EVENT SUBSCRIPTIONS GO HERE, IN THIS SAME PIXEL.
*
* The code above sets consent and loads the container. On its own it
* pushes nothing to the dataLayer.
*
* The example below is sample code only, adapted from Shopify's GTM
* tutorial. Adapt the events and fields to your own GTM triggers.
* Shopify's original also pushes email, phone and address. Those are
* left out on purpose: putting personal data in the dataLayer is a
* privacy decision you need to make for your own store. */

// analytics.subscribe("checkout_completed", (event) => {
// window.dataLayer.push({
// event: "checkout_completed",
// timestamp: event.timestamp,
// id: event.id,
// token: event.data?.checkout?.token,
// url: event.context.document.location.href,
// client_id: event.clientId,
// orderId: event.data?.checkout?.order?.id,
// currency: event.data?.checkout?.currencyCode,
// subtotal: event.data?.checkout?.subtotalPrice?.amount,
// shipping: event.data?.checkout?.shippingLine?.price?.amount,
// value: event.data?.checkout?.totalPrice?.amount,
// tax: event.data?.checkout?.totalTax?.amount,
// });
// });


Ogni evento che invii richiede un trigger Custom Event corrispondente in GTM con lo stesso nome esatto della chiave event (checkout_completed nell'esempio).


Pandectes fornisce solo il livello del consenso. Le due righe impostano lo stato del consenso e nient'altro. Quali eventi invii, quali dati trasportano, come sono configurati i tuoi tag e trigger GTM e se il reporting di Google Analytics o Google Ads è accurato sono di tua responsabilità. Pandectes non supporta né verifica il tracciamento costruito sopra questo codice.


Ogni pixel che carica un container deve avere le due righe


Non puoi mettere le due righe in un custom pixel e caricare il container in un altro. Ogni pixel è un sandbox separato. Un container caricato in un pixel senza le due righe non ha alcuno stato di consenso, e i suoi tag si attivano con i valori predefiniti di Google senza alcun avviso.


Lo stesso vale per le iscrizioni agli eventi: devono trovarsi nello stesso pixel, sotto lo snippet GTM.


Verifica che funzioni


Tag Assistant e GTM Preview non vedono il pixel


Né Google Tag Assistant né la modalità Preview di GTM si collegano a un container che gira nel sandbox del pixel. Ispezionano solo la pagina dello storefront, quindi non riportano nulla (o solo i tag dello storefront) anche quando il pixel funziona correttamente. È un comportamento previsto e non è un errore.


Controlla il dataLayer nel frame del pixel


  1. Apri Chrome DevTools e vai alla scheda Console.
  2. Nella barra degli strumenti della console apri il menu a tendina dei frame (di solito mostra top) e seleziona il frame sandbox del pixel (il cui nome inizia con web-pixel). Shopify crea un frame per ogni custom pixel, quindi scegli quello giusto se ne hai più di uno.
  3. Esegui i controlli qui sotto.


Nel frame top, dataLayer è il dataLayer dello storefront, che non dice nulla sul pixel.


  • Le due righe sono impostate? window.pandectesPixelInit e window.pandectesSubscribe dovrebbero essere entrambi definiti.
  • Il consenso arriva prima dei tag? In dataLayer, le voci del consenso devono comparire prima che si attivino i tuoi tag.
  • Il pixel si carica prima del consenso? Deve farlo, per la modalità Advanced. Se il container compare solo dopo che il visitatore ha accettato, il permesso del pixel è impostato su Required e sei in modalità Basic.
  • Gli eventi arrivano? Effettua un ordine di prova e verifica che l'evento compaia in dataLayer con il nome che si aspetta il tuo trigger GTM.


Errori comuni


Errore

Cosa succede

Le due righe sono posizionate dopo lo snippet GTM

Il tag non ha nulla da leggere all'avvio del container. I tag si attivano con i valori predefiniti di Google.

Le due righe sono in un pixel e il container in un altro

Sandbox separati. Il container non ha alcuno stato di consenso.

Il tag CMP di Pandectes non è nel container

Le righe sono impostate ma nulla le legge. Nessuna modalità di consenso in GTM.

Pixel Permission impostato su Required

Shopify trattiene il pixel fino al consenso, quindi il container non si carica mai prima. Questa è la modalità Basic, non Advanced.

Test con Tag Assistant o GTM Preview

Non vedono il sandbox del pixel e non riportano nulla, anche quando tutto funziona.

Leggere dataLayer nel frame top

È il dataLayer dello storefront, non quello del pixel.

Nessun trigger GTM Custom Event per un evento inviato

L'evento arriva al dataLayer, ma nessun tag si attiva.

Incollare l'evento di esempio di Shopify senza modifiche

Nomi di eventi e campi che non corrispondono ai tuoi trigger, e dati personali nel dataLayer.

La stessa proprietà caricata da questo pixel e da un pixel gtag.js

Hit duplicati e due stati di consenso in competizione.


Impostazioni che questo articolo non copre


Impostazioni come url_passthrough, ads_data_redaction, allow_enhanced_conversions e restricted_data_processing si configurano in GTM (sul tag CMP di Pandectes o sui tuoi tag), non nel pixel.


Pandectes non può consigliarti su queste impostazioni. I valori giusti dipendono dai tuoi account Google Ads e Analytics, dal modello di attribuzione su cui fai affidamento e dalla posizione legale della tua attività. Discutine con chi gestisce la tua configurazione Google o, se c'è una questione di privacy, con il tuo consulente legale.

Aggiornato il: 30/10/2026

È stato utile questo articolo?

Condividi il tuo feedback

Annulla

Grazie!