اندازه گیری متقابل دامنه

این راهنما نحوه اندازه‌گیری رویدادها را در چندین دامنه با استفاده از analytics.js شرح می‌دهد.

بررسی اجمالی

کتابخانه analytics.js از یک شناسه مشتری منحصر به فرد برای تعیین اینکه کاربر جدید است یا بازگشته استفاده می کند. در صورتی که بازدیدی با شناسه مشتری منطبق قبلاً به همان ویژگی ارسال شده باشد، کاربر بازگشتی در نظر گرفته می شود.

به طور پیش‌فرض، شناسه مشتری در کوکی‌های مرورگر ذخیره می‌شود، به این معنی که تنها توسط صفحاتی در همان دامنه قابل دسترسی است. برای ردیابی همان Client ID برای یک کاربر معین در دامنه های مختلف، از ردیابی متقابل دامنه استفاده کنید.

برای به اشتراک گذاشتن شناسه مشتری در میان دامنه‌ها، می‌توانید آن را به‌عنوان پارامتر پرس و جو به URL‌هایی اضافه کنید که از دامنه فعلی (دامنه مبدا) به دامنه مقصدی که می‌خواهید اندازه‌گیری کنید، اشاره می‌کنند. هنگامی که کاربر روی پیوندی کلیک می کند یا فرمی را در دامنه مبدا ارسال می کند و به دامنه مقصد می رود، کد موجود در صفحه مقصد می تواند با خواندن آن از URL به شناسه مشتری دسترسی پیدا کند.

دریافت شناسه مشتری در دامنه منبع

برای بازیابی شناسه مشتری در دامنه منبع، از روش get استفاده می کنید:

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

هنگامی که شناسه مشتری را در دامنه مبدا دارید، می توانید آن را به پیوندهایی که به دامنه مقصد اشاره می کنند اضافه کنید.

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

تنظیم شناسه مشتری در دامنه مقصد

با مشخص کردن فیلد شناسه مشتری در دستور create ، می‌توانید به یک شی ردیاب در دامنه مقصد بگویید که از چه شناسه مشتری استفاده کند:

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

اگر شناسه مشتری از قبل در دامنه مقصد وجود داشته باشد، این روش آن را بازنویسی می کند.

تشخیص اشتراک گذاری URL

یک مشکل بالقوه در انتقال شناسه مشتری در یک URL این است که کاربران URL ها را به اشتراک می گذارند و ممکن است کاربر URLی را که حاوی شناسه مشتری متعلق به شخص دیگری است به اشتراک بگذارد.

یکی از راه‌های جلوگیری از این مشکل، اضافه کردن یک برچسب زمانی به شناسه مشتری است. این به شما امکان می دهد تشخیص دهید که چه زمانی URL در ابتدا ایجاد شده است، و اگر زمان زیادی گذشته است، شناسه مشتری را نامعتبر در نظر بگیرید. علاوه بر مهر زمانی، می‌توانید رشته عامل کاربر یا سایر ابرداده‌های مرورگر یا دستگاه خاص را اضافه کنید. سپس در دامنه مقصد، اگر ابرداده مطابقت نداشته باشد، می‌دانید که شناسه مشتری از شخص دیگری منشا گرفته است.

نادیده گرفتن خود ارجاعات

هر زمان که ارجاع دهنده سند یک صفحه از نام میزبانی که با هیچ یک از ورودی های فهرست حذف ارجاع برای دارایی شما مطابقت ندارد، یک کمپین ارجاع جدید ایجاد می شود.

به‌طور پیش‌فرض، فهرست حذف ارجاع فقط شامل دامنه‌ای است که هنگام ایجاد ویژگی برای اولین بار ارائه کرده‌اید. برای جلوگیری از ایجاد کمپین‌های ارجاع جدید هنگام پیمایش کاربران در دامنه‌ها، باید برای هر دامنه‌ای که می‌خواهید اندازه‌گیری کنید، یک ورودی در فهرست حذف ارجاع اضافه کنید.

آی فریم ها

تکنیک توضیح داده شده در بالا به کد جاوا اسکریپت نیاز دارد که پس از بارگیری analytics.js اجرا شود. از آنجایی که عناصر <iframe> معمولاً قبل از بارگیری analytics.js در صفحه وجود دارند، الحاق شناسه مشتری به URL در پارامتر منبع iframe اغلب یک گزینه نیست.

برای حل این مشکل می توانید صفحه داخل iframe را طوری پیکربندی کنید که ایجاد ردیاب آن را تا زمانی که اطلاعات شناسه مشتری را از صفحه اصلی دریافت کند به تاخیر بیاندازد. و در صفحه والد آن را طوری پیکربندی می‌کنید که شناسه مشتری را با استفاده از postMessage به صفحه iframe ارسال کند.

در اینجا نمونه ای از کد صفحه والد در source.com آمده است:

<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>

و در اینجا کدی است که پیام را در iframe میزبانی شده در destination.com دریافت می کند:

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 در صفحه والد بارگیری نشود و سپس صفحه موجود در iframe هرگز شناسه مشتری را دریافت نکند. نحوه رسیدگی به این پرونده به میزان اهمیت تطابق شناسه های مشتری بستگی دارد.

اگر فقط زمانی می خواهید داده ها را ضبط کنید که می دانید شناسه های مشتری یکسان هستند، کد بالا کافی است. اگر می‌خواهید بدون توجه به اینکه آیا شناسه مشتری را از صفحه اصلی دریافت می‌کند، داده‌ها را روی صفحه در قاب ضبط کنید، باید یک نسخه بازگشتی اضافه کنید.

کد زیر از یک مهلت زمانی در صفحه در iframe استفاده می کند تا مواردی را که صفحه والد کند است یا شناسه مشتری را ارسال نمی کند، رسیدگی کند:

// 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);