Global Site Tag (gtag.js) Etkinlik İşlemleri

Gtag.js ile etkinlik izleme ve veri akışı otomasyonu nasıl optimize edilir? Keşfedin.

Ceyhun Enki Aksan
Ceyhun Enki Aksan Girişimci, Maker

TL;DR

gtag.js, birden fazla GA/GA4 mülkünü tek snippet’te yönetmenizi sağlar. config ile mülk tanımı, groups ile gruplama, send_to ile hedefleme yapılır.

FonksiyonKullanımÖrnek
configMülk tanımıgtag('config', 'GA_ID')
groupsMülk gruplamagroups: 'access'
send_toEvent hedeflemesend_to: ['default', 'group_1']
eventEtkinlik gönderimigtag('event', 'login', {...})

Kritik: GA ve GA4 etkinlik parametreleri farklıdır. Her iki sürümü desteklemek için parametreleri birlikte kullanın.


İlerleyen süreç içerisinde Google Tag Manager (GTM) tarafında daha yapısal değişiklikler olacağını hesaba katarsak analytics.js1 ve ecommerce.js2 yapılandırmalarının doğrudan GTM’e kaydırılması benim tavsiyem olacaktır. Hala ga.js3 ve ec.js4 kullanıldığını da hesaba katarsak sürekli düzenlemeler yapmak ve geliştirme çalışmalarıyla uğraşmak yerine daha işlevsel bir yapı üzerinden ilerlemek daha uygun bir strateji olur.

öneri

Google Analytics ile ilgili destek talebinde bulunabilirsin.

Elbette süreç ifade ettiğim kadar elverişli olmayabilir. Örneğin, danışmanlığını yaptığım e-ticaret girişimlerinden birkaçı hazır e-ticaret paketlerini kullanıyorlar ve bu yapılar (özellikle yerel uygulamalar) süreci oldukça geriden takip ediyorlar. Bu nedenle sunulan yapıya uygun şekilde hareket etmek gerekiyor.

Global Site Tag (gtag.js) Etkinlik İşlemleri başlıklı bu yazıda Global Site Tag (gtag.js) etkinlik ve e-commerce kurulumlarıyla ilgili değişikliklerden, analytics.js ve ecommerce.js geçişinde takip edeceğiniz kurallardan bahsedeceğim.

dikkat

Temmuz 2023 itibariyle Universal Analytics (UA) yerini Google Analytics 4 (GA4) mülk biçimine bıraktı. Bu tarih itibariyle UA mülkleri yeni verileri işlemiyor.

Global Site Tag (gtag.js) Etkinlik İşlemleri

Global Site Etiketi (gtag.js) başlıklı yazıda Google Adwords ve Google Analytics‘in config parametresiyle tanımlanabileceğine (global snippet) değinmiştim. Detaylar için ilgili yazıya göz gezdirebilirsiniz. Global Site Tag (gtag.js) event (etkinlik) işlemlerinde de yine bu yapı çerçevesinde hareket edilmekte. Bu sayede, birden fazla site (subdomain olmak zorunda değil) ve birden fazla Google Analytics ve Adwords mülkünü tek bir satırda ve ayrı cookie tanımlamaları üzerinden tanımlamak kolaylaştırılmış durumda.

gtag('config', 'GA_TRACKING_ID', {
  'send_page_view': false
});
gtag('config', 'GA_TRACKING_ID_2');
gtag('config', 'GA_TRACKING_ID_3');

Örneğin, yukarıdaki kod belirttiğiniz Google Analytics mülkü GA_TRACKING_IDnün page_view takip etmemesini, tanımlanan diğer GA_TRACKING_ID2, GA_TRACKING_ID3 mülklerinin ise sorunsuz şekilde sayfa etkinliklerini almasını sağlayacaktır. Bu kullanım gruplama özelliğini de beraberinde getirmekte5. Google Analytics mülkünden Google Analytics 4 (GA4) mülküne geçişte te yine yapmamız gereken sadece GA4’e ait GA_TRACKING_ID değerini config ile belirtmek olacaktır.

