Son yıllarda yazılım, bulut teknolojiler ve veri bilimi alanındaki hızlı gelişmeler sonrası online reklamcılık dünyası da büyük ölçüde bu değişime adapte olarak, yeni teknolojilerin büyük bir bölümünü reklam verenler için iş modellerinin tamamına yansıttı.
Bu hızlı değişimin takibi ve kabulüyle birlikte, ölçümleme ve hedefleme gibi dijital pazarlamanın kalbinde yer alan kilit noktaların katma değer çıtasının oldukça üst seviyelere çıktığını, ölçümlenebilir olmasının da etkisiyle reklam şirketleri ve endüstriler de kabul etmek durumunda kaldı.
Programmatic ve Remarketing (yeniden pazarlama) gibi özelliklerin dijital pazarlama dünyasına adım atmasıyla birlikte Marketing Mix ve kanallar arası pazarlama kurgularında büyük bir paradigma değişikliği yaşandığına tanıklık ettik.
Online reklamcılığın artık efektiflik nosyonları bakımından offline reklamcılıktan görece daha iyi performans göstermeye başladığı bir dönemin ortalarındayız.
Bu yazımızda bu farkındalığı ve algıyı kendimiz için de katma değere çevirmek adına, programatik dünyasının en önemli ürünlerinden, eski adıyla DoubleClick olan ve 2018’de yeni ismine kavuşan Display & Video 360 ile, Google Analytics (Free) segmentleri ile remarketing yapmanın limitlerini hack’lemeye çalışarak, mevcut reklamcılık modelimizde programatik ve remarketing teknolojilerinden daha fazla verim elde etmeye çalışacağız.

Display & Video 360 ve Google Analytics (Free) Remarketing Sorunu
Google Ads ve Google Marketing Platform‘da yer alan Google’a ait birçok reklam aracı, Google Analytics ürünleri ile native olarak entegre çalışabilmektedir.
Kampanya bilgileri ve metrikleri Google Analytics raporlarında kırılımlarla birlikte detaylı olarak monitör edilmektedir, kitlelerin davranış ve dönüşüm odaklı olarak analiz edilebilmesi için her platform için özel raporlar barınmaktadır.
Kendi ekosistemindeki ürünlerin compound olarak çalışabilmesi konusunda oldukça becerikli olan Google, reklam dünyasındaki bazı ürünler ve Google Analytics ücretsiz (free) hesaplarının bağlanması ve verilerin platformlar arası kullanılabilmesi konusunda limitler getirmiştir.

Ücretsiz Google Analytics hesaplarında Google Ads hesabı bağlantısı sonrası raporlar üzerinden kampanya ve performans verilerini görüntülümenin yanı sıra, segmentler ile remarketing listeleri oluşturup, Google Ads üzerinden hedefleme yapabilmek mümkün iken; ücretsiz (free) hesaplar için Display & Video 360 bağlantı özelliği kısıtlanmış olup, bu özellikler sadece Google Analytics 360‘a tahsis edilmiştir.
Google Analytics 360 kullanıcısı olmayan markalar için bu limiti zorlamak adına, localStorage teknolojisini ve Google Tag Manager‘ı kullanarak, DV360 platformu üzerinde Google Analytics segmentlerine denk koşul kümeleri barındıran tag tetikleyicileri kullanacağız.
Google Analytics Segmenti Nedir?

Google Analytics, web sitenizi veya mobil uygulamanızı ziyaret eden kullanıcılardan topladığı bilgileri kullanarak, kullanıcılarınızı sizin seçeceğiniz kurallara/şartlara (conditions) göre filtreleyip alt kümelere ayırabilme özelliğini sahiptir.

Bu kümeleri kullanarak kullanıcı verilerinizi kırılımlı olarak görüntüleyip detaylı analizler gerçekleştirebileceğiniz gibi, bu kitleleri yine Google’ın reklam platformlarında remarketing gerçekleştirmek üzere hedefleyebilirsiniz.

