קובצי cookie וזיהוי משתמשים

על מנת ש-Google Analytics יוכל לקבוע ששתי התאמות ייחודיות שייכות לאותו משתמש, יש לשלוח מזהה ייחודי המשויך לאותו משתמש מסוים עם כל התאמה.

ספריית analytics.js עושה זאת באמצעות השדה Client ID – מחרוזת ייחודית שנוצרת באופן אקראי, שנשמרת בקובצי ה-cookie של הדפדפן, כך שניתן לשייך ביקורים עתידיים באותו אתר לאותו משתמש.

כברירת מחדל, ב-analytics.js נעשה שימוש בקובץ cookie יחיד מהדומיין הנוכחי בשם _ga כדי לאחסן את מזהה הלקוח, אבל ניתן להתאים אישית את השם, הדומיין ושעת התפוגה של קובץ ה-cookie. קובצי cookie אחרים שנוצרו על ידי analytics.js כוללים את _gid, AMP_TOKEN ואת _gac_<property-id>. קובצי ה-cookie האלה מאחסנים מזהים ופרטי קמפיין אחרים שנוצרים באופן אקראי לגבי המשתמש.

השימוש בקובצי cookie מאפשר ל-analytics.js לזהות משתמשים ייחודיים בהפעלות גלישה שונות, אבל הוא לא יכול לזהות משתמשים ייחודיים בדפדפנים או במכשירים שונים. אם לאתר שלכם יש מערכת אימות משלו, אפשר להשתמש בתכונה User ID, בנוסף ל-Client-ID, כדי לזהות משתמש בצורה מדויקת יותר בכל המכשירים שבהם הוא משתמש כדי לגשת לאתר.

במדריך הזה מוסבר איך להתאים אישית את הגדרות קובצי ה-cookie ואיך להגדיר את השדה User-ID כדי למדוד בצורה מדויקת יותר את פעילות המשתמש בסשנים שונים.

בטבלה הבאה מוצגים ערכי ברירת המחדל של השדות של קובצי ה-cookie שמשמשים את analytics.js:

שם השדה סוג הערך ערך ברירת המחדל
cookieName טקסט _ga
cookieDomain טקסט התוצאה של ביטוי ה-JavaScript הבא:
document.location.hostname
cookieExpires מספר שלם 63072000 (שנתיים, בשניות)
cookieUpdate boolean 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',
});

שדה קובצי ה-cookie הנפוץ ביותר להגדרה הוא cookieDomain, ולכן הפקודה create מקבלת את השדה cookieDomain כפרמטר שלישי אופציונלי מבחינת נוחות:

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

התג המומלץ של Google Analytics מגדיר את המחרוזת 'auto' בשדה cookieDomain:

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

ציון של 'auto' בתור cookieDomain מאפשר הגדרה אוטומטית של דומיין קובצי ה-cookie, וכך מורה ל-analytics.js לקבוע באופן אוטומטי את דומיין קובצי ה-cookie שבו יש להשתמש.

הגדרה אוטומטית של דומיין קובצי ה-cookie מגדירה את קובץ ה-cookie של _ga בדומיין ברמה הגבוהה ביותר שאפשר. לדוגמה, אם כתובת האתר היא blog.example.co.uk, analytics.js יגדיר את הדומיין של קובצי ה-cookie ל-.example.co.uk. בנוסף, אם analytics.js מזהה שהפעלת שרת באופן מקומי (למשל localhost), הוא מגדיר באופן אוטומטי את cookieDomain לערך 'none'.

בכל פעם שהיט נשלח אל Google Analytics, זמן התפוגה של קובץ ה-cookie מתעדכן לזמן הנוכחי וגם לערך בשדה cookieExpires. כלומר, אם משתמשים בתאריך ברירת המחדל של cookieExpires של שנתיים, ומשתמש מבקר באתר בכל חודש, התוקף של קובץ ה-cookie שלו לא יפוג אף פעם.

