Google Tag Manager dataLayer ve E-Ticaret Etkinlikleri
Google Analytics E-Ticaret Raporları ve Etkinlik Kurulumları başlıklı yazıda Google Analytics e-ticaret etkinliklerinin nasıl kurulması gerektiğinden ve ilgili parametrelerin hangi raporlar ile ilişkili olduğundan bahsetmiştim.
Bu yazıda ise e-ticaret etkinliklerini Google Tag Manager vasıtasıyla kullanabileceğimizden ve gtag karşılıklarından bahsedeceğim.
Öncelikle dataLayer konusunu tekrar hatırlayalım.
dataLayer
dataLayer, müşteri deneyimi ile ilgili verilerin web veya diğer dijital kaynaklarda JavaScript Nesnesi (JavaScript Object) olarak tutulmasını, dijital analiz ve raporlama sunucularına iletilmesini sağlayan, pek çok organizasyon tarafından da (Google, Adobe, Yandex, vb.) bir methodu ifade etmektedir. dataLayer bu nesnenin sıklıkla kullanılan bir adı olsa da farklı tanımlar altında da aynı işlem gerçekleştirilebilmektedir. Örneğin, Customer Experience Digital Data Layer 1.01 içerisinde yapı digitalData olarak adlandırılmaktadır.
Google Tag Manager ve Global Site Etiketi kodları içerisindeki tanımlama dataLayer olduğu için ben de örneklerde bu şekilde ilerleyeceğim. Bu tanımı değiştirmek istediğiniz ya da web sitenizde veya uygulamanızda var olan bir JavaScript nesnesi ile bu kondu ilişkilendirmek istediğinizde kurulum kodlarındaki ilgili alanları güncellemeniz gerekir2.
// Google Tag Manager (gtm)
(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-TRGXFL');
// Global Site Tag (gtag)
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-59809868-2');
Bu konu ile ilgili olarak daha önce yayınladığım Data Layer (dataLayer) Nedir? Nasıl Kullanılır? başlıklı yazıya göz atabilirsiniz.
Google Tag Manager ve dataLayer
dataLayer'ın bir JavaScript nesnesi olduğundan bahsettik. Dolayısıyla, internet tarayıcısının console alanını kullanarak bu nesnenin içeriğini dataLayer
veya window.dataLayer
yazarak görüntüleyebiliriz. Bu nesne bir global değişken olarak tanımlanmaktadır. JavaScript global nesneleri internet tarayıcısı tarafında window
Node.js global
olarak ifade edilir3. Biz elbette internet tarayıcısı ile açıklamalarımıza devam edeceğiz. Ancak burada bir not eklemekte fayda var. Bu veri katmanı tanımı (dataLayer) Google Tag Manager kapsayıcı snippet'in üzerinde tanımlanmalıdır. Aksi durumda, Google Tag Manager tarafından da yürütülen veri katmanı içeriğine ekleme yapılmamış, içerik değiştirilmiş olur.
Bir deneme yapalım ve console alanına dataLayer
yazalım. Alacağımız dönüş 0: Object { "gtm.start": 1602931942224, event: "gtm.js" }
olacaktır. Şimdi aşağıdaki kod parçacağını Google Tag Manager kapsayıcı snippet'i öncesinde konumlandıralım ve sayfayı yeniledikten sonra yine console üzerinden dataLayer
içeriğini döndürelim.
dataLayer = [{
'pageCategory': 'signup',
'visitorType': 'high-value'
}];
Görüldüğü üzere dataLayer
içerisinde yeni değişkenlerimiz yer almakta.
0: Object { pageCategory: "signup", visitorType: "high-value" }
1: Object { "gtm.start": 1602932141963, event: "gtm.js" }
Şimdi, bu değişkenleri Google Tag Manager kapsayıcı snippet'i sonrasında konumlandırıp tekrar console üzerinden içeriği görüntüleyelim. Alacağımız dönüş ilkinden farklı olacaktır.
0: Object { pageCategory: "signup", visitorType: "high-value" }
Görüldüğü üzere artık gtm.start
tanımlı değil. Yeni tanımlarımız önceki tanımların kaybına neden oldu. Peki, bu durumun bir çözümü yok mu? Var elbette. dataLayer
bir JavaScript nesnesi olduğuna göre bu nesneye yine JavaScript ile müdahale edebiliriz. push()
metotu da kullanabileceğimiz seçeneklerden biri. Bu metot sayesinde bu nesneyi değiştirmek yerine nesne içerisine eklemeler yapabiliriz.
dataLayer.push({'degiskenAdi': 'degiskenDegeri'});
Yukarıdaki işlemi Google Tag Manager kapsayıcı snippet'i öncesinde kullanmak istediğimizde öncesinde dataLayer
objesi oluşturulmadığı için Uncaught ReferenceError: dataLayer is not defined
hatasını alırız. Değişken tanımı Google Tag Manager kapsayıcı snippet'i içerisinde bulunduğu için push()
metotunu snippet sonrasında hatasız bir şekilde kullanabiliriz. Peki, daha genel bir çözümümüz yok mu?
Var elbette, değişkeni kontrol edip eğer tanımlı değilse tanımlayabiliriz.
window.dataLayer = window.dataLayer || [];
dataLayer.push({'degiskenAdi': 'degiskenDegeri'});
// veya
window.dataLayer.push({'degiskenAdi': 'degiskenDegeri'});
Yukarıdaki kodu Google Tag Manager kapsayıcı snippet'i öncesinde veya sonrasında kullanabiliriz. Artık bir hiyerarşi takip etmek durumunda değiliz.
0: Object { degiskenAdi: "degiskenDegeri" }
1: Object { "gtm.start": 1602932828874, event: "gtm.js" }
Bu bilgiyi bir kenara not edin. Çünkü, e-ticaret etkinlikleri çerçevesinde verinin kontrolü için sıklıkla console üzerinden kontroller gerçekleştireceğiz. Elbette console dışında da kontroller yapmamız gerekiyor. Örneğin, gerçekleştirilen bir işlemin eğer Google Tag Manager tarafında karşılığı yoksa gözardı edilecektir. Dolayısıyla, parametrelerimizi de belirli kurallar çerçevesinde kullanmamız gerekir.
Bu amaçla kullanabileceğimiz diğer eklentiler ise, Chrome internet tarayıcısı için Google tarafından geliştirilen Google Tag Assistant ve Adswerve tarafından sunulan Adswerve - dataLayer Inspector+4, Firefox için dataslayer'dir5.
Ön bilgilendirmeler de tamamlandığına göre, ecommerce
etkinlikleri üzerinden dataLayer işlemlerine geçebiliriz.
dataLayer ve E-ticaret (eCommerce) Etkinlikleri
Aşağıdaki işlemleri hem Enhanced Ecommerce (UA), hem de Ecommerce (GA4) için dataLayer.push()
ile gerçekleştireceğiz2. Elbette bu etkinliklerin işleme alınabilmesi için Google Analytics kodumuzun da Google Tag Manager üzerinden tanımlanmış olması, geliştirilmiş E-ticaret özelliğinin (true) ve veri katmanı seçiminin aktifleştirilmesi gerekmektedir.
Enable Enhanced Ecommerce Features: true
Use Data Layer: true
Artık e-ticaret etkinliklerimizi kullanmaya başlayabiliriz.
Product/Item List Views/ImpressionsListeleme/Görüntüleme
Ürünlerin kategori ve benzeri alanlarda listelenmesini ifade eder. Bu sayede ürünlerin listelenme performanslarını (görülme, tıklanma, sepete eklenme, satın alınma) değerlendirebilirsiniz.
dataLayer.push({
'ecommerce': {
'currencyCode': 'EUR',
'impressions': [
{
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'list': 'Search Results',
'position': 1
},
{
'name': 'Donut Friday Scented T-Shirt',
'id': '67890',
'price': '33.75',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black',
'list': 'Search Results',
'position': 2
}]
}
});
İlgili tanım içerisinde id
veya name
key'lerinden en az birinin tanımlı olması gerekmektedir. Bu kod gtm.dom
ile ilişkilidir. Dolayısıyla, Google Tag Manager kapsayıcı snippet öncesinde oluşturulması gerekir.
dataLayer.push({
'event': 'gtm.dom',
'ecommerce': {
...
}
})
Sıralamayı hatırlamak gerekirse, gtm.js
(Sayfa Yüklendi) sayfa sekansını, gtm.dom
(DOM hazır) DOM sekansını, gtm.load
(Pencere Yüklendi) ise kapsayıcı sekansını ifade eder. Elbette kimi durumlarda beklenenle olan farklılık taşıyabiliyor. Impression içeriğini kapsayıcıdan sonra oluşturmamız gerekebilir. Bu durumda ne yapabiliriz?
Çözüm, ilgili nesne içeriğini farklı bir event
ile ilişkilendirmek. Örneğin, 'event': 'impression'
ile ilgili içeriği impression
event'i ile ilişkilendirebilir ve bu event
tetiklendiğinde nesne içeriğinin gönderilmesini sağlayabiliriz. Eğer oluşturduğunuz etkinlik tetikleyici (trigger) olarak tanımlı değilse ilgili nesne içeriği değerlendirilmeyecektir.
dataLayer.push({
'event': 'impression',
'ecommerce': {
...
}
})
Bu mantığı diğer gtm.dom
event'leri için de kullanabilirsiniz. Örneğin, bir popup içerisinde ürün göstermek durumunda olduğunuzda ya da carousel ile ürünleri dinamik olarak çağırdığınızda event olarak tetikleyerek ürün performanslarını ölçebilirsiniz. Normal şartlarda gtm.dom
içeriğini gerçek zamanlı etkinlik olarak görüntüleyemez, Conversions > Ecommerce > Product List Performance raporu ile takip edebiliriz. Ancak, etkinlik olarak tetiklersenzi bu etkinlik gerçek zamanlı olarak da takip edilebilir hale gelecektir.
Şimdi, bu işlemi Ecommerce (GA4) ile yineleyelim.
dataLayer.push({
'event': 'view_item_list',
'ecommerce': {
'items': [
{
'item_name': 'Triblend Android T-Shirt',
'item_id': '12345',
'price': '15.25',
'item_brand': 'Google',
'item_category': 'Apparel',
'item_category_2': 'Mens',
'item_category_3': 'Shirts',
'item_category_4': 'Tshirts',
'item_variant': 'Gray',
'item_list_name': 'Search Results',
'item_list_id': 'SR123',
'index': 1,
'quantity': '1'
},
{
'item_name': 'Donut Friday Scented T-Shirt',
'item_id': '67890',
'price': '33.75',
'item_brand': 'Google',
'item_category': 'Apparel',
'item_category_2': 'Mens',
'item_category_3': 'Shirts',
'item_category_4': 'Tshirts',
'item_variant': 'Black',
'item_list_name': 'Search Results',
'item_list_id': 'SR123',
'index': 2,
'quantity': '1'
}]
}
});
Google Analytics GA4 mülkünde (eski adı ile App+Web) bildiğiniz üzere yapılandırma ve etkinlikler için ayrı etiket tanımları yapılmakta. Yukarıdaki nesne içeriği view_item_list
etkinlik adına sahip ve gtm.dom
ile ilişkili olarak yürütülmekte. Gerekli durumlarda doğrudan bu etkinlik tanımını işleme alabilmekteyiz. Unutmadan, Bu GA4 nesne içerikleri standart Google Analytics mülkü tarafından işleme alınmaz.
Ürün Tıklama
Bir ürünün tıklanması durumunda işleme alınır. productClick
event tanımına sahiptir, bir tıklama etkinliği ile işleme alınır.
dataLayer.push({
'event': 'productClick',
'ecommerce': {
'click': {
'actionField': {'list': 'Search Results'},
'products': [{
'name': 'Donut Friday Scented T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black',
'position': 2
}]
}
}
});
- Etkinlik Kategorisi (Event Category)
- Ecommerce
- Etkinlik İşlemi (Event Action)
- Product Click
İlgili işleme ait GA4 nesne içeriği ise şu şekildedir.
dataLayer.push({
'event': 'select_item',
'ecommerce': {
'items': [{
'item_name': 'Donut Friday Scented T-Shirt',
'item_id': '12345',
'item_brand': 'Google',
'item_category': 'Apparel',
'item_category_2': 'Mens',
'item_category_3': 'Shirts',
'item_category_4': 'Tshirts',
'item_variant': 'Black',
'item_list_name': 'Search Results',
'item_list_id': 'SR123',
'index': 2,
'quantity': '1',
'price': '15.25'
}]
}
});
Measure views/impressions of product/item details
Detay Görüntüleme
Bu nesne de yine gtm.dom
etkinliği ile işleme alınacaktır. Dolayısıyla, Listeleme/Görüntüleme başlığı altındaki hususlar bu nesne içeriğinin raporlara aktarılması için de geçerlidir.
dataLayer.push({
'ecommerce': {
'detail': {
'actionField': {'list': 'Apparel Gallery'},
'products': [{
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray'
}]
}
}
});
Şimdi aynı işlemi GA4 ile nasıl gerçekleştirebileceğimize bakalım.
dataLayer.push({
'event': 'view_item',
'ecommerce': {
'items': [{
'item_name': 'Donut Friday Scented T-Shirt',
'item_id': '67890',
'price': '33.75',
'item_brand': 'Google',
'item_category': 'Apparel',
'item_category_2': 'Mens',
'item_category_3': 'Shirts',
'item_category_4': 'Tshirts',
'item_variant': 'Black',
'item_list_name': 'Search Results',
'item_list_id': 'SR123',
'index': 1,
'quantity': '1'
}]
}
});
Additions or Removals from a Shopping Cart
Sepet İşlemleri
Sepet işlemleri de ürün tıklamasında olduğu gibi kullanıcı tarafında gerçekleştirilen bir etkinlik. Sepete ekleme işlemi için tetiklenmesi gereken etkinliğimiz addToCart
, sepetten silmek için ise removeFromCart
. Nesne içeriğimiz ise şu şekilde:
dataLayer.push({
'event': 'addToCart',
'ecommerce': {
'currencyCode': 'EUR',
'add': {
'products': [{
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'quantity': 1
}]
}
}
});
- Etkinlik Kategorisi (Event Category)
- Ecommerce
- Etkinlik İşlemi (Event Action)
- Add to Cart
dataLayer.push({
'event': 'removeFromCart',
'ecommerce': {
'remove': {
'products': [{
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'quantity': 1
}]
}
}
});
- Etkinlik Kategorisi (Event Category)
- Ecommerce
- Etkinlik İşlemi (Event Action)
- Remove from Cart
Şimdi bu nesnelerin GA4 için nasıl düzenlendiğine bakalım.
dataLayer.push({
'event': 'add_to_cart',
'ecommerce': {
'items': [{
'item_name': 'Donut Friday Scented T-Shirt',
'item_id': '67890',
'price': '33.75',
'item_brand': 'Google',
'item_category': 'Apparel',
'item_category_2': 'Mens',
'item_category_3': 'Shirts',
'item_category_4': 'Tshirts',
'item_variant': 'Black',
'item_list_name': 'Search Results',
'item_list_id': 'SR123',
'index': 1,
'quantity': '2'
}]
}
});
dataLayer.push({
'event': 'remove_from_cart',
'ecommerce': {
'items': [{
'item_name': 'Donut Friday Scented T-Shirt',
'item_id': '67890',
'price': '33.75',
'item_brand': 'Google',
'item_category': 'Apparel',
'item_variant': 'Black',
'item_list_name': 'Search Results',
'item_list_id': 'SR123',
'index': 1,
'quantity': '1'
}]
}
});
Kod parçacıklarında da görültüğü üzere GA4 için kullanılan etkinlikler add_to_cart
ve remove_from_cart
.
Promosyon Görüntüleme
Ürünlerin görüntülenmesi ile promosyonların görüntülenmesi farklı key tanımları üzerinden gerçekleştirilmekte. Promosyon performansını ise Marketing raporları aracılığı ile gerçekleştirmekteyiz. Elbette bu işlem de gtm.dom
ile yürütülmekte.
dataLayer.push({
'ecommerce': {
'promoView': {
'promotions': [
{
'id': 'JUNE_PROMO13',
'name': 'June Sale',
'creative': 'banner1',
'position': 'slot1'
},
{
'id': 'FREE_SHIP13',
'name': 'Free Shipping Promo',
'creative': 'skyscraper1',
'position': 'slot2'
}]
}
}
});
Unutmadan, promoClick
ile promoView
farklı şekilde değerlendirilmekte. Bu nedenle, ikisi bir arada tetiklenmemeli. Birazdan ayrıca promosyon tıklamasından bahsedeceğim. Ancak, daha öncesinde promosyon görüntüleme/listeleme için GA4 tarafındaki nesne tanımına bir bakalım.
dataLayer.push({
'event': 'view_promotion',
'ecommerce': {
'items': [{
'item_name': 'Donut Friday Scented T-Shirt',
'item_id': '67890',
'price': '33.75',
'item_brand': 'Google',
'item_category': 'Apparel',
'item_category_2': 'Mens',
'item_category_3': 'Shirts',
'item_category_4': 'Tshirts',
'item_variant': 'Black',
'promotion_id': 'abc123',
'promotion_name': 'summer_promo',
'creative_name': 'instore_suummer',
'creative_slot': '1',
'location_id': 'hero_banner',
'index': 1,
'quantity': '1'
}]
}
});
Görüldüğü üzere ilgili nesne GA4 tarafında view_promotion
etkinlik tanımı ile kullanılmakta.
Promosyon Tıklama
Bir promosyonun (görsel, metin, vb.) tıklanması etkinliğini takip etmek ve promosyon performansını ölçmek amacıyla kullanılır. İlgili performans metrikleri Marketing alt raporlarında yer alır. Bir dönüşüm işlemi içerisinde kullanıldığında ilgili promosyonun satış üzerine etkilerini de değerlendirmek mümkün hale gelmektedir.
dataLayer.push({
'event': 'promotionClick',
'ecommerce': {
'promoClick': {
'promotions': [
{
'id': 'abc123',
'name': 'summer_promo',
'creative': 'instore_suummer',
'position': 1
}]
}
}
});
- Etkinlik Kategorisi (Event Category)
- Ecommerce
- Etkinlik İşlemi (Event Action)
- Promotion Click
Bu işlemin GA4 ile nasıl ele alınacağına bakalım.
dataLayer.push({
'event': 'select_promotion',
'ecommerce': {
'items': [{
'item_name': 'Donut Friday Scented T-Shirt',
'item_id': '67890',
'price': '33.75',
'item_brand': 'Google',
'item_category': 'Apparel',
'item_category_2': 'Mens',
'item_category_3': 'Shirts',
'item_category_4': 'Tshirts',
'item_variant': 'Black',
'promotion_id': 'abc123',
'promotion_name': 'summer_promo',
'creative_name': 'instore_suummer',
'creative_slot': '1',
'location_id': 'hero_banner',
'index': 1,
'quantity': '1'
}]
}
});
Checkout
Ödeme Adımları
checkout
etkinliği ödeme sürecinin ilk adımını ifade etmekte. actionField
içerisinde belirtilen adımlar ile E-ticaret özelliğini aktifleştirdiğimiz Görünüm bölümünde yer alan Checkout Labeling bölümünü birlikte ele alabilirsiniz.
dataLayer.push({
'event': 'checkout',
'ecommerce': {
'checkout': {
'actionField': {'step': 1, 'option': 'Visa'},
'products': [{
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'quantity': 1
}]
}
}
});
- Etkinlik Kategorisi (Event Category)
- Ecommerce
- Etkinlik İşlemi (Event Action)
- Checkout
Ödeme işlem adımlarını ise şu şekilde takip edebilmekteyiz.
dataLayer.push({
'event': 'checkoutOption',
'ecommerce': {
'checkout_option': {
'actionField': {'step': 2, 'option': 'Standard Shipping'}
}
}
});
- Etkinlik Kategorisi (Event Category)
- Ecommerce
- Etkinlik İşlemi (Event Action)
- Checkout Option
Bu işlemin GA4 tarafındaki karşılığına bakalım.
dataLayer.push({
'event': 'begin_checkout',
'ecommerce': {
'items': [{
'item_name': 'Donut Friday Scented T-Shirt',
'item_id': '67890',
'price': '33.75',
'item_brand': 'Google',
'item_category': 'Apparel',
'item_category_2': 'Mens',
'item_category_3': 'Shirts',
'item_category_4': 'Tshirts',
'item_variant': 'Black',
'item_list_name': 'Search Results',
'item_list_id': 'SR123',
'index': 1,
'quantity': '1'
}]
}
});
Ödeme süreci için GA4 tarafında adımlara dair bir tanım yer almamakta. Ancak, elbette özel etkinlikler ile birlikte bu adımları hedef olarak oluşturabilir ve funnel vasıtasıyla adımları takip edebiliriz.
PurchaseSatın Alma İşlemi
Ödeme işlemi tamamlandığında tetiklenen etkinliğimiz purchase
. Esasında e-ticaret raporlarının temel metrikleri de bu etkinlik temelinde şekillenmekte. Bu nesne de yine gtm.dom
ile ilişkili olarak değerlendirilmekte.
dataLayer.push({
'ecommerce': {
'purchase': {
'actionField': {
'id': 'T12345',
'affiliation': 'Online Store',
'revenue': '35.43',
'tax':'4.90',
'shipping': '5.99',
'coupon': 'SUMMER_SALE'
},
'products': [{
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'quantity': 1,
'coupon': ''
},
{
'name': 'Donut Friday Scented T-Shirt',
'id': '67890',
'price': '33.75',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black',
'quantity': 1
}]
}
}
});
Eğer sayfa yüklenme işleminden sonra nesne içeriğimiz oluşuyorsa yine gtm.dom
ile ilişkili olarak anlattığım etkinlik kullanımını değerlendirebilirsiniz.
Şimdi purchase
işleminin GA4 tarafında nasıl ele alındığına bakalım.
dataLayer.push({
'event': 'purchase',
'ecommerce': {
'purchase': {
'transaction_id': 'T12345',
'affiliation': 'Online Store',
'value': '35.43',
'tax': '4.90',
'shipping': '5.99',
'currency': 'EUR',
'coupon': 'SUMMER_SALE',
'items': [{
'item_name': 'Triblend Android T-Shirt',
'item_id': '12345',
'item_price': '15.25',
'item_brand': 'Google',
'item_category': 'Apparel',
'item_variant': 'Gray',
'quantity': 1,
'item_coupon': ''
}, {
'item_name': 'Donut Friday Scented T-Shirt',
'item_id': '67890',
'item_price': '33.75',
'item_brand': 'Google',
'item_category': 'Apparel',
'item_variant': 'Black',
'quantity': 1
}]
}
}
});
Refund
İade İşlemi
E-ticaret raporları ile ilişkili olan son etkinliğimiz refund
. İade işlemi bir ya da birkaç ürünün ve hatta sadece bir ürünün adedinin iadesi olabileceği gibi ilgili satın almanın tamamını da kapsayabilir.
dataLayer.push({
'ecommerce': {
'refund': {
'actionField': {'id': 'T12345'}
}
}
});
Yukarıdaki kod parçacığı purchase
ile gönderilen T12345
id'li işlem kaydının tamamının iade edilidiğini belirtmektedir. İlgili satın alma işlemi içerisinden ürün veya adet iadesi için kod parçacığımızı şu şekilde güncelleyebiliriz.
dataLayer.push({
'ecommerce': {
'refund': {
'actionField': {'id': 'T12345'},
'products': [
{'id': 'P4567', 'quantity': 1},
{'id': 'P8901','quantity': 2}
]
}
}
});
Şimdi bu işlemin GA4 tarafında nasıl yapıldığına bakalım.
dataLayer.push({
'event': 'refund',
'ecommerce': {
'transaction_id': 'T12345'
}
});
Evet, e-ticaret etkinlikleri ile ilgili detayları tamamladık. Kimi durumlarda dataLayer kullanamıyor ve işlemleri GTM üzerinden gerçekleştirmek durumunda olabiliyoruz. Bu tür durumlarda yine yukarıdaki nesne yapılarını değiştirmeksizin Custom JavaScript Variable aracılığı ile özel değişkenler (diğer bir ifade ile makrolar) ile işlemler gerçekleştirebilmekteyiz.
function() {
var ecommerceData = {
'ecommerce': {
'purchase': {
'actionField': {'id': 'T12345'},
'products': [
...
],
...
}
};
return ecommerceData;
}
GA4 tarafında ise fonksiyonumuz şu şekilde:
function() {
var ecommerceProductData = [
{
'item_name': 'Donut Friday Scented T-Shirt',
'item_id': '67890',
},
...
];
return ecommerceProductData;
}
Bu kod parçacığını gaEcommerceData
adı ile tanımladığımızı varsayalım. Bu durumda şeklinde return eden değere ulaşabiliriz6 7. İlgili nesne
gtm.dom
ile ilişkilendirilebilir.
Yukarıdaki işlemlerle ilgili denemeler yapmak isterseniz, klasör içerisinde bulunan JSON dosyasını içe aktararak ilerleyebilirsiniz. İlgili GTM klasörünü düzenli olarak güncellemekteyim, eklenen örnek işlemler için ara ara kontrol etmenizi öneririm.
- W3.org (2013). Customer Experience Digital Data Layer 1.0. (pdf) ↩
- Renaming the Data Layer. Google Tag Manager ↩ ↩
- Javascript.info. (2020). Global object ↩
- Adswerve - dataLayer Inspector+. Chrome Extention ↩
- dataslayer. Firefox Extension ↩
- Measuring Product Clicks. Google Tag Manager ↩
- Measure product/item list clicks. Google Tag Manager ↩