Scopri come abbiamo migliorato le campagne di un nostro cliente modificando il Data Layer di WordPress
Di recente abbiamo iniziato a collaborare con un cliente il cui catalogo prodotti (WooCommerce) caricato sul BM non era realmente sincronizzato con gli eventi che avvenivano in piattaforma.
O meglio: dal momento che era necessario legare al consenso dell’utente il tracciamento dati, non era possibile mantenere la giusta e normale correlazione tra i prodotti del catalogo (che caricavamo tramite plugin nativo – Facebook for WooCommerce) e ogni evento registrato dal pixel Meta legato alle azioni dell’utente che si legasse agli stessi prodotti. Come mai?
La chiave era il parametro content_ids dell’evento View Content, AddToCart, InitiateCheckout e Purchase del pixel Meta. “Oh cavolo!” dirai! Di cosa stiamo parlando? Guarda l’immagine e, se conosci un minimo il pixel Meta, capirai subito. ⬇️
Questo parametro va a dare unicità al prodotto, ed è la chiave con cui quest’ultimo viene salvato sul catalogo prodotti del Business Manager di Meta.
Ogni evento correlato al prodotto che avviene sul sito e che viene registrato dal pixel quindi, se non ha il parametro content_ids con lo stesso identico valore, non attribuirà mai quei dati al prodotto salvato nel catalogo. Non vi sarà correlazione tra dati e quindi il tracciamento non funzionerà.
Abbastanza grave, che dici?
Pensa quanti eventi persi! Le campagne ne stavano risentendo tantissimo a livello macro, ma soprattutto non potevamo implementare alcune campagne fondamentali, che usano come asset imprescindibile proprio il catalogo (come la DABA o le DPA).
Ma entriamo meglio nella questione.
Contesto
Cercherò di spiegartelo il meno tecnicamente possibile, ma sarà dura!
Su che piattaforma abbiamo lavorato? Sito web in WordPress con installato Woocommerce e il plugin ufficiale Facebook for Woocommerce.
Il plugin Facebook for Woocommerce serve tendenzialmente per due ragioni: sincronizzare il catalogo prodotti di Woocommerce con il Business Manager di Meta e installare il pixel di Facebook con cui tracciare gli eventi sul sito web.
Problemi di questo plugin?
- attiva il pixel di Facebook a prescindere dal consenso espresso dall’utente. Molto male per quanto riguarda il GDPR!
- su questo ecommerce in particolare non attiva l’evento AddToCart. Molto male per il tracciamento dati.
Per noi che lavoriamo con logica data-driven sono problemi non di poco conto.
Pertanto in questi casi la prassi è:
- usare il plugin Facebook for Woocommerce SOLO per sincronizzare il catalogo, andando con del codice custom php a inibire il caricamento del pixel e degli eventi ecommerce correlati;
- installare un plugin di compilazione Data Layer (GTM4WP) per recuperare i dati tramite Google Tag Manager e mandarli al pixel di Facebook sempre tramite GTM, che consente di raccogliere il consenso espresso dall’utente e attivare o meno gli eventi in base a quest’ultimo (oltre a permettere di creare manualmente tutti gli eventi, compreso l’AddToCart).
E fin qui il tutto, se si sa dove mettere le mani, è abbastanza semplice.
Il problema che abbiamo però riscontrato, e che non interessa solo noi, è che il content_ids mandato dal plugin Facebook for Woocommerce al Business Manager nel momento del sync era formattato con dei dati che il plugin GTM4WP non inseriva per intero nel Data Layer.
Ti spiego meglio.
Il content_ids era formattato come segue: item_id (es: nome-prodotto) + product_id (es: 2345), per un risultato simile: “nome-prodotto_2345“.
Non inibendo il funzionamento del pixel Meta gestito dal plugin il problema non si sarebbe generato, ma dal momento che volevamo sia essere compliant lato GDPR sia avere l’AddToCart, ci è toccato sporcarci le mani.
Con il plugin GTM4WP si può decidere se inserire nel Data Layer o l’item_id o il product_id, ma entrambi i dati non vengono inseriti dal plugin. Pertanto da GTM non è possibile recuperarli entrambi, metterli in delle variabili, unirli e poi mandarli su all’interno del parametro content_ids.
Ed ecco che ci siamo persi la corrispondenza tra eventi e prodotti a catalogo su Facebook.
Ora scendiamo nel tecnico
Cosa abbiamo fatto e come abbiamo risolto il problema?
Ingredienti: confronto tra colleghe, ragionamenti di logica GTM, php, javascript e… chatGPT!
Partiamo col dire che tutto quello che ti ho descritto sopra è emerso grazie al confronto con Enrica, responsabile web marketing che ha scovato il problema e l’enorme conseguenza che un solo dato diverso avrebbe avuto sull’intero andamento delle campagne, sulla mancata attribuzione, sulla perdita dei dati e sull’impossibilità di ottimizzarle.
Senza un’analisi fatta insieme e un po’ di sano brainstorming su come poter risolvere il problema, sarebbe indubbiamente stato tutto più lungo.
E adesso, passo direttamente alla fine per spiegarti il processo a ritroso: chatGPT è stato un grande alleato nel velocizzare il lavoro, ma sarebbe stato impossibile arrivare al risultato senza una conoscenza tecnica di come funziona Woocommerce, GTM e di come si scrive il codice. Perché se all’Intelligenza Artificiale di chatGPT gli poni solo il semplice quesito “risolvimi questo problema con un codice che faccia questo e quest’altro da mettere nel functions.php” lui ti spara una soluzione. Ma… ovviamente non funziona subito.
Quindi cosa ho deciso di fare?
Mi sono fatta affiancare dal nuovo amichevole chatbot di quartiere: chatGPT. A lui ho lasciato il più lungo lavoro di compilazione del codice sulla base degli input che arrivavano dai miei ragionamenti logici. ChatGPT a scrivere il codice ci mette pochi secondi, quindi io ho risparmiato moltissimo tempo, ma per compilarlo in maniera che sia utile e corretta serve sapere cosa dirgli: avere bene in testa la logica di quello che si vuole ottenere e il funzionamento degli strumenti che si vogliono usare. Altrimenti non si cava un ragno dal buco.
Questa premessa perché toccare con mano l’utilità di chatGPT legata però ad una reale competenza tecnica, annulla – a mio parere – il terrore dilagante che queste AI ci andranno a rubare il lavoro. Questa esperienza mi ha confermato al contrario che, se utilizzate in modo intelligente, le AI possono aprire a scenari molto interessanti e stimolanti!
Detto questo vengo alla parte tecnica.
- Dal momento che:
- il plugin ufficiale “Facebook for Woocommerce” compila il content_ids formattato così: “sku prodotto_id prodotto”;
- per legare l’attivazione del pixel al consenso legato ai cookie espresso da parte dell’utente è necessario portare tutti gli eventi del pixel su GTM;
- con il plugin GTM4WP si può recuperare o solo l’id o solo lo sku del prodotto;
- il Data Layer generato da GTM4WP in nessun modo caricava l’id del prodotto in nessun evento…
- Lo step due è consistito nel riuscire a mandare nel concreto le info custom nel Data Layer, ma non solo. Dovevamo mandarle su prima che scattassero gli eventi EEC di GA4, che sono anche i trigger che utilizziamo per i tag custom degli eventi del pixel Meta. Perché mandarle su prima? Perché se le volevamo utilizzare nei tag legati agli eventi GA4, dovevamo averle già collezionate, altrimenti se venivano caricate dopo, scattava prima il pixel, ma ritornava vuoto di informazioni. Al contempo andava inibito il caricamento degli eventi da parte del plugin “Facebook for Woocommerce”, altrimenti ce li trovavamo doppi. Anche questo risolto grazie ad un codice messo nel functions.php.
- Dopo ore e ore di test e di individuazione degli hook giusti e degli script giusti, siamo riuscite a mandare su esattamente ciò che volevamo e dove lo volevamo. Quindi lo step 3 è avvenuto tutto all’interno di GTM. Abbiamo recuperato per i diversi step del processo di acquisto i dati custom mandati su inserendoli in variabili specifiche per il ViewContent, per l’AddToCart, per l’InitiateCheckout e per il Purchase.
E quindi com’è andata?
Grande soddisfazione e dati congruenti.
Che dire? L’ultimo step del processo è stato il debug. La prova del 9.
E tutto ha funzionato come una corda di violino.
Ti lascio immaginare la soddisfazione. Sia per il lavoro di squadra nell’individuare e comprendere bene il problema e le sue conseguenze, sia per l’individuazione di una logica di risoluzione, sia per l’apporto favoloso di chatGPT in termini di risparmio di tempo, sia perché alla fine abbiamo risolto un problema al nostro cliente e abbiamo potuto far partire le campagne adv su Meta e migliorare le sue vendite!
Non male eh?
Vuoi una copia del codice e delle istruzioni GTM?
Lasciami la mail e te lo mando molto volentieri. 😊