במקרה שמגדירים את הזמן של cookieExpires ל-0 (אפס) שניות, קובץ ה-cookie הופך לקובץ cookie שמבוסס על סשן, והתוקף שלו פג כשהסשן הנוכחי בדפדפן מסתיים:

כאשר cookieUpdate מוגדר ל-true (ערך ברירת המחדל), קובץ analytics.js יעדכן את קובצי ה-cookie בכל טעינת דף. הפעולה הזו תעדכן את תאריך התפוגה של קובצי ה-cookie כך שיוגדר ביחס לביקור האחרון באתר. לדוגמה, אם התוקף של קובץ ה-cookie מוגדר לשבוע אחד, ומשתמש מבקר באתר באמצעות אותו דפדפן פעם בחמישה ימים, תאריך התפוגה של קובץ ה-cookie יתעדכן בכל ביקור, כך שהתוקף שלו לא יפוג אף פעם.

כשמגדירים את הערך false, קובצי ה-cookie לא מתעדכנים בכל טעינת דף. במצב כזה, תאריך התפוגה של קובצי ה-cookie הוא יחסי לביקור הראשון של משתמש כלשהו באתר.

מצרף סימונים נוספים לקובץ ה-cookie לאחר הגדרתו. הדגלים צריכים להיות מופרדים באמצעות סמיקולים.

אל תיגש ישירות לקבוצות analytics.js של קובצי cookie, מכיוון שפורמט קובצי ה-cookie עשוי להשתנות בעתיד. במקום זאת, מפתחים צריכים להשתמש ב-readyCallback כדי להמתין עד ש-analytics.js ייטען, ואז לשמור את הערך clientId שמאוחסן במכשיר המעקב.

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

השבתת קובצי cookie

במקרים מסוימים, כדאי להשתמש במנגנון אחסון משלכם (כמו localStorage או Service Worker) כדי לשמור את ה-Client-ID בסשנים שונים בלי להשתמש בקובצי cookie. אפשר להשבית את האפשרות analytics.js להגדיר קובצי cookie על ידי הגדרת השדה storage ל-'none'.

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

אם אתם מאחסנים את השדה clientId בעצמכם, תצטרכו לוודא שהגדרתם את השדה cliendId כשיוצרים את מכשיר המעקב.

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

כדי להשבית את קובצי ה-Cookie של _gac_<property-id>, מגדירים את השדה storeGac לערך false בפקודה create:

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

שימוש ב-localStorage כדי לאחסן את מזהה הלקוח

דוגמת הקוד הבאה מראה איך לשנות את תג JavaScript כך שישתמש ב-localStorage לאחסון מזהה הלקוח במקום קובצי cookie:

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.

כדי להטמיע את התכונה User ID באמצעות analytics.js:

  1. עליכם לספק מזהה מחרוזת ייחודי משלכם, קבוע וללא פרטים אישיים מזהים, כדי לייצג כל משתמש מחובר. בדרך כלל המזהה הזה מסופק על ידי מערכת אימות.
  2. מגדירים את ה-User ID במכשיר המעקב:
ga('create', 'UA-XXXXX-Y', 'auto', {
  userId: USER_ID
});
ga('send', 'pageview');

טיפול באימות לאחר טעינת דף

כשיוצרים אפליקציות בדף יחיד או אתרים דינמיים אחרים שמטפלים בכניסה של משתמשים אחרי הטעינה הראשונית של הדף, תהליך ההגדרה של ערך ה-User-ID בכלי המעקב לא יכול להתרחש בזמן היצירה.

במקרים כאלה, תוכלו להשתמש בפקודה 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 לא יכללו ערכי User ID. עם זאת, באמצעות תהליך שנקרא איחוד סשנים, מערכת Google Analytics יכולה לשייך את ההיטים האלה למשתמש הנכון בזמן העיבוד.