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 mi 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 ve bu, yalnızca aynı alandaki sayfalar tarafından erişilebileceği anlamına gelir. Belirli bir kullanıcının aynı Client-ID'sini farklı alanlarda 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 alanda istemci kimliğini 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, bunu 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 bunun ü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 bir yolu, istemci kimliğine zaman damgası eklemektir. Bu sayede, URL'nin ilk oluşturulduğu tarihi 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 diğer tarayıcıya ya da cihaza özel meta verileri ekleyebilirsiniz. Hedef alan adında 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 yönlendirme 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'ler

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

Bu sorunu çözmek için iframe içindeki sayfayı, istemci kimliği verilerini üst sayfadan alana kadar izleyicinin oluşturulmasını 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 alan adındaki üst sayfa kodu ö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 olan kod şudur:

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üklenmez ve iframe'deki sayfa hiçbir zaman istemci kimliğini almayabilir. Bu destek kaydını ele alma şekliniz, müşteri kimliklerinin eşleşmesinin ne kadar önemli olduğuna bağlıdır.

Yalnızca istemci kimliklerinin aynı olduğunu bildiğiniz durumlarda 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 bir 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 zaman aşımını kullanmaktadı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);