کوکی ها و شناسایی کاربر

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

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

به طور پیش‌فرض، analytics.js از یک کوکی شخص اول به نام _ga برای ذخیره شناسه مشتری استفاده می‌کند، اما نام، دامنه و زمان انقضای کوکی را می‌توان سفارشی کرد. سایر کوکی‌های ایجاد شده توسط analytics.js عبارتند از _gid ، AMP_TOKEN و _gac_<property-id> . این کوکی‌ها سایر شناسه‌ها و اطلاعات کمپین را که به‌طور تصادفی تولید شده‌اند در مورد کاربر ذخیره می‌کنند.

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

این راهنما نحوه سفارشی کردن تنظیمات کوکی و همچنین نحوه تنظیم فیلد شناسه کاربری برای اندازه‌گیری دقیق‌تر فعالیت کاربر در جلسات را توضیح می‌دهد.

جدول زیر مقادیر فیلد کوکی پیش فرض استفاده شده توسط analytics.js را نشان می دهد:

نام زمینه نوع ارزش مقدار پیش فرض
cookieName متن _ga
cookieDomain متن نتیجه عبارت جاوا اسکریپت زیر:
document.location.hostname
cookieExpires عدد صحیح 63072000 (دو سال، در ثانیه)
cookieUpdate بولی true
cookieFlags متن

برای تغییر هر یک از این مقادیر، می‌توانید آن‌ها را در fieldObject که دستور create ارسال می‌کنید، مشخص کنید. مثلا:

ga('create', 'UA-XXXXX-Y', {
  'cookieName': 'gaCookie',
  'cookieDomain': 'blog.example.co.uk',
  'cookieExpires': 60 * 60 * 24 * 28  // Time in seconds.
  'cookieUpdate': 'false',
  'cookieFlags': 'SameSite=None; Secure',
});

رایج ترین فیلد کوکی برای تنظیم، cookieDomain است، به این ترتیب، دستور create فیلد cookieDomain را به عنوان پارامتر سوم اختیاری برای راحتی می پذیرد:

ga('create', 'UA-XXXXX-Y', 'blog.example.co.uk');

تگ توصیه شده Google Analytics رشته 'auto' را برای قسمت cookieDomain تنظیم می کند:

ga('create', 'UA-XXXXX-Y', 'auto');

تعیین 'auto' به‌عنوان cookieDomain پیکربندی خودکار دامنه کوکی را فعال می‌کند، که به analytics.js می‌گوید به‌طور خودکار بهترین دامنه کوکی مورد استفاده را تعیین کند.

پیکربندی خودکار دامنه کوکی، کوکی _ga را در بالاترین سطح دامنه ای که می تواند تنظیم می کند. برای مثال، اگر آدرس وب‌سایت شما blog.example.co.uk باشد، analytics.js دامنه کوکی را روی .example.co.uk تنظیم می‌کند. علاوه بر این، اگر analytics.js تشخیص دهد که شما یک سرور را به صورت محلی اجرا می کنید (مثلاً localhost )، به طور خودکار cookieDomain را روی 'none' تنظیم می کند.

هر بار که ضربه ای به Google Analytics ارسال می شود، زمان انقضای کوکی به روز می شود تا زمان فعلی به اضافه مقدار فیلد cookieExpires شود. این به این معنی است که اگر از زمان پیش‌فرض cookieExpires دو ساله استفاده کنید و کاربر هر ماه از سایت شما بازدید کند، کوکی او هرگز منقضی نمی‌شود.

اگر cookieExpires را روی 0 (صفر) ثانیه تنظیم کنید، کوکی به یک کوکی مبتنی بر جلسه تبدیل می‌شود و پس از پایان جلسه مرورگر فعلی منقضی می‌شود:

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

وقتی روی false تنظیم شود، کوکی ها در هر بار بارگذاری صفحه به روز نمی شوند. این تأثیر منقضی شدن کوکی ها نسبت به اولین باری است که کاربر از سایت بازدید می کند.

