Tracciare l'ecommerce con l'ECC datalayer e Google Tag Manager

sul mio ecommerce è presente il datalayer di google (EEC) e Google tag manager. esiste un modo per non modificare il datalayer e riutilizzare quello presente per tracciare l’ecommerce con matomo? Ho provato a fare un test ma le informazioni relative agli eventi non vengono letti da Matomo

Ciao, su matomo c’è il plugin per l’ecommerce, per il resto non posso esserti molto d’aiuto poiche GTM non l’ho mai usato.

@Luigi_Grimaldi il modo c’è ed è quello di utilizzare le variabili GTM estratte da dataLayer all’interno del Tag custom HTML.

Questa ad esempio è una mia implementazione della transazione:

<script>
  for(i=0; i< {{dataLayer - transactionProducts}}.length; i++) {

    productSKU = {{dataLayer - transactionProducts}}[i].sku;
    productName = {{dataLayer - transactionProducts}}[i].name;
    productCategory = {{dataLayer - transactionProducts}}[i].category;
    price = {{dataLayer - transactionProducts}}[i].price;
    quantity = {{dataLayer - transactionProducts}}[i].quantity;
    
    _paq.push(['addEcommerceItem',productSKU, productName, productCategory, price, quantity]); 
    
    console.log("Aggiunto prodotto " + productSKU);
    
  }
  
  _paq.push(['trackEcommerceOrder',{{dataLayer - transactionId}}, {{dataLayer - transactionTotal}}, {{dataLayer - transactionTotal}} - {{dataLayer - transactionTax}} - {{dataLayer - transactionShipping}}, {{dataLayer - transactionTax}}, {{dataLayer - transactionShipping}}]);
  
  console.log("Inviata transazione " + {{dataLayer - transactionId}});
</script>

Il dataLayer è quello dell’ecommerce classico di GA (non enhanced), ma non cambia nulla nella sostanza, cambiano solo i nomi delle variabili a dataLayer.

Per quanto riguarda il codice:

  1. Il primo invio dati a Matomo è in un loop che va ad “aggiungere” i prodotti nel “carrello” di Matomo con _paq.push([‘addEcommerceItem’]), leggendoli dall’array prodotti del dataLayer
  2. Il secondo è quello che manda la transazione
  3. I console.log servono per il debug
2 Likes

Grazie mille della risposta molto esaustiva! Ho solo un dubbio inerente al trackEcommerceCartUpdate, lo gestisci con i classici Addtocart e removetocart?

No, nel caso che ti ho mostrato lo gestisci in loop direttamente nella thankyou page. Io ho fatto così in effetti perché avevo il dataLayer dell’ecommerce classico e non avevo le azioni add to cart etc.

In effetti il caso d’uso migliore dovrebbe essere quello di eseguire addEcommerceItem in corrispondenza delle azioni utente… e poi eseguire semplicemente trackEcommerceOrder nella thankyou page (senza il loop).

L’unico dubbio che ho (non testato) è che sarebbe una soluzione troppo dipendente dal client.

La documentazione dice:

On every Cart update, you must call addEcommerceItem() for each item (product) in the cart, including the items that haven’t been updated since the last cart update. Items which were in the previous cart and are not sent in later Cart updates will be deleted from the cart (in the database).

Che succede però se in una sessione utente addEcommerceItem non invia dati (per qualunque ragione, ad es. l’utente non ha campo sul cellulare in quel momento)? Quell’azione te la perdi e di conseguenza ti perdi l’informazione dei prodotti associati alla transazione.

Oppure, che succede se l’utente loggato nel suo account riempie il carrello (su cellulare) poi logga da PC in un momento successivo e chiude la transazione?

Con ogni probabilità avremmo una transazione senza prodotti.

Non ho una soluzione sicura su questo punto.