HTML5 Web Storage Teknolojisine Giriş
Web Storage teknolojisi; uygulama geliştiricilere kullanıcıların tarayıcılarında veri kaydetmeyi sağlayan bir web teknolojisidir. Cookie’lere oldukça benzeyen local storage, daha farklı özelliklere sahip olmakla birlikte iki türe ayrılmaktadır.
Bu makalede Google Analytics‘teki segmentlere muadil olan kullanıcı davranışlarını web storage’lar ile kaydederek, her hangi bir segmentin koşullarını karşılayacak bir kullanıcı davranışı kaydı gerçekleştiğinde, o segmente özel oluşturulmuş olan Display & Video 360 remarketing tag’lerini tetikleteceğiz.
Böylelikle Google Analytics (Free) ve Display & Video 360 arasındaki segment bazlı remarketing yapamama sorununu da alternatif yöntemlerle hack’lemiş olacağız.
Web Storage’ların Yapısı
Web Storage’lar çoğu modern tarayıcının desteklediği, tarayıcı bazlı veri depolama teknolojisidir. Cookie’lere oldukça benzeyen storage’lar, key (anahtar) ve value (değer) prensibiyle çalışmaktadır.
Cookie’ler 5 kilobyte’lık bir veri hazneleme kotasına sahipken, bu durum tarayıcıdan tarayıcıya farklılık göstermek üzere storage’lar için 40-50 megabyte aralığındadır. Cookie’ler veri okuma ve yazma işlemi sırasında HTTP protokolünü kullandığı için, storage’lar cookie’lere göre çok daha yüksek hızda veri okuma ve yazma yeteneğine sahiptir.
Tarayıcınızda yer alan web storage’ları, depolarını merak ettiğiniz web sayfalarını görüntülüyor iken, tarayıcınızın geliştirici araçları (developer tools) üzerinden inceleyebilirsiniz.

Web storage’lar localStorage ve sessionStorage olarak ikiye ayrılmaktadır.
localStorage Nesnesi ve Özellikleri
Local storage; web storage teknolojisinin 2 depolama seçeneğinden bir tanesidir, bu storage’a kaydedilen veriler, kullanıcılar kullandığı tarayıcıdaki tüm verileri silene kadar kayıtlı kalır, cookie’ler gibi bir zaman aşımı (expire) tarihi belirtilmesine gerek yoktur.
sessionStorage Nesnesi ve Özellikleri
Session storage; web storage teknolojisinin bir diğer depolama seçeneğidir, bu storage’da depolanan veriler, kullanıcı tarayıcısını kapattıktan sonra otomatik olarak silinir ve asla ulaşılamaz.
setItem() Fonksiyonu
Bu fonksiyon; storage’a key ve value eklememizi sağlayan fonksiyondur, 2 parametreden oluşmaktadır, ilk parametre key, ikinci parametre ise value‘yü temsil etmektedir.
//localStorage.setItem(parametre1: key, parametre2: value);
localStorage.setItem('adim', 'Murat');