Örneğin yukarıdaki tanımlama mülkleri default grubu altında işleyecektir. Açık bir şekilde tanımlama yapmak istersek kullanımı şu şekilde olacaktır:

gtag('config', 'GA_TRACKING_ID_1', {
  groups: 'default'
});
gtag('config', 'GA_TRACKING_ID_2', {
  groups: 'default'
});

Yukarıdaki mülkler default grubu içerisinde tanımlanmaktalar. “groups” kullanıcı tarafından atandığında ise kullanımı şu şekilde olur:

gtag('config', 'GA_TRACKING_ID_1', {
  groups: 'access'
});
gtag('config', 'GA_TRACKING_ID_2', {
  groups: 'access'
});

Belirttiğimiz mülk ID’leri access grubu altında tanımlanmıştır. Group tanımlaması event işlemlerinde istenilen verilerin belirtilen gruplara ve bu gruplar altınaki mülk ID’lerine iletilmesini sağlamaktadır.

Etkinliklerin İletilmesi

Google Analytics ilettiğimiz etkinlikleri (nesne içeriklerini) Etkinlikler raporu altında bize Kategori, İşlem, Etiket ve Değer olarak sunar. Biz de etkinlikleri bu şekilde yapılandırarak iletiriz. E-ticaret etkinlikleri ve hedef (goal) tanımları da bu mantıkla ileriler. Ancak, bazı etkinliklerin tetiklenmesi için belirli bir tetikleme işleminin (görüntüleme, tıklama, gönderme, vb.) gerçekleşmesi gerekebilir. event_name ile belirttiğimiz etkinlik adlarını bu tetikleyicilerle ilişkilendirmek için kullanırız. Bu nedenle, isimlendirme konusunda belirli bir örüntü ve amaç takip ederek ilerlemenizi öneririm.

gtag('event', 'event_name', {
  send_to: 'access',
  parameter_1: 'value_1',
  parameter_2: 'value_2',
  // ...
});

GA4 tarafında artık öntanımlı etkinliklerimiz (automatically-collected event) mevcut6.

  • language
  • page_location
  • page_referrer
  • page_title
  • screen_resolution

Bu sayede, kullanıcı tarafında sıklıkla gerçekleştirilen işlemler doğrudan Etkinlikler raporuna aktarılabilmekte. Ancak, GA4 etkinlikleri biraz farklı bir biçimde ele almakta. Detayları aşağıda ayrıca paylaşacağım.

Örneğin, bu etkinlik access grubu ile etkileşime geçecektir. send_to kullanıcı tanımlı bir grup ile belirtilmemişse etkinlikler default gruba iletilecektir. Birden fazla grupla etkileşime geçilecek etkinlik ifadelerinde kullanım şu şekilde olacaktır.

// Kod yapısı
gtag('event', 'event_name', {
  send_to: ['group_name_1', 'group_name_2', ... ],
  parameter_1: 'value_1',
  parameter_2: 'value_2',
  // ...
});

// GA4
gtag('event', 'myCustomEvent', {
  TheEventAction: "myEventAction1",
  TheEventLabel : "myEventLabel1"
});

Görüldüğü üzere, GA ve GA4 arasında etkinlikler farklı parametrelere ve kapsama sahip. Dolayısıyla, her iki sürüm için de etkinlik tanımı yapacaksanız bu iki kapsamı birlikte kullanmanız gerekmekte. Diğer durumda, sürümler arasındaki farklı etkinlikler birbirlerinin grafiklerine yansımayacaklardır.

// GA Sayfa görüntüleme işleminin ayrıca iletilmesi
gtag('config', 'GA_MEASUREMENT_ID', {
  'page_title' : 'homepage',
  'page_path': '/home'
});

// GA Sayfa görüntüleme işleminin pasif hale getirilmesi
gtag('config', 'GA_MEASUREMENT_ID', {
  send_page_view: false
});

// GA Sayfa görüntüleme işleminin etkinlik olarak iletilmesi
gtag('event', 'page_view', {
  page_title: '<Page Title>',
  page_location: '<Page Location>',
  page_path: '<Page Path>',
  send_to: '<GA_MEASUREMENT_ID>'
});