هنگام تنظیم، پرچم های اضافی را به کوکی اضافه می کند. پرچم ها باید با نقطه ویرگول از هم جدا شوند.

شما نباید مستقیماً به مجموعه‌های کوکی analytics.js دسترسی داشته باشید، زیرا ممکن است قالب کوکی در آینده تغییر کند. در عوض، توسعه‌دهندگان باید از readyCallback استفاده کنند تا صبر کنند تا analytics.js بارگیری شود و سپس مقدار clientId ذخیره شده در ردیاب را دریافت کنند.

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

غیرفعال کردن کوکی ها

در برخی موارد ممکن است بخواهید از مکانیسم ذخیره سازی خود (مانند localStorage یا Service Worker ) برای حفظ شناسه مشتری در تمام جلسات بدون استفاده از کوکی ها استفاده کنید. می‌توانید با تنظیم فیلد storage روی 'none' analytics.js را از تنظیم کوکی‌ها غیرفعال کنید.

ga('create', 'UA-XXXXX-Y', {
  'storage': 'none'
});

اگر خودتان فیلد clientId را ذخیره می کنید، باید هنگام ایجاد ردیاب مطمئن شوید که فیلد cliendId را تنظیم کرده اید.

ga('create', 'UA-XXXXX-Y', {
  'storage': 'none',
  'clientId': '76c24efd-ec42-492a-92df-c62cfd4540a3'
});

برای غیرفعال کردن کوکی های _gac_<property-id> ، فیلد storeGac را در دستور create روی false قرار دهید:

ga('create', 'UA-XXXXX-Y', {
  storeGac: false,
});

استفاده از localStorage برای ذخیره شناسه مشتری

نمونه کد زیر نشان می دهد که چگونه می توانید تگ جاوا اسکریپت را برای استفاده از localStorage برای ذخیره شناسه مشتری به جای کوکی ها تغییر دهید:

var GA_LOCAL_STORAGE_KEY = 'ga:clientId';

if (window.localStorage) {
  ga('create', 'UA-XXXXX-Y', {
    'storage': 'none',
    'clientId': localStorage.getItem(GA_LOCAL_STORAGE_KEY)
  });
  ga(function(tracker) {
    localStorage.setItem(GA_LOCAL_STORAGE_KEY, tracker.get('clientId'));
  });
}
else {
  ga('create', 'UA-XXXXX-Y', 'auto');
}

ga('send', 'pageview');

شناسه کاربر

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

برای پیاده سازی User ID با analytics.js:

  1. شناسه رشته منحصر به فرد، دائمی و غیرشخصی خود را برای نمایش هر کاربر وارد شده ارائه دهید. این شناسه اغلب توسط یک سیستم احراز هویت ارائه می شود.
  2. شناسه کاربری را روی ردیاب تنظیم کنید:
ga('create', 'UA-XXXXX-Y', 'auto', {
  userId: USER_ID
});
ga('send', 'pageview');

رسیدگی به احراز هویت پس از بارگیری صفحه

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

در چنین مواردی، می‌توانید از دستور set برای تنظیم مقدار روی ردیاب به محض مشخص شدن استفاده کنید.

// Creates the tracker and sends a pageview as normal
// since the `userId` value is not yet known.
ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');

// At a later time, once the `userId` value is known,
// sets the value on the tracker.
ga('set', 'userId', USER_ID);

// Setting the userId doesn't send data to Google Analytics.
// You must also use a pageview or event to send the data.
ga('send', 'event', 'authentication', 'user-id available');

هنگام استفاده از این رویکرد، بازدیدهایی که قبل از تنظیم فیلد userId ارسال می‌شوند، حاوی مقادیر شناسه کاربر نیستند. با این حال، از طریق فرآیندی به نام Unification Session ، Google Analytics قادر است این بازدیدها را با کاربر صحیح در زمان پردازش مرتبط کند.