getItem() Fonksiyonu
Bu fonksiyon; storage’daki mevcut verileri okumamızı sağlayan fonksiyondur, tek parametreden oluşmaktadır, değerini okumak istediğiniz satırın key bilgisini parametre olarak vermek yeterlidir.
//localStorage.getItem(parametre1: key);
localStorage.getItem('adim');
"Murat" //output
removeItem() Fonksiyonu
Bu fonksiyon; storage yer alan bir veri satırını silmemizi sağlayan fonksiyondur, tek parametreden oluşmaktadır, silmek istediğiniz satırın key bilgisini parametre olarak vermek yeterlidir.
//localStorage.removeItem(parametre1: key);
localStorage.removeItem('adim');
clear() Fonksiyonu
Bu fonksiyon; storage’daki tüm verileri silen ve depolama alanını temizleyen fonksiyondur, parametresi yoktur.
localStorage.clear();
Gizlilik
Web storage teknolojisi, storage’lardaki verileri o veriyi ekleme işlemini gerçekleştiren JavaScript komutunun bulunduğu domain (alan adı) ile ilişkilendirir, dolayısıyla tarayıcıların her domain için hem session hem de local olmak üzere onlara farklı storage alanları açtığını söyleyebiliriz.
Bu domain’lere özel atanmış storage’lar, asla bir başka domain’in storage’ıyla iç içe yer almaz.
Farklı bir domainden gelen storage okuma niyetli JavaScript komutu, kendi çalıştığı domain’inkinden farklı bir domain’in storage’ındaki bilgilere erişemez.
Web Storage ve Cross-domain Sorunu
Web storage’lar domainlere ve protokollere (http, https) özel olarak yaratılan depolama alanları olduğu için, domainler arası erişime kapalıdır.
domain.com üzerinde oluşturmuş olduğunuz storage verilerine subdomain.domain.com alt alan adı üzerinden erişemezsiniz.
Aynı durum protokoller için de geçerlidir, http://domain.com’a ait storage verilerine https://domain.com üzerinden erişilememektedir.
Bu durumun, storage’ların cookie’lere karşı bilinen tek dezavantajı olduğunu söyleyebiliriz.
Local Storage İle Segment Kurallarının (Davranışlar) Tarayıcı Üzerinde Depolanması
Web storage’larla ilgili temel bilgileri işledik, şimdi ihtiyacımız olan kullanıcı davranışlarını storage’lara kaydederek, depolarda birikecek olan kullanıcı hareketleri üzerinden, istediğimiz segmentin koşullarına denk gelecek bir kullanıcı hareketi birikimi gerçekleşip gerçekleşmediğini kontrol edip, gerçekleştiği durumda segmentlerimiz için özel oluşturacağımız DV360 remarketing tag’lerinin tetiklenmesi için gerekli mimariyi oluşturacağız.
Google Analytics’e gönderilen kullanıcı ve davranış verilerini JavaScript ile sessionStorage nesnesine kaydedeceğiz.
Bu makalede örnek olması açısından bounce etmemiş oturum sahipleri ve organik kanaldan gelen kullanıcıların Display & Video 360 üzerinde remarketing ile hedeflenebilmesini inceleyeceğiz.
Kullanıcıların bounce edip etmediği bilgisini anlamak adına, sayfa gösterimlerini sessionStorage nesnesine kaydedeceğiz, organik trafik için ise biraz daha farklı bir method kullanacağız.
Aşağıdaki setNewStorageData()
fonksiyonu, her sayfa gösterimiyle birlikte çalışarak, siteye ilk defa giren kullanıcılar için bir storage oluşturmayı amaçlamaktadır.
True değerini alan pp_data_client_storage
key’ini, daha sonraki fonksiyonlarda kullanıcının storage’ı olup olmadığını kontrol etmek için kullanacağız, kullanıcı ilk defa sayfa görüntülemiş olduğu için pp_data_client_pv
parametresine 1 değerini atıyoruz.
// Set New Storage Data with Page View
function setNewStorageData() {
sessionStorage.setItem('pp_data_client_storage', 'true');
sessionStorage.setItem('pp_data_client_pv', 1);
return true;
}
Aşağıdaki setCurrentStorageData()
fonksiyonu, ilerleyen bölümde kullanıcının mevcutta storage verisi olup olmadığını ve sayfa görüntüleyip görüntülemediğini kontrol edeceğimiz bölümde, daha önce sitedeki bir sayfayı görüntülemiş ve storage’da verisi yer alan kullanıcılar için çalıştırılacaktır.
Fonksiyon içinde yer alan getCurrentPv
değişkenine kullanıcının geçmişteki sayfa görüntüleme sayısını atıyoruz, daha sonra session bazlı storage’daki pp_data_client_pv
key’imize, getCurrentPv
değişkeninin aldığı değerin 1 fazlasını atıyoruz, çünkü kullanıcı 1 sayfa daha görüntülemiş oldu ve bunu da her sayfa gösteriminde storage’a kaydetmemiz gerekiyor.
// Set Current Storage Data with Page View
function setCurrentStorageData() {
var getCurrentPv = parseInt(sessionStorage.getItem('pp_data_client_pv'));
sessionStorage.setItem('pp_data_client_pv', (getCurrentPv + 1));
return true;
}
Aşağıdaki runTriggers()
çatı fonksiyonu içinde, her bir segmente özel trigger fonksiyonları yer almaktadır.
// Triggers
function runTriggers() {
// Setup Trigger #1: NonBounce Sessions
var segment_nonBounce = function() {
if (sessionStorage.getItem('pp_data_client_pv') > 1) {
dataLayer.push({'event':'nonBounce'});
}
}
// Setup Trigger #2: Sessions from Organic Channel
var segment_orgChannel = function() {
var urlParams = new URLSearchParams(window.location.search);
var gclid = urlParams.get('gclid'); //for Google Ads
var dsrl = urlParams.get('ds_rl'); //for Google Search 360 (formerly DoubleClick Search)
var referrer = document.referrer;
if (referrer.indexOf('google') > -1 && gclid == null && dsrl == null) {
dataLayer.push({'event':'organicSession'});
}
}
segment_nonBounce();
segment_orgChannel();
}
segment_nonBounce() Fonksiyonu: Bounce Etmemiş Kullanıcılar
Bu fonksiyon içindeki kontrol gövdesi (if statement), storage verisini okuyarak, kullanıcının aynı oturumda 1’den fazla sayfa görüntülediği durumlarda, Google Tag Manager‘da dataLayer
aracılığı ile custom event tetikleterek, bounce etmemiş oturumlarda Display & Video 360 remarketing tag’i tetikletmemizi sağlayacaktır.
segment_orgChannel() Fonksiyonu: Organik Kanaldan Gelen Kullanıcılar
Bu fonksiyon, kullanıcıyı siteye yönlendiren kaynağı kontrol ederek, yönlendiren kaynağın “google” kelimesini barındırması durumunda, tıpkı yukarıdaki fonksiyonda olduğu gibi Google Tag Manager‘a gönderilecek bir custom event üzerinden remarketing tag’i tetikletecek olan fonksiyondur.
Fonksiyonun karar gövdesi document.referrer
nesnesi üzerinden kullanıcıyı sayfaya yönlendiren kaynağı sorgular, kaynağın Google olduğu durumlarda fonksiyon custom event tetikletecektir. Fakat kullanıcının Google üzerinden tıklamış olduğu linkin, organik sonuçlara mı yoksa arama motoru reklamına mı ait olduğunu ayrıştırmak da önemli.
Bunun için arama motoru reklamlarının reklam bağlantısı URL’inin sonuna eklediği gclid
(Google Click ID) veya ds_rl
parametrelerini kontrol etmekteyiz. Eğer kullanıcıyı sayfaya yönlendiren kaynak Google ise ve görüntülenen URL’de belirtilen parametreler yok ise, sayfanın organik (reklam olmayan) bir linkten yönlendirildiğine karar vermiş oluruz.
Siz de Google arama sonuçlarından bir web sitesini görüntüleyip, tarayıcı konsolunuzda aşağıdaki JavaScript komutunu çalıştırarak, yönlendirme kaynağını kontrol edebilirsiniz.
document.referrer //query
"https://www.google.com" //output
segment_nonBounce() Fonksiyonu: Bounce Etmemiş Kullanıcılar
Aşağıdaki storageStatus()
fonksiyonu, karar gövdesi içerisinde storage kaydı bulunmayan yeni kullanıcılar için setNewStorageData()
fonksiyonunu, storage kaydı bulunan kullanıcılar için ise sayfa gösterimi sayısını kaydeden setCurrentStorageData()
fonksiyonunu barındıran ve duruma göre çalıştıran ana fonksiyondur.
// Main Function
function storageStatus() {
var check = sessionStorage.getItem('pp_data_client_storage');
if (check == 'true') {
setCurrentStorageData();
runTriggers();
return true;
} else {
setNewStorageData();
runTriggers();
return false;
}
}
// Initialize
storageStatus();
Yukarıdaki tüm kod blokları Google Tag Manager‘da tek bir tag (custom html) üzerinde All Pages trigger’ında tetiklenecek şekilde eklenmelidir.
Daha sonra custom event üzerinden trigger oluşturmak amacıyla tetiklenen nonBounce
ve organicSession
dataLayer event’leri trigger olarak eklenerek, ilgili segment için oluşturulan remarketing tag’lerinin trigger’ı olarak eklenmelidir.

