E-Ticarette Gelirin Site İçi Kaynağı Nasıl Takip Edilir?

0

E-Ticarette Gelirin Site İçi Kaynağı Nasıl Takip Edilir?

Özellikle ürün sayısının ve çeşidinin fazla olduğu e-ticaret şirketleri için, site içindeki pazarlama alanları çok değerlidir. “Ne kadar değerli?” sorusuna cevap vermeye çalışırken ya genel satış hacmine bakarız ya da tecrübe / öngörülerimize dayanarak yorum yaparız.

Site içi alanların (slider, banner, ürün listeleme sayfaları, site içi arama sonuçları vs) satışa katkısını net olarak ölçmek için farklı teknikleri analitik bakış açısıyla bileştirmek gerekiyor.

Ana sayfa slider;

anasayfa

Farklı kurgulardaki banner alanları;

banneralan

Site içi arama önerileri;

siteiciarama

Burada anlatılacak yöntemde Google Tag Manager (GTM) üzerinden Universal Analytics’in Custom Dimensions (Özel Boyutlar) özelliğini kullanacağız. GTM’in entegrasyonu ve GTM üzerinden Analytics kodunun nasıl eklendiğini bu videodan öğrenebilirsiniz.

En basit şekliyle yapmaya çalıştığımız, siparişte yer alan ürünlerin site içinde en son hangi mecrada (slider, banner, ürün listeleme sayfaları, site içi arama sonuçları vs) etkileşime geçilerek sepete eklendiğini takip etmek.

Yazının devamında anlatılacak 6 adımın sonunda site içi kaynağı Google Analytic’teki raporlarda görmeye başlayacağız.


Adım 1: Universal Analytics’te Custom Dimension Tanımlaması

Custom Dimension’larla ilgili detaylı bilgiye buradan ulaşabilirsiniz. Custom Dimension tanımalaması Property (Mülk) seviyesinde yapıyoruz.

Custom Dimension’a isim veriyoruz -burada sitesource adı kullanıldı- ve Scope (Kapsam) olarak Session (Oturum) seçiyoruz.

adim1

Custom Dimension’a data aktarabilmek için indeksine dikkat etmeliyiz. Create butonuna tıkladıktan sonra gelen ekrandan indeks bilgisine ulaşabilirsiniz. Bu bilgiyi ilerleyen adımlarda kullanacağız.

Analytics hesabında oluşturduğumuz Custom Dimension’a data aktarabilmek için site içi kaynak bilgilerini GTM makrosunda tutacağız.

GTM makrolarıyla ilgili detaylı bilgiye buradan ulaşabilirsiniz.


Adım 2: URL Sonuna Eklenen Referansa Göre Kaynak Takibi

Site içi kaynaklarını GTM makrosu üzerinden takip etmek için kullanılabilecek en kolay yol tıklandıktan sonra gelinen sayfanın URL’inin sonundaki referansı kullanmak. Bu yöntem ile slider, banner, arama önerileri alanlarının takibi kolayca yapılabilir.

adim2

http://www.evmanya.com/kategori/633-yemek-takimlari&sitesource_ref=gunun-firsati

Özel alanlardan çıkan URL’lerin sonunda sitesource_ref değişkenini koyup, = işaretinden sonra o alanı nasıl etiketlemek istiyorsak Türkçe karakter içermeyecek şekilde yazıyoruz.

Burada ref olarak sitesource_ref değişkenini kullandık, siz istediğiniz adı verebilirsiniz. Eğer kullandığınız alan otomaik oluşan bir alansa (URL’ini bir panel üzerinden siz veremiyorsanız) bu alandan çıkan her URL’in sonuna eklenmesi gereken ref’i IT ekibinize iletmeniz gerekebilir.

GTM üzerinden çalışan makro sitesource_ref değişkenini gördüğü her sayfada devamında yazan bilgiyi (bu örnek için gunun-firsati) saklayacak.

GTM’in kurulumu ile ilgili videoya daha önce yer vermiştik. Bu adımda GTM entegrasyonunuzu tamamlayıp container oluşturduğunuzu ve Universal Analytics kodu eklediğinizi varsayıyoruz.

Oluşturduğumuz containera girip New > Macro seçimini yapıyoruz.

adim2-1

Macro adını -burada sitesource_macro adı kullanıldı – yazıp Macro Type olarak Custom Javascript seçiyoruz. Input alanına aşağıdaki kodu yazıyoruz.

adim2-2

Code

