La guida riluttante alle migrazioni Shopify

Atto V: L'apparenza del completamento

La cipolla (ovvero, il tracking stack)

Il legale voleva il Consent Mode v2, e lo disse in una riunione, e aveva ragione. Il marketing voleva i pixel attivi entro il lancio della campagna, e lo disse nella stessa riunione, e aveva ragione anche lui. L’engineering voleva una spec prima di toccare qualunque cosa, che era la posizione più ragionevole della stanza e quella di cui era più facile farti desistere, perché la campagna aveva una data e la spec no. Così il setup del consenso venne costruito come vengono costruiti la maggior parte dei setup del consenso: per comitato, a pezzi, con ciascuno a risolvere la fetta di problema che riusciva a vedere dal punto in cui sedeva. Il banner andò online. I pixel si attivarono. La dashboard si riempì di numeri. Tutti tornarono al loro vero lavoro.

Nessuno, in nessun momento, si fece carico della domanda se il log del consenso avesse valore probatorio—se, qualora un’autorità di controllo o un cliente avessero mai chiesto al brand di ricostruire esattamente a cosa una determinata persona avesse acconsentito, il sistema fosse in grado di rispondere. Quella domanda non apparteneva a nessuno, perché viveva nella giuntura tra tre team, e le giunture non compaiono sulle dashboard. La cosa sembrava completa vista da fuori. Avrebbe continuato a sembrare completa fino al giorno in cui avrebbe contato, e quel giorno la lacuna non sarebbe stata tanto una sorpresa quanto una cosa che era stata lì per tutto il tempo, paziente, in attesa che qualcuno la guardasse.

Una cipolla tagliata a metà con anelli concentrici ben definiti visibili in sezione, ma con un piccolo incavo scuro al centro, dove dovrebbe esserci il cuore.
Sembrava intera, vista da fuori. Quasi sempre sembra così.

Quella lacuna è invisibile, finché non lo è più.


Pensa al tuo tracking stack come a una cipolla. Lo intendiamo in modo più letterale di quanto questa metafora venga di solito usata, quindi abbi pazienza con l’ortaggio per un momento, perché fa un lavoro vero. Lo strato esterno è la parte che tutti vedono e quella che tutti scambiano per il tutto: un banner dei cookie, un paio di pixel, magari un’integrazione con Google Analytics che qualcuno ha cablato e screenshottato per uno status update. Sbuccialo e sotto c’è un secondo strato, che governa come i segnali di consenso viaggiano davvero verso i posti in cui dovrebbero andare. Sbuccia anche quello e al cuore c’è un terzo strato, che governa quanti dati sopravvivono integri al viaggio. Tre strati. Ognuno avvolge quello sottostante. Ognuno è costruito con strumenti diversi, posseduto da persone diverse, e—questa è la parte che rovina le migrazioni—ognuno decide silenziosamente cosa sia anche solo possibile nello strato che ha dentro.

La maggior parte dei brand si ferma alla buccia. Costruiscono lo strato esterno, verificano che il banner compaia e che i numeri si muovano, e concludono che la cipolla è intera. Poi passano l’anno successivo a chiedersi perché l’interno non regge—perché i match rate sono fiacchi, perché i dati di conversione sembrano veri come direzione ma non del tutto affidabili, perché un audit della cosa fa emergere problemi in stanze che nessuno ricorda di aver costruito.

L’errore non è quasi mai quale strumento abbiano scelto a un dato strato. Gli strumenti per lo più vanno bene; i vendor per lo più sono competenti; la documentazione per lo più esiste. L’errore è partire dallo strato sbagliato del tutto—di solito il cuore, a volte quello di mezzo—e trattare il consenso, l’anello più esterno e più fondante, come una casella che ha spuntato qualcun altro. Non puoi arricchire fino a uscire da uno strato di consenso rotto. Puoi solo arricchire fino ad addentrarti più a fondo nel problema, e ci arriveremo, perché è il modo singolarmente più costoso in cui un tracking stack va storto.

