Google Analytics Hedefler ve Funnel İşlemleri
Google Analytics özellikleriyle ilgili konularımıza Hedefler (Goals) ile ilgili biraz daha detay vererek devam edeceim. Daha önce yayınladığım Google Analytics: Hedefler başlıklı yazıyla temel bir şekilde seçenekler ve raporlardan bahsetmiştim.
Geçtiğimiz günlerde yayınladığım Google Analytics E-Ticaret Raporları ve Etkinlik Kurulumları başlıklı yazıda ise hem hedef hem de dönüşüm hunisi adımları yer bulmuştu1. Özellikle Google Analytics: Gelişmiş Denetim süreçlerinde genelde bu hedeflemelerin hatalı yapılandırıldığı görmekteyim. Bu yazı tüm bu konuları netleştirmek istiyorum.
Temmuz 2023 itibariyle Universal Analytics (UA) yerini Google Analytics 4 (GA4) mülk biçimine bırakıyor. Bu tarihten sonra UA mülkleri yeni verileri işleyemeyecekler. Tahminen yıl sonu gibi de artık erişilmez hale gelecekler. Mülk biçimleri arasındaki farklılıklar ve diğer işlemler için Universal Analytics (UA) Yerine Google Analytics 4 (GA4) başlıklı yazımı okuyabilir ve teknik destek talebinde bulunabilirsiniz.
Google Analytics: Goals
Öncelikle, Google Analytics tarafında Goals (Hedefler) ne ifade ediyor bunu hatırlayalım. Goals (Hedefler), web siteniz veya uygulamanız üzerinden belirlediğiniz hedeflerin başarısını ölçmenize sağlayan bir ölçüm türüdür. Bu sayede, ziyaretçilerinizin kullanıcı-müşteri haline geldiği süreci adımlar halinde görebilir, sürecin hangi aşamasında sorunlar yaşadığını görebilir ve süreci optimize edebilirsiniz. Hedefler bu yapısı itibariyle, işletmenizin başarısına katkıda bulunan ve dönüşüm adı verilen tamamlanmış işlemleri ifade etmektedir. Bu hedefler satın alma işlemi (e-ticaret sitesi için), bir oyun seviyesini tamamlama (mobil oyun uygulaması için) veya bir formu gönderme (pazarlama veya olası satış yaratma sitesi için) işlemi olabilir.
Hedeflerin doğru bir şekilde tanımlanması, analiz sürecinin de önemli bir parçasını oluşturur. Daha önce yayınladığım KPI (Key Performance Indicator) başlıklı yazıda performans ölçümünün doğru bir şekilde yapılmasının ne kadar önemli olduğundan bahsetmiştim. Google Analytics hedefleri de doğru bir şekilde yapılandırıldığında (makro ve mikro dönüşüm tanımlarınıza bağlı olarak) online işletmenizin veya pazarlama kampanyanızın etkisini değerlendirmeniz ve kaynaklarınızı daha efektif yönetebilmeniz de mümkün hale gelecektir.
Örnek Hedefleme İşlemleri
Bu işlemler için Görünüm altında bulunan Hedefler bölümüne erişebiliyor olmanız gerekmektedir. Erişim ile ilgili bir sorununuz olmadığını varsayarak hazır şablonlarla işlemlere başlayabiliriz.
Hedef Oluşturma
Hedef oluşturma işlemi önceden hazırlanmış şablonlar veya özelleştirilmiş (custom) seçeneği vasıtasıyla gerçekleştirilebilir. Hedef biçiminiz şablonlar altında listelenen seçeneklerden birine uyuyorsa bu seçenek üzerinden hızlı bir şekilde ilerleyebilirsiniz. Diğer durumlarda ise Özel (Custom) seçeneği ile ilerleyebilirsiniz.
Şablonlar
Hedef şablonları (templates) Google Analytics tarafından Gelir (Revenue), Edinme (Acquisition), Sorgu (Inquiry) ve Etkileşim (Engagement) başlıkları altında önceden tanımlanmış durum ve etkinlikleri kapsayan ve kurulum sürecini pratikleştirmeyi sağlayan hazır hedef tanımlarıdır. Buradaki seçeneklere göre Hedef Açıklaması (Goal description) alanı (ad ve hedef türü) güncellenir.
Hedef Açıklaması
Hedefin adı ve türünü bu alanda belirleriz. Ad için sizin için anlamlı bir tanım yapmanız yeterli olacaktır. Tür ise hedefin ne tür bir işlem sonucunda gerçekleşmiş kabul edileceğinin belirlendiği alandır.
DestinationHedef
Bir sayfanın görüntülenmesi (form gönderme işleminden sonra yönlendirilen teşekkürler sayfası, üyelik formu doldurulduktan sonra görüntülenen kayıt onay sayfası, alışveriş işlemi sonrasında yönlendirilen ödeme sonuç sayfası, vb.) hedef niteliği taşıyorsa bu seçeneği kullanabilirsiniz. Bu sayfanın kolay bir şekilde erişilemiyor olması hedef performansının ölçümü için kritik bir öneme sahiptir. Doğrudan bir sayfa tanımı yapmak yerine (doğrudan erişilemiyor ise) bir dizi adım ile ilişkilendirilmesini daha uygun olacaktır.
DurationSüre
Websitenizin veya uygulamanız üzerine gerçekleşen minimum oturum süresini dönüşüm olarak saymak istediğimizde süre seçeneğinden faydalanabiliriz. Saat, Dakika ve Saniye alanları, hedef dönüşüm olarak sayılacak minimum oturum süresini belirtir. Bu süreyi aşan herhangi bir oturum, dönüşüm sayılacaktır. Belirli bir sınırlandırması yoktur. Örneğin, belirtilen sayfalar ya da etkinliklerle sınırlandıramazsınız.
Pages/Screens per sessionOturum Başına Sayfa/Ekran Sayısı
Bir ziyaretçinin, web sitesi veya uygulamaya erişip oturum boyunca görüntülediği sayfa veya ekran sayısını bir hedef olarak değerlendirebiliriz. Belirtilen sayıdan daha fazla sayfa veya ekran görüntüleyen kullanıcılar dönüşüm sağlamış olur.
EventEtkinlik
Belirli bir kullanıcı etkileşiminin (video oynatma, buton tıklama, sayfa içerisindeki belirli bir elemanı görüntüleme, vb.) hedef olarak tanımlanması için etkinliklerden faydalanırız.
Hedef Ayrıntıları
Hedef ayrıntıları, hedef olarak tanımladığımız durumun oluşturulduğu alandır. Hedef açıklamasında seçilen hedef türüne göre değişkenlik göstermektedir. Aşağıda, hedef türlerine bağlı olarak gerçekleştirilen tanımları görebilirsiniz. Hedeflerin, hedefi oluşturduktan sonra topladığınız verilere uygulanacağını unutmamalısınız.
Hedef
Hedef açıklaması bölümünde de özet bir şekilde belirttiğim gibi, belirli bir sayfanın görüntülenmesi durumunu hedef olarak belirleyebiliriz. Ancak bu sayfanın doğrudan erişilebiliyor olması sayfanın performansını doğru bir şekilde hesaplayabilmemizi engelleyecektir. Bu nedenle, mümkün ise bir işlemin sonrasında ulaşılabilen sayfa tanımlarını kullanmanızı öneririm. Örneğin, bir sayfanın görüntülenebilmesi için kullanıcı girişi, form gönderimi, alışveriş işleminin başarıyla tamamlanması, reklam tıklaması ile ulaşılabilmesi gibi kriterler faydalı olacaklardır. Aşağıdaki görselde /tr/success
sayfasının hedef olarak tanımlandığını görebilirsiniz. Bu sayfaya arama motorları erişimine kapalıdır ve sadece form gönderimleri (submit) başarı ile tamamlandığında görüntülenebilmektedir.
Sayfa son 7 gün değerlendirildiğinde %0.02 dönüşümüne sahiptir. Bu kurulumunu yaptığınız hedefin tutarlılığını görmek amacıyla kullanabileceğiniz bir bilgidir. Bu dönüşüm oranı tüm sayfalar içerisinde belirtilen sayfanın görüntülenme oranıdır. Ancak, bu değeri Davranış > Site İçeriği > Tüm Sayfalar raporları üzerinden ulaştığınız sayfa görüntüleme ile aynı olmadığını, hedef verilerinin standart Analytics verilerinden farklı şekilde işlendiğini2 unutmamalısınız.
Şimdi, yukarıdaki hedef işlemini birden çok adıma bölerek bir funnel ile görüntülemek istediğimizi varsayalım.
Alışveriş sitemiz için hedef URI tanımmız /success
olsun. Yani, tüm adımlar tamamlandıktan, ödeme işlemi başarılı bir şekilde gerçekleştikten sonra ulaşılacak son noktamız. Bu adıma kadar ilerlenmesi gereken adımlarımızın da Sepet > Kargo bilgileri > Ödeme bilgileri > Özet > ... şeklinde olduğunu varsayalım. Bu durumda, Hedef dışındaki 4 adımı da funnel kırılımları olarak değerlendirebiliriz.
Bu adımlar E-ticaret özelliğini etkileştirmemizin ardından erişebildiğimiz funnel için de benzerlik taşımakta.
İlk adım (örnek temelinde; Sepet) bir zorunluluksa, yani hedefe giden süreç bu adımla başlamak durmunda ise ilgili seçeneğe ait Zorunlu seçeneğini aktifleştirebilirsiniz. Değer tanımı için de ilgili hedefin sizin için olan maliyetini temel alabilirsiniz. Diğer yandan, Analytics'in ROAS (Reklam Harcamasının Getirisi) gibi diğer metrikleri hesaplamak için hedef değer verilerini de kullanmakta. Bu aşamada, parasal ya da sabit değer tanımını göz önünde bulundurabilirsiniz. Eğer hedef değer olarak parasal bir değer kullanmak siteniz veya uygulamanız için uygun değilse, dönüşümlerinizi ağırlıklandırmak ve karşılaştırmak için sabit bir sayısal ölçek kullanabilirsiniz. Örneğin, düşük değerli hedeflere "1", yüksek değerli hedeflere de "10" değerini atayabilirsiniz3.
Hedefler içerisinde yapılan değişiklikleri notlandırmayı unutmamalısınız. Örneğin, hedef değeri olarak parasal değeri bir sayısal ölçekle değerlendirmeniz ya da adımlar içerisinde değişiklikler yapmanız durumunda verileriniz değişikliğin yapıldığı an itibariyle işleme alınır ve geçmiş verilere uygulanmaz. Dolayısıyla, raporlarda hedefleri değerlendirirken değişiklikleri ayrıca göz önünde bulundurmanız gerekir.
URL Tanımları
Birçok web sitesi, sayfalar temelinde sabit URI'ler kullanır. Bu sayfaların yapısı, site için kullanılan web teknolojisine göre değişiklik gösterebilir. Aşağıda farklı biçimlerdeki URL'leri görebilirsiniz.
http://www.domain.com/2008/category/name-of-blog-post/
https://alanadi.com/dogs/food.php
http://shop.websitesi.net/cats/food.html
Hedefe ait URI'nin söz konusu sayfaya/hedefe özel olduğundan emin olmalısınız. Örneğin, /tr/success
ile /en/success
, /cat/foods.php
ve /dog/foods.php
birbirinden farklı içerikleri ifade eder.
Ardından, istek URI'sini netleştirmelisiniz. İstek URI'si, URL'nin alan adresinden sonra gelen kısmıdır. Yukarıda belirtilen URL örnekleri temelinde ifade etmek gerekirse, İstek URI'leri sırasıyla şu şekilde olacaktır:
/2008/category/name-of-blog-post/
/dogs/food.php
/cats/food.html
Eğer URI'leriniz büyük/küçük harf duyarlı ise, yani /contactus.html
ve /CONTACTUS.html
şeklinde 2 farklı sayfanız varsa hedefleme sürecinde bu sayfaları birbirinden ayırmak için Büyük/küçük harfe duyarlı seçeneğini seçebilirsiniz. Normal şartlarda, Google Analytics büyük/küçük harf ayrımı yapmamaktadır.
Eğer sayfalar arasında ortaklık varsa bu ortaklığı eşleşme türü ile belirtebilirsiniz. Örneğin, URI'ler sorgu terimleri içeriyorsa veya URI'lerin sonunda sorgu parametreleri varsa, dönüşüm hunisi1 veya hedef URL hedeflerini girerken Şununla başlar veya Normal İfade eşleme türlerini kullanabilirsiniz. Örnek olarak aşağıda dinamik parametreler alan birkaç URL'lere göz atabilirsiniz.
https://www.alanadi.org/about/page.html?id=89
https://form.websayfasi.com/lead/submit.html?utm_source=BultenOca&utm_medium=email
http://shop.domain.net/success.php?transaction=1322
Kimi durumlarda ise URI bazı adımlarda sabit kalır. Özellikle alışveriş sitelerinde işlem adımları (checkout) tab'ler veya accordion UI elemanları ile ve formlar AJAX ve fetch ile dinamik olarak yönetilebilmektedir. Bu durumda URI değişmediği için adımları planlarken sorun yaşayabilirsiniz.
- Kargo bilgileri:
www.domain.com/checkout
- Ödeme bilgileri:
www.domain.com/checkout
- Taksit seçenekleri:
www.domain.com/checkout
Bu gibi durumlarda destination yerine etkinlik hedeflerini ya da sanal sayfa tanımlarını kullanabilirsiniz.
Bu işlemi dosya indirme hedefleri için de gerçekleştirebilirsiniz4.
// ga kütüphanesi kullanıyorsanız
// 1. Adım
ga('send', 'pageview', '/funnel/checkout/1');
// 2. Adım
ga('send', 'pageview', '/funnel/checkout/2');
// 3. Adım
ga('send', 'pageview', '/funnel/checkout/3');
// gtag kütüphanesi kullanıyorsanız / pageview olarak
// 1. Adım
gtag('config', 'UA-12345678-9', {'page_path': '/funnel/checkout/1'});
// 2. Adım
gtag('config', 'UA-12345678-9', {'page_path': '/funnel/checkout/2'});
// 3. Adım
gtag('config', 'UA-12345678-9', {'page_path': '/funnel/checkout/3'});
// gtag kütüphanesi kullanıyorsanız / event olarak
// https://developers.google.com/analytics/devguides/collection/gtagjs/pages
// 1. Adım
gtag('event', 'page_view', {'page_path': '/funnel/checkout/1'});
// 2. Adım
gtag('event', 'page_view', {'page_path': '/funnel/checkout/2'});
// 3. Adım
gtag('event', 'page_view', {'page_path': '/funnel/checkout/3'});
Yukarıda da pek çok biçimde detaylandırmaya çalıştığım URI tanımları sanırım netlik kazanmıştır. Gelelim bir diğer önemli konuya; eşleşme türü
Hedef URI'si girerken Eşittir, Şununla başlar ve Normal ifade seçimleri üzerinden ilerleriz.
- Eşittir
- Standart, sabit URL'ler için kullanılır. Web sitesi veya uygulamaya ait URI'ler oturum tanımlayıcıları veya sorgu parametreleri gibi dinamik (değişen) bilgiler bulundurmuyorsa kullanılabilir. Dönüşüm hunisi veya hedef için kullanılan URI'lerin raporlarda gösterilen URI'lerle tam olarak eşleşmesi gerekmektedir, aksi durumda hedef veri almamış olur. Aynı şekilde, URI tanımında boşluklar bulunmaması ve yazım hatası olmaması da önemlidir5.
Örnek bir tanım: /alisveris/tesekkurler.html
- Şununla başlar
- Bu eşleme, dizenin başlangıcından, belirttiğiniz dizenin son karakterine kadar olan (son karakteri de dahil) özdeş karakterleri eşleştirir. Sayfa/ekran URI'leri genel olarak değişkenlik göstermiyor, ancak URLI'lerin sonunda hariç tutulması istenen ek parametreler olabiliyorsa bu seçenek kullanılabilir5.
Örneğin, http://www.example.com/transaction/success?id=9982251615
ve http://www.example.com/transaction/success?id=233223
ile eşleşecek tanım: /transaction/success
- Normal ifade
- Normal ifade, joker karakter ve esnek eşlemeyi6 etkinleştirmek için özel karakterleri kullanır. Bu eşleştirme, kökün veya izleme parametrelerinin ya da ikisinin birden aynı web sayfasının URL'lerinde değişkenlik gösterebildiği durumlarda yararlıdır. Örneğin,
islem.aspx\?page=1
sayfası,http://food.example.com/islem.aspx?page=1&id=002
sayfasının yanı sırahttp://spor.example.com/islem.aspx?page=1&language=fr&id=119
sayfasıyla da eşleşir. Başka bir örnek vermek gerekirse,^/spor/
alt dizinindeki herhangi bir sayfaya giden kullanıcılar için bir hedef oluşturmak üzere normal ifadeler kullanılabilir5.
Dönüşüm hunisi adımları için, Hedef URL ile aynı eşleme türü kullanılır. Örneğin, Hedef URL için bir normal ifade seçeneğini kullandıysanız, tüm dönüşüm hunisi adımları da aynı ifadeyle eşleşmelidir7.
Süre
Saat, dakika ve saniye olarak tanım yapılabilir. Belirlenen süre "şundan büyük" olarak tetiklenecektir. Yani, 10 saniye
tanımı yaptığınızda hedef 10 saniyeden büyük oturumlarda başalarılı (tr: dönüşüm, en: conversion) kabul edilir7.
Oturum Başına Sayfa/Ekran Sayısı
Ziyaretçinin başlattığı oturum boyunca görüntülediği sayfa veya ekran sayısı üzerinden işlem gerçekleştirilir, "şundan büyük" olarak tetiklenecektir. Yani, oturum başına sayfa/ekran sayısı için 10
tanımı yapıldıysa, 10'dan büyük görüntülemeler başarılı (tr: dönüşüm, en: conversion) kabul edilir7.
Etkinlik
Etkinlik alanında Kategori, Etiket, İşlem ve Değer tanımları yer almaktadır. Bu alanlardan en az 1 tanesinin tanımlı olması gerekir. Alan tanımları yine eşleşme türü (eşittir, şununla başlar, normal ifade ve değer için şundan büyük) seçeneklerine göre yönetilebilmektedir.
Bir veya daha fazla koşul belirtilerek, web sayfası veya uygulamada gerçekleştirilen etkinlikleri hedef olarak tanımlayabiliriz. Bir Etkinlik tetiklendiğinde belirtilen tüm koşullar doğruysa dönüşüm olarak kabul edilir8.
E-ticaret izleme koduyla ilişkili bir etkinlik veya satın alma izleniyorsa, Hedef Değeri boş bırakılmalıdır. İşlemin gerçek değeri, Hedef Değeri metriğinde değil e-ticaret raporlarıyla ilişkili olan Gelir metriğinde görünür ve bu değer alışveriş sepetinizdeki E-ticaret İzleme kodundan gelir.
Örneğin, web sayfamda yer alan eğitim videolarının izlenme oranlarını hedef tanımı içerisinde değerlendirebilirim. Bir video izlenmeye başladığında, etkinlik kategorisi (event category) olarak Video Interest
değerini alır. Etkinlik işlemi (event action) ise videonun izlenen dilimine bağlı olarak start
, progress
ve complete
değerlerine sahiptir. Etkinlik etiketi (event label) ise videonun etkileşim aldığı sürelere sahiptir. Dolayısıyla, etkinlik hedefime bağlı olarak dönüşüm tanımımı şu şekilde yapabilirim.
- Kategori eşittir
Video Interest
- İşlem eşittir
complete
- Etiker eşittir
100
Kurulumlarla ilgili bu aşamaya kadar sanırım her şey yolunda. Bir sonraki aşama artık düzenli aralıklarla hedeflerin gerçekleşip gerçekleşmediğini takip etmek ve saymayan bir hedef var ise yukarıdaki bilgiler ışığında hedef planlamasını düzenlemek olmalı. Huni görselleştirme ve hedef akışı arasındaki farklılıklar ile ilgili olarak Google tarafından paylaşılan Dönüşüm Hunisi Görselleştirme ve Hedef Akışı tablosuna göz atabilirsiniz.
Gelelim son konumuza; üçüncü taraf siteler ile olan etkileşimi nasıl hedef tanımı içerisinde değerlendirebiliriz?
Bir hedef veya dönüşüm hunisi adımı işlemini izleyebilmeniz için, ilgili sayfada/ekranda Analytics izleme kodunun bulunması ve sorunsuz bir şekilde çalışabiliyor olması gerekir. Ancak, ürünlerimizin kendi sitemiz üzerinde değil de bir başka site üzerinden satıldığını varsayalım. İlgili web sayfasındaki Google Analytics koduna erişimimiz yok ise ancak biz bu sitedeki kullanıcı etkinliğini izlemek ve bu sayfalarda hedefler oluşturmak istiyorsak giden bağlantı ile bir hedef veya dönüşüm hunisi adımı oluşturabiliriz9. Elbette bu kesin bir bilgi kaynağı değildir ancak fikri sahibi olmamızı sağlar.
Bu işlemi etkinlik kurulumu ile gerçekleştirebilirsiniz10. Bu amaçla kullanabileceğiniz11 bir örnek kodu12 aşağıda görebilirsiniz.
function makeExternal(link) {
const url = link.getAttribute('href'),
host = window.location.hostname.toLowerCase(),
regex = new RegExp('^(?:(?:f|ht)tp(?:s)?\:)?//(?:[^\@]+\@)?([^:/]+)', 'im'),
match = url.match(regex),
domain = ((match ? match[1].toString() : ((url.indexOf(':') < 0) ? host : ''))).toLowerCase();
if (domain != host) {
let captureOutboundLink = url => {
// ga kütüphanesi kullanıyorsanız
ga('send', 'event', 'outbound', 'click', url, {
'transport': 'beacon',
'hitCallback': () => document.location = url;
});
// gtag kütüphanesi kullanıyorsanız
gtag('event', 'click', {
'event_category': 'outbound',
'event_label': url,
'transport_type': 'beacon',
'event_callback': () => document.location = url;
});
}
}
}
const links = Array.from(document.getElementsByTagName('a'));
links.forEach(link => {
link.addEventListener('click', () => {
makeExternal(link);
});
});
Evet, kod örneği ile birlikte Google Analytics hedef oluşturma adımlarını tamamladık.
- Dönüşüm Hunisi Görselleştirme ve Hedef Akışı ↩ ↩
- Verilerin standart dışı bir şekilde işlendiği özellikler ↩
- Hedefler hakkında. Analytics Yardım ↩
- İndirmeler için hedefler, Analytics Yardım ↩
- Hedef URL'ler için hedef örnekleri. Analytics Yardım ↩ ↩ ↩
- Normal ifadeler (regex) hakkında, analytics Yardım ↩
- Hedefleri oluşturma, düzenleme ve paylaşma, Analytics Yardım ↩ ↩ ↩
- Etkinlikler hakkında, Analytics Yardım ↩
- Üçüncü taraf sitelerde hedefler ve dönüşüm hunisi adımları ↩
- Giden bağlantıları yakalama, Analytics Yardım ↩
- gtag.js ile giden bağlantıları izleme, Analytics Yardım ↩
- Joschi Kuphal, Detecting outbound links with JavaScript ↩