Web alanları arası ölçüm

Bu kılavuzda, analytics.js kullanarak birden fazla alan genelinde etkinliklerin nasıl ölçüleceği açıklanmaktadır.

Genel bakış

analytics.js kitaplığı, bir kullanıcının yeni mi yoksa geri gelen bir kullanıcı mı olduğunu belirlemek için benzersiz bir istemci kimliği kullanır. Eşleşen bir istemci kimliğine sahip bir isabet daha önce aynı mülke gönderilmişse kullanıcı, geri gelen kullanıcı olarak kabul edilir.

Varsayılan olarak, istemci kimliği tarayıcının çerezlerinde depolanır, yani yalnızca aynı alan adındaki sayfalar bu kimliklere erişebilir. Farklı alanlarda belirli bir kullanıcının aynı Client ID'sini izlemek için web alanları arası izlemeyi kullanın.

Alanlar arasında bir istemci kimliği paylaşmak için istemci kimliğini mevcut alandan (kaynak alan) ölçmek istediğiniz hedef alan adına yönlendiren URL'lere sorgu parametresi olarak ekleyebilirsiniz. Kullanıcı bir bağlantıyı tıkladığında veya kaynak alanda bir form gönderip hedef alana gittiğinde, hedef sayfadaki kod, URL'den okuyarak istemci kimliğine erişebilir.

Kaynak alandan Client-ID'yi alma

Kaynak alandan Client-ID almak için get yöntemi kullanılır:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

Kaynak alanda istemci kimliğiniz olduğunda, bu kimliği hedef alan adına işaret eden bağlantılara ekleyebilirsiniz.

<a href="https://destination.com/?clientId=XXXXXX">destination.com</a>

Hedef alanda istemci kimliğini ayarlama

create komutunda client ID alanını belirterek hedef alandaki bir izleyici nesnesine hangi istemci kimliğinin kullanılacağını bildirebilirsiniz:

ga('create', 'UA-XXXXX-Y', 'auto', {
  'clientId': getClientIdFromUrl()
});

Hedef alanda zaten bir istemci kimliği varsa bu yöntem, ilgili istemcinin üzerine yazar.

URL paylaşımını algılama

Bir URL'de istemci kimliğinin aktarılmasıyla ilgili olası bir sorun, kullanıcıların URL'leri paylaşması ve bir kullanıcının başka birine ait bir istemci kimliği içeren URL'yi paylaşma olasılığıdır.

Bu sorunu önlemenin yollarından biri, istemci kimliğine zaman damgası eklemektir. Bu sayede, URL'nin başlangıçta ne zaman oluşturulduğunu ve çok fazla zaman geçerse istemci kimliğinin geçersiz olduğunu düşünebilirsiniz. Zaman damgasına ek olarak, kullanıcı aracısı dizesini veya başka bir tarayıcıya ya da cihaza özgü meta verileri ekleyebilirsiniz. Böylece hedef alanda meta veriler eşleşmezse istemci kimliğinin başka bir kişiye ait olduğunu anlarsınız.

Kendine yönlendirmeleri yoksayma

Bir sayfanın doküman yönlendireni, mülkünüzün Yönlendirme Hariç Tutma listesindeki girişlerin hiçbiriyle eşleşmeyen bir ana makine adından geldiğinde yeni bir tavsiye kampanyası oluşturulur.

Varsayılan olarak, Yönlendirme Hariç Tutma listesi yalnızca mülk ilk oluşturulduğunda sağladığınız alanı içerir. Kullanıcılar alanlar arasında gezindiğinde yeni tavsiye kampanyalarının oluşturulmasını önlemek amacıyla, ölçmek istediğiniz her alan için Yönlendirme Hariç Tutma listesine bir giriş eklemeniz gerekir.

iFrame

Yukarıda açıklanan teknik, analytics.js yüklendikten sonra çalışan JavaScript kodu gerektirir. <iframe> öğeleri genellikle analytics.js yüklenmeden önce sayfada bulunduğundan, istemci kimliğini iframe'in kaynak parametresindeki URL'ye eklemek genellikle bir seçenek değildir.

Bu sorunu çözmek için iframe'in içindeki sayfayı, izleyicinin oluşturulmasını üst sayfadan istemci kimliği verilerini alana kadar geciktirecek şekilde yapılandırabilirsiniz. Üst sayfada, istemci kimliğini postMessage kullanarak iframe sayfasına gönderecek şekilde yapılandıracaksınız.

source.com üzerindeki üst sayfa kodunun bir örneğini burada bulabilirsiniz:

<iframe id="destination-frame" src="https://destination.com"></iframe>

<script>
ga('create', 'UA-XXXXX-Y', 'auto');
ga(function(tracker) {
  // Gets the client ID of the default tracker.
  var clientId = tracker.get('clientId');

  // Gets a reference to the window object of the destionation iframe.
  var frameWindow = document.getElementById('destination-frame').contentWindow;

  // Sends the client ID to the window inside the destination frame.
  frameWindow.postMessage(clientId, 'https://destination.com');
});
</script>

destination.com üzerinde barındırılan iframe'de mesajı alacak kodu da burada görebilirsiniz:

window.addEventListener('message', function(event) {
  // Ignores messages from untrusted domains.
  if (event.origin != 'https://destination.com') return;

  ga('create', 'UA-XXXXX-Y', 'auto', {
    clientId: event.data
  });
});

analytics.js üst sayfada yüklenemeyebilir ve ardından iframe'deki sayfa hiçbir zaman istemci kimliğini almayabilir. Bu destek kaydını nasıl ele alacağınız, müşteri kimliklerinin eşleşmesinin ne kadar önemli olduğuna bağlıdır.

Yalnızca istemci kimliklerinin aynı olduğunu bildiğinizde veri yakalamak istiyorsanız yukarıdaki kod yeterlidir. Üst sayfadan istemci kimliğini alıp almamasından bağımsız olarak çerçevedeki sayfadaki verileri yakalamak istiyorsanız yedek eklemeniz gerekir.

Aşağıdaki kod, üst sayfanın yavaş olduğu veya istemci kimliğini gönderemediği durumları işlemek için iframe'deki sayfada bir zaman aşımı süresi kullanır:

// Stores whether or not the tracker has been created.
var trackerCreated = false;

function createTracker(opt_clientId) {
  if (!trackerCreated) {
    var fields = {};
    if (opt_clientId) {
      fields.clientId = opt_clientId;
    }

    ga('create', 'UA-XXXXX-Y', 'auto', fields);
    trackerCreated = true;
  }
}


window.addEventListener('message', function(event) {
  // Ignores messages from untrusted domains.
  if (event.origin != 'https://destination.com') return;

  // Creates the tracker with the data from the parent page.
  createTracker(event.data);
});


// Waits for three seconds to receive the client ID from the parent page.
// If that doesn't happen, it creates the tracker as normal.
setTimeout(createTracker, 3000);