Quindi sbucceremo la cipolla nell’unico ordine che funziona: dall’esterno verso l’interno. Prima la buccia.


Lo strato più esterno è il consenso—ciò a cui l’utente ha effettivamente acconsentito a condividere—e su Shopify la sua fondazione è la Customer Privacy API. Tutto ciò che sta a valle deve dialogare con questa. È il buttafuori sulla porta; ogni segnale che raggiunge un pixel o un server è uno che questo strato ha fatto passare o ha respinto.

L’API gestisce quattro campi di consenso: analytics, marketing, preferences e sale_of_data. Un cliente accetta o rifiuta il tuo banner, quei campi vengono impostati, e gli strumenti a valle ben educati dovrebbero rispettarli. Per moltissimi store Shopify questo è davvero sufficiente—mercato unico, obblighi di consenso ordinari, un setup di pixel standard. L’API nativa fa il suo lavoro e puoi smettere di leggere questa sezione.

La lacuna si apre quando entra in scena il Google Consent Mode v2. Il CMv2 vuole sei segnali di consenso separati, e la mappatura dai quattro campi di Shopify non è uno-a-uno. Il singolo campo marketing di Shopify deve ramificarsi in tre distinti parametri del CMv2—ad_storage, ads_user_data e ads_personalization. Una consent management platform che ci si appoggia sopra può fare quel rimappaggio. Ma ecco il trucco, ed è il tipo di trucco che è strutturale anziché risolvibile-impegnandosi-di-più: quando la CMP rimappa quei segnali granulari nel modello di Shopify, il log di consenso di Shopify registra il campo Shopify a monte, non i tre segnali CMv2 su cui l’utente è stato effettivamente interpellato. Il log ricorda la traduzione, non l’originale.

Il che significa che il giorno in cui un cliente presenta una data subject access request, o un’autorità di controllo ti chiede di dimostrare con precisione a cosa qualcuno ha acconsentito, il log di Shopify non può darti quella granularità. Non l’ha mai contenuta. Ha contenuto il riassunto a quattro campi, fedelmente, per tutto il tempo—e il riassunto a quattro campi non è la prova che stavi tacitamente dando per scontato di avere. I brand che operano su mercati GDPR, o usano il CMv2, o portano un qualunque obbligo di consenso granulare, vogliono una CMP dedicata—iubenda, Cookiebot, OneTrust—che si appoggi sulla Customer Privacy API e tenga il proprio audit trail. La CMP non sostituisce l’API. La alimenta, e ricorda ciò che l’API dimentica.

Questo strato ha un problema di ownership cucito dentro, ed è esattamente quello della riunione all’inizio di questo capitolo. Il legale chiede il CMv2. Il marketing chiede i pixel. L’engineering chiede la spec. Il setup viene assemblato per comitato, la domanda probatoria cade nella giuntura tra loro, e nessuno è proprietario del log fino al giorno in cui il log è l’unica cosa che chiunque voglia.


Sbuccia la buccia e raggiungi il delivery: come gli eventi soggetti a consenso viaggiano davvero dal banner alle tue destinazioni di tracking. Due strade. Shopify Pixels, oppure un tag container come Google Tag Manager.

Shopify Pixels gestiscono nativamente il gating del consenso. Un utente rifiuta, il pixel non si attiva, e non hai dovuto cablare nulla perché fosse così. Bassa manutenzione, corretto per default, e la scelta giusta per qualunque team senza una pratica GTM matura. GTM ti compra flessibilità—trigger condizionali, script di terze parti, strumenti senza integrazione Pixel nativa—e il prezzo di quella flessibilità è un nuovo posto in cui il segnale di consenso può rompersi in silenzio. Un trigger GTM che non legge correttamente dalla Customer Privacy API attiverà i suoi eventi a prescindere da ciò a cui l’utente ha acconsentito. Gli eventi atterrano nelle tue piattaforme di destinazione. Le dashboard si riempiono. Tutto sembra funzionare. E sei fuori compliance, e in superficie non c’è nulla che te lo dica.