Kapanış Notları
Storage teknolojisi ve kullanıcı davranışlarının depolara kaydedilmesiyle birlikte, normal şartlarda segment üzerinden gerçekleştirebileceğiniz çoğu remarketing kurgusunu bu yöntem ile gerçekleştirebilirsiniz.
E-ticaret siteleri için kullanıcılara ait ürün/sepet ve ödeme ile alakalı tüm işlemleri localStorage
üzerine kaydederek, güçlü ve dinamik e-ticaret remarketing senaryoları gerçekleştirebilirsiniz. İşlemlerin ve oturumların zaman bilgisini de storage’lar üzerinde kaydetmek, tarih özelinde yapılacak olan remarketing kurguları için karar gövdesi oluştururken oldukça faydalı olacaktır.
Google Analytics, demografi ve lokasyon özelindeki etiketlemeleri kullanıcılardan topladığı veriler doğrultusunda daha sonra sunucuda işleyerek gerçekleştirdiği için, demografi ve lokasyon özelindeki segmentleri bu yöntem ile hedefleyebilmek şu an için oldukça zor, fakat CRM verinizi dinamik olarak site alt yapınıza bağlayıp, bu veriler üzerinden dataLayer
vasıtasıyla Google Tag Manager‘a göndereceğiniz variable ve event’ler ile, daha efektif remarketing senaryoları da kurgulayabilirsiniz.
Gerisini hayal gücünüze bırakıyorum.
Yazı ile ilgili sorularınız veya danışmanlık talepleriniz için LinkedIn üzerinden iletişime geçebilirsiniz.
Sonraki yazıda görüşmek üzere.