function ()
{
var sitesource_now;
var url = location.href;

if(url.indexOf(‘sitesource_ref’)>0)
{
var qs = url.substring(url.indexOf(‘?’) + 1).split(‘&’);
for(var i = 0, result = {}; i < qs.length; i++)
{
qs[i]= qs[i].split('=');
result[qs[i][0]] = decodeURIComponent(qs[i][1]);
}
sitesource_now = result.sitesource_ref;
}
return sitesource

Bu kod, eğer URL sitesource_ref içeriyorsa çalışıp değeri sitesource_now değişkenine yazıyor, içermiyorsa sitesource_now değişkeni undefined olarak görünüyor.

URL sonuna eklenen ref’in değerini saklamak site içi tüm alanları takip etmemize için yeterli olmayabilir. Bir sonraki adımda farklı ek bir yönteme yer verilecek.


Adım 3: Ürün Listeleme Sayfalarının Kaynak Takibi

Kategoriler ve arama sonucu sayfaları ürün listeleme sayfalarının ilk akla gelen örnekleridir.

Ürün listeleme sayfalarının gelire katkısını ölçmenin 2 yöntemi var.

3.1- Eğer ürün listeleme sayfalarının genel bir URL yapısı varsa;

Örneğin her kategorinin URL’i www.domain.com/kategori şeklinde başlıyorsa, site içi arama sonucu sayfanızın URL’i www.mydomain.com/search?q= linkinde olduğu gibi belli bir parametre içeriyorsa, 2. adımdaki gibi bir yöntem uygulanabilir. Bu durumda 2. adımdaki koda aşağıdaki gibi eklemeler yapmak gerekir:

Code

function ()
{
var sitesource_now;
var url = location.href;

if(url.indexOf(‘sitesource_ref’)>0)
{
var qs = url.substring(url.indexOf(‘?’) + 1).split(‘&’);
for(var i = 0, result = {}; i 0)
{
sitesource_now = ‘kategori’;
}

else if (url.indexOf(‘search’)>0)
{
sitesource_now = ‘search’;
}

return sitesource_now;
}

Bu kod sırasıyla;

URL sitesource_ref referansı içeriyorsa, referansın sağında yazan değeri sitesource_now değişkenine yazıyor,
URL kategori içeriyorsa sitesource_now değişkenine kategori yazıyor,
URL search içeriyorsa sitesource_now değişkenine search yazıyor,
Eğer URL bu kuralların hiçbirine uymuyorsa sitesource_now değişkeni undefined olarak görünüyor.

3.2- GTM Data Layer’a sayfa tipi değişkeni gönderiliyorsa;

Sayfa tipini anlatacak URL yapınız olsa dahi ana sayfayı ayırt etmek için GTM Data Layer değişkenlerine ihtiyacınız olabilir.
Data Layer, her sayfanın kaynak kodunda bulunan ve GTM üzerinden kullanılacak bilgileri saklayan değişkenler bütünüdür. Data Layerla ilgili detaylı bilgiye bu linkten ulaşabilirsiniz.

Sayfa tipini saklayan örnek Data Layer kod parçası:

Code


Bir Data Layer değişkeninde yazan değeri kullanabilmek için o değişkeni macro ile okumak gerekir.
GTM’de tekrar New>Macro seçimini yapıyoruz. Bu sefer maKro tipi olarak Data Layer Variable seçiyoruz. Makro adına istediğinizi yazabilirsiniz ancak Data Layer Variable Name alanına Data Layer’da gördüğümüz değişkenin adını aynen yazmak hata yapma olasılığımızı azaltacaktır.

adim3

Artık makronun adını {{ }} içinde yazdığımızda Data Layer’da yazan değeri aynen almış olacağız.
3.1’inci adımda yazdığımız koda ufak bir ekleme yaparak ana sayfayı da kaynak olarak ayırt edebileceğiz. Eğer kategori ve arama sonucu sayfanızı URL’den ayırt edemiyorsanız tüm listeleme sayfalarının takibi için bu yöntemi tercih edebilirsiniz. Aşağıdaki kodda her 2 yönteme de yer verilmiştir.

Code

function ()
{
var sitesource_now;
var url = location.href;

if(url.indexOf(‘sitesource_ref’)>0)
{
var qs = url.substring(url.indexOf(‘?’) + 1).split(‘&’);
for(var i = 0, result = {}; i < qs.length; i++) { qs[i] = qs[i].split('='); result[qs[i][0]] = decodeURIComponent(qs[i][1]); } sitesource_now = result.sitesource_ref; } else if (url.indexOf('kategori')>0)
{
sitesource_now = ‘kategori’;
}

else if (url.indexOf(‘search’)>0)
{
sitesource_now = ‘search’;
}
else if ( {{pageType}} == ‘home’ )
{
sitesource_now = {{pageType}};
}

return sitesource_now;
}

Bu kod sırasıyla;

URL sitesource_ref referansı içeriyorsa, referansın sağında yazan değeri sitesource_now değişkenine yazıyor,
URL kategori içeriyorsa sitesource_now değişkenine kategori yazıyor,
URL search içeriyorsa sitesource_now değişkenine search yazıyor,
Data Layer’daki pageType değişkeni home ise bu değişkendeki değeri sitesource_now değişkenine yazıyor,
Eğer bu kurallar sağlanamıyorsa sitesource_now değişkeni undefined olarak görünüyor.

Siz sitenizin yapısına göre 3.1 ve 3.2 adımındaki yöntemleri karışık şekilde kullanabilirsiniz.

Bundan sonraki kısımlar için 2. ve 3. adımda anlatılan yöntemlerle site içi tüm kaynakları (ürün detayda gösterilen benzer ürünler, ilginizi çekebilir gibi alanlar dahil) takip ettiğinizi varsayarak devam ediyoruz.

Bu adımlarda anlattığımız yöntemlerle takibini yapamadığınız herhangi bir site içi kaynağınız varsa farklı yöntemler için en sonda yer alan e-mail adresi üzerinden iletişim kurabilirsiniz.


Adım 4: Datayı Bozacak Durumların Belirlenmesi ve Gerekli Kuralların Tanımlanması

Bu aşamaya kadar site içi her kaynağı sitesource_now değişkeninde tutuyoruz. Ve kullanıcı site içinde gezdikçe sitesource_now değişkenine farklı değerler yazılıyor.
Bu değişkeni ilk adımda oluşturduğumuz Custom Dimension’a yazarsak her yeni gelen değer bir öncekini silerek üzerine yazacak. Yani kullanıcı ziyaretini tamamladığında en son sitesource_now değişkeninde ne yazıyorsa Custom Dimension’da o değeri göreceğiz.

Bu durumda datamızı bozmamak için düşünmemiz gereken 2 konu var:

Durum 1 – Kullanıcı sepete ürün ekledikten sonra ana sayfaya tekrar dönüyor ve birkaç sayfa gezdikten sonra “Sepete Git” butonuna basıp satın alma adımlarına gidiyor.

Kullanıcının sepete eklediği ürünü “haftanın ürünü” bannerından tıklayıp sepete eklediğini varsayalım. Sepete ekleme işlemini yaptığı anda sitesource_now değişkeni haftanin-urunu değerini saklıyordu. Ancak kullanıcı sepete ekleme işlemini yaptıktan sonra satın alma adımlarına geçmeden sitede gezmeye devam ettiği için sitesource_now değişkeninin üzerine farklı değerler yazdı ve data bozuldu.

adim4

Bu durumun datayı bozmaması için sepette ürün varken sitesource_now değişkeninin üzerine yeni değerin yazılmasını engellememiz gerekiyor.

Sepetteki ürün sayısını tutan elementi kaynak kodunda bulmak mümkün.
Örneğin; sepette 1 ürün varken n11.com’un kaynak kodunda baksetTotalNum ifadesinin 1 olduğunu görüyoruz.

adim4-1

sitesource_now değişkenine sadece basketTotalNum 0 iken değer yazılması için makro kodunun başına if kodu ekliyoruz.
Ekleyeceğimiz kodun sepetteki ürün sayısını verip vermediğini kontrol etmek için sitede sepete ürün ekliyoruz. Daha sonra sağ tıklayıp çıkan listeden öğeyi denetleyi seçiyoruz. Çıkan ekranda Console sekmesini açıp kod parçasından dönen değeri kontrol ediyoruz.

Burada;
$(‘span.basketTotalNum’).html();

kod parçasını denedik. Bu yöntem sizin sitenizde çalışmazsa IT ekibinizden ufak bir HTML yardımı alıp kolayca çözüm bulabilirsiniz.
adim4-2
if kodunun eklenmesiyle brilikte makro kodumuz aşağıdaki hale geliyor.

Code

function ()
{
var count;
count = $(‘span.basketTotalNum’).html();

if( count == ‘0’ )
{
var sitesource_now;
var url = location.href;

if(url.indexOf(‘sitesource_ref’)>0)
{
var qs = url.substring(url.indexOf(‘?’) + 1).split(‘&’);
for(var i = 0, result = {}; i < qs.length; i++) { qs[i] = qs[i].split('='); result[qs[i][0]] = decodeURIComponent(qs[i][1]); } sitesource_now = result.sitesource_ref; } else if (url.indexOf('kategori')>0)
{
sitesource_now = ‘kategori’;
}

else if (url.indexOf(‘search’)>0)
{
sitesource_now = ‘search’;
}
else if ( {{pageType}} == ‘home’ )
{
sitesource_now = {{pageType}};
}
}
return sitesource_now;
}

Durum 2- Kullanıcı siparişini verdi ve teşekkür sayfasını gördü. Ancak teşekkür sayfasını gördükten sonra siteden ayrılmak yerine ana sayfaya dönüp sitede gezmeye devam etti.

Kullanıcı siparişini verdikten sonra sitede gezmeye devam ettikçe sitesource_now değişkeninde yeni değerler yazacak. Bu durumun datayı bozmaması için kullanıcı teşekkürler sayfasını görüdüğünde cookie tanımlayacağız. Google Analytics’in session süresine eş değer bir yapı kurmaya çalıştığımız için cookie süresini 30 dakika olarak belirliyoruz.

GTM’de cookie tanımlamak için Tag kullanacağız. New>Tag seçimini yapıyoruz.
durum2
Tag’in adını belirliyoruz ve Tag Type olarak Custom HTML Tag seçiyoruz. HTML alanına aşağıdaki kodu giriyoruz.
durum2-1

Code


Bu tag çalıştığında adı trans değeri ok olan 30 dakika süreli bir cookie bırakıyor.

Biz sadece teşekkürler sayfasını gören kullanıcılara cookie bırakmak istediğimiz için kullanıcının bulunduğu URL’e göre Tag için kural tanımlaması yapıyoruz. Aşağıda işaretlenmiş alana teşekkürler sayfanızın URL’inde geçen ve diğer sayfaların URL’inde olmayan unique ifadeyi yazmalısınız.

adim2-3

Bu Tag ile oluşturduğumuz Cookie’nin değerini okumak için GTM makrosu kullanacağız.

New>Macro seçimi yapıyoruz. Açılan sayfada makro adını belirliyoruz -burada kolaylık olması açısından Cookie ile aynı ad tercih edildi-, Macro Type olarak 1st Party Cookie opsiyonunu seçiyoruz.
durum2-4

Artık farklı macrolarda {{trans}} ifadesini kullandığımızda trans Cookie’sinde yazan değeri elde edebileceğiz.

trans Cookie’si varken (ya da değeri ok iken şeklinde de düşünebiliriz) sitesource_now değişkenine kaynak değeri yazılmamalı. Bunun için sitesource_macro macrosundaki if kuralında aşağıdaki gibi bir değişiklik yapıyoruz.

Code

function ()
{
var count;
count = $(‘span.basketTotalNum’).html();

var trans;
trans = {{trans}};

if( count == ‘0’ && trans != ‘ok’ )
{


… kodun geri kalan kısmı Durum 1’deki gibi devam ediyor.

4. adımda datayı bozacak kuralları belirleyip gerekli düzenlemeleri yapmış olduk. Bir sonraki adım sitesource_now değişkeninde tuttuğumuz değerin Anaytics’te oluşturduğumuz Custom Dimension üzerine doğru şekilde yazılması olacak.


Adım 5: Analytics Koduna Custom Dimension’ın Eklenmesi
GTM üzerinden Universal Analytics kodunun nasıl eklendiğini gösteren videoyu ilk kısımda paylaşmıştık. O videodaki adımları uyguladıysanız tüm sayfalarda çalışan Pageview kodunu ve sadece teşekkürler sayfasında çalışan E-Commerce kodunu ayrı Tag’lerle eklemiş olmanız gerekiyor.

Custom Dimension’ı Pageview koduna ekleyeceğiz. Analytics Pageview kodu tüm sayfalarda çalıştığı için sitesource_macro’dan undefined sonucu da gelse Custom Dimension’ın üzerine yazacak. Bu engellemek için 2 adet pageview Tag’i oluşturuyoruz.

Tag’lerden biri sitesource_macro undefined sonucu verdiğinde çalışacak. Ve bu Tag’de Custom Dimension tanımlaması olmayacak. Tag’in adına Universal Analytics Page View – 1 diyebiliriz.

Tag’e eklediğimiz kural aşağıdaki gibi olacak. 2. satırda gördüğünüz kural (gtm.load), tag’in sayfa yüklendikten sonra çalışmasını sağlıyor. Datayı doğru almak açısından bu kuralı eklemeliyiz.
adim5

Tag’lerden diğerini ise sitesource_macro undefined dışında bir değer verdiğinde çalışacak şekilde ayarlıyoruz. Tag’in adına Universal Analytics Page View – 2 diyebiliriz.

Bu Tag’e Custom Dimension tanımı yapıyoruz. More settings >Custom Dimesions seçimini yaptıktan sonra Index kısmına Analytics hesabında Custom Dimension’ı oluşturduğumuz anda gördüğümüz indeks numarasını, Dimension kısmına ise kaynak bilgisini tuttuğumuz makronun adını yazıyoruz.

adim5-1
Tag’in kuralı aşağıdaki gibi olmalı.
adim5-3
Sonuç olarak şu an GTM containerımız üzerinde 3 adet analytics kodunun olması gerekiyor: 2 adet Pageview kodu, 1 adet de E-Commerce kodu. Pageview Tag’lerinin kurallarının kesişmemesi gerekenden fazla Pageview oluşmaması için oldukça önemli.


Adım 6: GTM Kontrolünün Yapılması ve Değişikliklerin Yayına Alınması
GTM ve Analytics üzerindeki tüm tanımlamaları bitirdik. Yapmamız gereken tek şey GTM değişikliklerini yayına almak. Bunun için öncelikle versiyon oluşturuyoruz.
adim6
Yeni versiyon oluşturduktan sonra Preview>Share adımlarını uyguluyoruz. Aşağıdaki pencerede verilen linke gittiğimizde değişiklikleri yayına almadan test etme imkanımız oluyor.
adim6-1
Bu link üzerinden siteye gittiğimizde sayfanın altında makroların ve Tag’lerin bulunduğumuz sayfada çalışıp çalışmadığını, hangi değeri sakladıklarını görmüş oluyoruz.
adim6-2
Analytics kodlarımıza gtm.load kriteri koyduğumuz için sol taraftan Page Load’u seçerek kontrol etmemiz daha uygun olacak.

Kontrollerimizi tamamladıktan sonra Publish butonuna tıklayıp değişiklikleri yayına alıyoruz.
Artık sitesource Custom Dimension’ını Analytics raporlarında kullanabileceğiz. Bu Custom Dimension en çok Conversion>E-commerce (Dönüşümler>E-ticaret) raporlarında ve Custom Report (Özel Raporlama) alanında işinize yarayacak.
Uyguladığımız adımları özetlersek;

GTM kurulumunun ve Universal Analytics kodununun GTM üzerinden eklenme işinin tamamlandığını varsayıyoruz.

Adım1: Analytics Hesabında Custom Dimension Tanımlamasının Yapılması
Adım2: URL Sonuna Eklenen Referansa Göre Kaynak Takibi
Adım3: Ürün Listeleme Sayfalarının Kaynak Takibi
Adım4: Datayı Bozacak Durumların Belirlenmesi ve Gerekli Kuralların Tanımlanması
Adım5: Analytics Koduna Custom Dimension’ın Eklenmesi
Adım6: GTM Kontrolünün Yapılması ve Değişikliklerin Yayına Alınması

Bu ölçümleme yönteminin çalışma sistemini düşündüğümüzde aklımızda bulundurmamız gereken 2 durum var:

Durum1: Müşteri sepetine birden fazla ürün attıysa sepete ilk atılan ürünün kaynağını siparişin kaynağı gibi değerlendiriyoruz. Bu durumda sepet kullanımının yani birden fazla ürünü aynı siparişte alma oranının yüksek olduğu sitelerde doğru sonuçtan uzaklaşmış oluyoruz.

Durum2: Müşteri sipariş verdikten sonra oturumu sonlandırmadan 30 dk içinde yeni bir sipariş daha verirse, yeni siparişin kaynağı olarak bir önceki siparişin kaynağını göreceksiniz. Ancak bu durumun gerçekleşme olasılığı çok düşük olacağından datayı bozmayacaktır.

Konuyla ilgili her türlü sorunuz için aşağıdaki e-mail adresine yazabilirsiniz.
konuk.berna[at]gmail.com

Yorum Yapın