Lo abbiamo visto accadere, migrazione dopo migrazione, e indossa quasi sempre lo stesso costume. Un container GTM arriva così com’è dalla piattaforma precedente—portato in blocco, perché lì funzionava e portarlo era una cosa in meno da ricostruire. Il team conosceva GTM a menadito. Lo gestiva da anni. Quello che non aveva gestito era il modello di consenso di Shopify, che la vecchia piattaforma non aveva, così il container arrivò fluente nella grammatica del vecchio mondo e muto in quella del nuovo. Si attivava correttamente. Solo che non era affatto cablato alla Customer Privacy API, e nulla—non le dashboard, non il Pixel Helper, non un singolo sintomo visibile—fece emergere la lacuna finché qualcuno non fece l’audit del flusso di consenso direttamente e la trovò.

(Marketing Lead a cui hanno detto che il tracking è a posto: questo è il paragrafo per te. Qualcuno di competente ti ha detto che il tracking è a posto, e non mentiva—dal punto in cui stava, lo è. Gli eventi arrivano. La domanda è se arrivano con il gating, e a quella domanda non si può rispondere dalla dashboard che hai guardato. Si può rispondere solo facendo percorrere a qualcuno il percorso del consenso da un capo all’altro, con un banner vero e scelte vere. Se quel percorso non è stato fatto, il tracking non è a posto. Si sta attivando, che è una cosa diversa e più pericolosa.)

Per la maggior parte dei brand mid-market la forma giusta è Shopify Pixels per gli eventi standard e GTM solo per le eccezioni che ne hanno davvero bisogno. Il GTM-only si guadagna il pane quando hai una container governance matura e una pila di tag custom di terze parti senza supporto nativo. Ricorrere a GTM perché è lo strumento che già conosci non è, di per sé, una ragione sufficiente—non a fronte della superficie di compliance che ti consegna in silenzio.


Sbuccia lo strato di delivery e raggiungi il cuore, e al cuore c’è un vincolo che sorprende ogni team di engineering esattamente una volta, perché è strutturale e non c’è modo di discuterci. I pixel di Shopify girano dentro un iframe in sandbox senza accesso a window.document.

Fermati a rifletterci, perché le conseguenze sono più grandi di quanto sembrino a prima vista. I pixel di Shopify non possono fare scraping del DOM. Non possono leggere l’email di un cliente, il suo numero di telefono, il suo customer ID, o qualunque altra cosa non venga loro consegnata esplicitamente tramite la Web Pixels API di Shopify. L’intera categoria delle librerie di pixel tradizionali—quelle che danno per scontato di poter entrare nella pagina e prelevare ciò di cui hanno bisogno—semplicemente non funziona qui dentro. E se vuoi dati first-party come email o customer ID attaccati ai tuoi eventi, cosa che quasi sempre vuoi, perché è ciò che produce match rate significativi su Meta e Google e ovunque altro, quei dati non possono venire da un pixel del browser. La sandbox lo vieta. Devono venire da tutt’altra parte.

Tutt’altra parte è lo strato di arricchimento. Strumenti come Elevar lavorano a entrambi i capi del viaggio: aumentano gli eventi client-side con attributi aggiuntivi prima che lascino il browser, e attivano hit server-side parallele dritte alle tue destinazioni, scavalcando del tutto le restrizioni del browser. I due insieme producono match rate più alti di ciascuno da solo—contesto del browser e affidabilità server-side, cuciti in un unico segnale. Non tutti i brand hanno bisogno di questo strato. Se il tuo mix di canali a pagamento è modesto e i tuoi match rate sono già accettabili, l’arricchimento ti compra un’altra relazione con un vendor e un altro data processing agreement in cambio di un’accuratezza di cui non eri a corto. Sappi quale problema stai risolvendo prima di ricorrervi.