GA için etkinlik anatomisi içerisindeki parametrelerimiz:

AdEtkinlikDurum
Kategorievent_categoryGerekli
İşlemevent_actionGerekli
Etiketevent_labelKullanımı tavsiye edilir
DeğervalueOpsiyonel

GA4 için etkinlik anatomisi içerisindeki parametrelerimiz:

AdEtkinlikDurum
İşlemTheEventActionGerekli
EtiketTheEventLabelGerekli

gtag.js etkinliklerinde yine etkinlik anatomisi başlıklarına uygun olarak yapılandırma ön tanımlı kategoriler (ecommerce, engagement), etkinlikler ve parametrelerle birlikte kullanılabilmekte. Örneğin, “login” etkinliği engagement kategorisi bağlamında method etkinlik etiketiyle işleyecektir.

gtag('event', 'login');

Doğrudan etkinlik yapıları üzerinden bakacak olursak:

// GA
gtag('event', 'login', {
  event_category: 'engagement',
  event_label: 'Google'
});

// GA4
gtag('event', 'login', {
  TheEventAction: "engagement",
  TheEventLabel : "Google"
});

Düzenlenebilir (custom) yapı ise, yani önerilen parametreler tercih edilmeyecekse şu şekilde7:

// GA
gtag('event', 'event_name', {
  // etkinlik parametreleri
  parameter_1: 'value_1',
  parameter_2: 'value_2',
  // ...
});

// GA4
gtag('event', 'myCustomEvent', {
  TheEventAction: "myEventAction1",
  TheEventLabel: "myEventLabel1"
});

Peki, grup bağlamında login etkinliğini farklı gruplarla iletişime geçecek şekilde uygulamak istersek:

gtag('event', 'login', {
  send_to: ['default', 'group_1', 'group_2'],
  method: 'Google'
});

Gruplama, global snippet, mülk temelli etkinlik işlemleri ve önerilen etkinlikler gtag.js özelliklerinden sadece birkaçı.

Mülk ve Event Akışının Ayrışması

Her şey doğru olmasına karşın (kod üzerinden bakıldığında) veri akışında hala sorun yaşıyor olabilirsiniz. Bunun muhtemel bazı nedenleri var.

Otomatik Mülk Aktarımı

Universal Analytics yerini Google Analytics 4’e bırakırken sayfada bir bildirimin yer aldığını görmüşsünüzdür. Belirtilen tarihe kadar mülk aktarımının yapılmaması durumunda aktarım işlem otomatik olarak planlandığı şekilde gerçekleştirildi. Ancak, bu aşamada bazı mülklerde yapılandırma sorunları da söz konusu oldu. Var olan UA mülkünün ilişkili olduğu diğer mülkler temelinde GA4 mülkü için config için G- ve GT- en yaygın ölçüm kimliği tanımları olarak listelense de bazı durumlarda MC- ve AW-’in de burada yer aldığını gördük.

Bu durum config ile event arasında bir ilişki ayrımı yaratmakta. Config temelde tracking kütüphanesini ve yapılandırmayı kapsarken event hedefi için farklı bir mülk tanımının send_to ile ele alınması gerekebilmekte. Bu durum bir altta yer alan Hatalı Yapılandırma başlığı ile benzerlik göstermekte.

Hatalı Yapılandırma

Bir Google Analytics 4 mülkünü farklı uygulamalar ve bağlantılar üzerinden de oluşturabilirsiniz. Merchant Center ve Google Ads bunun en yaygın örnekleri. Bu mülk ilişkili yapıda kimi zaman Google Analytics 4 yapılandırması ana mülk olarak diğer mülkün verileri alacak şekilde ele alınır. Yani, asıl veri kaynağı Google Ads iken hedef olarak Google Analytics 4 eklenir ve veri Google Ads üzerinden edinilir. Bu tür durumda yine config için Google Ads ele alınırken verinin (harici event verileri, vb.) send_to ile ayrıca iletilmesi gerekir. Çünkü, Google Ads’e iletilen event verileri ile Google Analytics 4’e iletilen veriler farklılık gösterebilir.