Ma ecco la cosa che la cipolla sta davvero cercando di insegnarti, la lezione per cui l’intero ortaggio esiste, ed è abbastanza controintuitiva che i brand fanno l’opposto per riflesso. L’arricchimento aggiunto prima che gli strati sottostanti siano corretti non sistema nulla. Peggiora le cose. Un evento splendidamente arricchito che si attiva contro un setup di consenso rotto non è progresso—è una hit server-side che ora raggiunge le tue piattaforme di destinazione a prescindere da ciò a cui il browser dell’utente ha acconsentito, il che significa che hai preso una lacuna di compliance che era almeno confinata al browser e le hai dato un bypass server-side attorno allo stesso stato di consenso che avrebbe dovuto contenerla. Hai reso il problema sia più grande sia più difficile da auditare, e l’hai fatto sentendoti produttivo. Ecco perché l’ordine non è una preferenza stilistica. Parti dal cuore e puoi versare sforzo nello strato più interno per un trimestre e ritrovarti più lontano dalla compliance di quando hai cominciato.


Che è la disciplina a cui si riduce l’intera cipolla, ed è meno una decisione di tooling che una sequenza. Consenso, poi delivery, poi arricchimento se ti serve—verificati da un capo all’altro a ogni anello prima di intaccare il successivo. Ogni strato vincola ciò che è possibile in quello che ha dentro, quindi un team che parte dal mezzo sta costruendo su una fondazione che non ha mai ispezionato, e le lacune finiscono nelle stanze in cui nessuno ha pensato di guardare.

Ci sono quattro domande, e vanno in ordine, e vengono tutte prima di qualunque decisione sugli strumenti. Cosa richiede davvero il nostro setup di consenso—quali giurisdizioni, quali segnali, ci serve il CMv2, e dove viene custodito il log di consenso autorevole? Qual è il nostro percorso di delivery degli eventi, e legge genuinamente dalla Customer Privacy API, oppure non ha controllato nessuno? Abbiamo una lacuna di qualità del segnale abbastanza reale da giustificare l’arricchimento, oppure i nostri match rate sono già a posto? E come testeremo ogni strato da un capo all’altro, con flussi di consenso veri e ordini veri, prima che a chiunque sia permesso di dichiarare il setup finito?

I brand che percorrono quelle domande in ordine tendono a trovare qualcosa che non si aspettavano, e vale la pena dirlo chiaramente perché ribalta il punto in cui tutti istintivamente guardano per primo. La maggior parte dei team che ci lavora come si deve scopre che il problema non era mai nello strato più interno. Non era mai il vendor di arricchimento, mai il match rate, mai la configurazione server-side a cui tutti volevano dare la colpa. Era un segnale di consenso che si rompeva in transito due strati più in fuori, in un container GTM a cui nessuno aveva pensato dalla migrazione, che attivava silenziosamente eventi senza gating nel mondo mentre le dashboard dicevano che andava tutto bene.

La cipolla sembrava intera, vista dalla buccia. Quasi sempre sembrano così. È l’intera ragione per cui questo è un capitolo e non una checklist—la superficie di un tracking stack è ingegnerizzata, per caso e per incentivo dei vendor, per sembrare finita. Shopify lo gestisce in parte, come Shopify gestisce in parte moltissime cose in questa parte del libro: ti dà una vera consent API e un vero pixel nativo e una vera estensione di test, e poi traccia una linea, e dall’altro lato di quella linea c’è tutto ciò che quegli strumenti silenziosamente non raggiungono. Sapere dove cade quella linea—strato per strato, segnale per segnale—è il lavoro. Non è affascinante. Non fa una bella demo. Ma è la differenza tra un tracking stack che hai sbucciato e uno che hai solo fotografato.

Comincia dalla buccia.