Eğer Google Analytics 4 etkinlik raporlarında sıklıkla sayfa görüntüleme ve diğer otomatik toplanan event’leri görüyorsanız ancak ecommerce ve diğer özelleştirilmiş event verileri bu raporlara yansımıyorsa muhtemel durum bu başlık altında belirttiğim mülkler arası veri aktarımı ile ilişkilidir diyebiliriz.

Sandbox Kısıtlamaları

Eğer Shopify Pixel kullanıyorsanız burada birkaç farklı durumu bir arada yaşayabilirsiniz. İlk olarak, daha önce kullandığınız Universal Analytics - Ga4 akışında bir sorun yaşamnmış olabilir; bkz: Otomatik Mülk Aktarımı. İkinci olarak, Google & Youtube uygulaması üzerinden Google Ads’i oluşturmuşsanız ve mülk işlemlerini otomatik gerçekleştirmişseniz mülkler birbirleri ile hedef bağlamında ilişkilendirilmiş olabilir; bkz: Hatalı Yapılandırma. Son olarak, pixeller yapısı gereği sandbox mode içerisinde ele alınır. Yüklendiği aşama ve sonrasında page_viewed ile (en temelde) ilk veriler elde edilir. Eğer kurulum script’i sayfa akışlarında yüklenmiyorsa ve/veya config geride kalıyorsa (çeşitli kontroller, vb. sebebiyle) event verisi nereye gideceğini bilemez. Bu tür durumlarda yine her event için send_to kullanılması oluşacak akış problemlerinin de önüne geçecektir.


Sık Sorulan Sorular (FAQ)

gtag.js ile birden fazla GA mülkü nasıl yönetilir?

Her mülk için ayrı config çağrısı yapılır:

gtag('config', 'GA_TRACKING_ID_1', { groups: 'access' });
gtag('config', 'GA_TRACKING_ID_2', { groups: 'access' });

send_to ile eventler belirli gruplara yönlendirilebilir.

GA ve GA4 etkinlik parametreleri arasındaki fark nedir?

VersiyonParametreler
GA (UA)event_category, event_action, event_label, value
GA4TheEventAction, TheEventLabel

Her iki sürümü desteklemek için parametreleri birlikte kullanın.

send_to parametresi ne işe yarar?

Event verilerini belirli mülklere veya gruplara yönlendirmek için kullanılır:

gtag('event', 'purchase', {
  send_to: ['default', 'group_ads'],
  value: 150
});

Belirtilmezse event default gruba gönderilir.

GA4’e otomatik geçişte veri kaybı yaşanır mı?

Otomatik mülk aktarımı sırasında config ve event hedefleri arasında uyumsuzluk oluşabilir. G-, GT-, MC-, AW- gibi farklı ölçüm kimliği önekleri karışabilir. Her event için send_to kullanmak bu sorunu önler.

Shopify Pixel ile gtag.js kullanırken nelere dikkat edilmeli?

  1. Sandbox kısıtlamaları: Pixeller sandbox mode içerisinde çalışır
  2. Otomatik mülk aktarımı: UA → GA4 geçişinde config sorunları oluşabilir
  3. Hatalı yapılandırma: Google Ads ve GA4 mülk ilişkilendirmeleri karışabilir

Her event için açıkça send_to belirtilmeli.


Özet: Temel Çıkarımlar

  1. config ile mülk tanımı, groups ile gruplama, send_to ile hedefleme yapılır
  2. GA parametreleri: event_category, event_action, event_label, value
  3. GA4 parametreleri: TheEventAction, TheEventLabel
  4. Her iki sürüm için parametreleri birlikte kullanın
  5. Veri akışı sorunlarında send_to ile açık hedefleme yapın

Footnotes

  1. Add analytics.js to Your Site. Google Analytics
  2. Ecommerce Measurement. Google Analytics
  3. Introduction to ga.js (Legacy). Google Analytics
  4. Mülkünüzü ec.js eklentisiyle etiketleme. Analytics Yardım
  5. Send data to Google Analytics with gtag.js. Google Analytics
  6. Otomatik olarak toplanan etkinlikler
  7. Measure Google Analytics Events. Google Analytics