ליקספיקס – גוגל אנליטיקס, גוגל תג מנג'ר ואופטימיזציה

אז למה מופיע לי not set בדוחות של גוגל אנליטיקס?

בטח יצא לכם לראות לא פעם אחת את המילים not set בדוחות של גוגל אנליטיקס.

למעשה הדבר מצביע על נתונים חסרים במערכת, אבל הרבה אנשים מערבבים בין זה לבין סוגים שונים של “נתונים חסרים”, ובפוסט הקרוב נדבר עליהם.

אז אילו סוגים של נתונים חסרים יכולים להיות בגוגל אנליטיקס?

ישנם מספר סוגים של נתונים חסרים, וכל אחד מהם יכול להופיע בדוחות מסויימים:

not set

other

not provided

direct / (none) (התייחסתי לנושא בפוסט הזה)

בפוסט הזה נדבר רק על הסוג של not set, ורק כאשר הוא מופיע בדוחות ה-landing pages.

כדי להסביר לכם מאיפה נובעת הבעיה, דמיינו רגע שהילד שלכם נכנס ביחד עם הכיתה שלו למתחם הספארי

בית הספר משלם לספארי על פי מספר הראשים שנכנסים פנימה, ולכן העמידו בכניסה שומר שלוחץ על counter בכל פעם שהוא נוגע בראש של אחד הילדים שנכנס פנימה.

לכל ילד יש מדבקה על החזה עם השם שלו, ובכל פעם שהשומר לוחץ על ה-counter, הוא גם רושם את השם של הילד על דף נייר שמכיל את שמות הילדים.

ופתאום, מגיע כלב גדול ששייך לאחד הילדים, השומר נוגע לו בראש ולוחץ על ה-counter, אבל כשהוא בא לרשום את השם ברשימה – הוא רואה שאין לו מדבקה על החזה כמו לכל הילדים.

זה בדיוק מה שקורה בגוגל אנליטיקס עם ה-not set בדוח landing pages.

בכל פעם שגולש נוחת באתר נשלח hit מסוג pageview.

זה ה-hit הראשון של הסשן, וכשהוא נשלח גוגל אנליטיקס יודע שברגע זה התחיל ביקור חדש באתר, ודף הנחיתה שלו הוא ה-URL שנשלח ב-pageview.

זה ה-URL שירשם בתור landing page.

הבעיה היא, שלפעמים ה-hit הראשון של הסשן הוא לא pageview אלא event, ואז מצד אחד גוגל אנליטיקס פותח סשן חדש, ומצד שני הוא לא יודע מה לרשום בתור landing page. בדיוק כמו הכלב שנכנס לספארי ונרשם בתור מבקר, אבל אין לו שם ולכן הוא לא נכנס לרשימת השמות של הילדים.

איך מצב כזה קורה במציאות?

המקרה הרגיל הוא שבטעות מישהו הטמיע event באתר והוריד את השורה ששולחת את ה-pageview, אבל זה מקרה נדיר מאוד.

המקרה הנפוץ יותר, קורה באתרים בהם יש event שמוגדר על גלילה, צפייה בסרטון או מעקב על פעולות כאלו ואחרות שהגולש עושה בעמוד.

במקרה כזה יכולה לקרות סיטואציה בה הגולש נכנס לאתר ומתחיל את הסשן, אבל אז יוצא להפסקת צהריים או משהו כזה ומשאיר את האתר פתוח. עוברות 30 דקות, הסשן מסתיים, ואז הגולש חוזר מההפסקה וגולל את האתר או מבצע פעולה אחרת ששולחת event לאנליטיקס, אבל מכיוון שהסשן הקודם כבר הסתיים – יוצא שה-event שהגולש ביצע התחיל סשן חדש מבלי שהיה pageview, וכך גוגל אנליטיקס לא יודע מה ה-landing page ורושם במקומו (not set).

איך לזהות את הבעיה?

הזיהוי של הבעיה פשוט מאוד – קודם כל אתם צריכים לראות אם יש לכם (not set) בדוחות ה-Landing Pages.

אם גיליתם שיש לכם את הבעיה הזו – לחצו על השורה של (not set), ואז הוסיפו secondary dimension של Page:

בתור התחלה זה יאפשר לכם לראות באילו עמודים הבעיה קיימת.

כעת תוכלו פשוט ללכת לעמוד ולראות האם באמת יש שם event שעלול להישלח אחרי שהסשן הסתיים, כמו גלילה, צפייה בסרטון וכד’

לחילופין – תוכלו לעשות בדיקה דומה ולהוסיף Event Category בתור Secondary Dimension, וזה יתן לכם את ה-event שנשלח ופותח את הסשן החדש:

במקרה שלי אתם יכולים לראות שה-event שעושה הכי הרבה בעיות זה event שעוקב אחרי אינטרקציה עם קרוסלה שיש באתר.

הגולש מגיע, משאיר את האתר פתוח וחוזר אחרי 30 דקות, ואז מתחיל לדפדף בקרוסלה, מה ששולח event ללא landing page.

איך מתקנים את זה?

הדרך הכי פשוטה היא להגדיר את ה-event הבעייתי בתור non-interaction – true.

זה אומר ש-event הזה לא יפתח סשן חדש, אבל מצד שני הוא גם לא ישפיע על ה-bounce rate שלכם באתר (כפי שהסברתי באריכות בפוסט הזה):

הבעיה היא שהרבה פעמים אנחנו דווקא כן נרצה “לאפס את ה-bounce”, ובשביל זה נצטרך לעשות את הדברים הבאים:

1. בכל פעם שנשלח pageview, נשמור את חותמת הזמן הנוכחית בתוך משתנה.

2. לפני שנשלח את ה-event נבדוק האם עברו 30 דקות מהשליחה של ה-pageview (על פי חותמת הזמן) –

אם עברו 30 דקות: ה-event יוגדר בתור non-interection ולא יפתח סשן חדש.

אם לא עברו 30 דקות: ה-event יישלח כרגיל, ויאפס את ה-bounce rate.

לעבודה:

1. צרו תג מסוג Custom HTML והכניסו בו את הסקריפט הבא:

שימו לב שאתם לא צריכים להגדיר טריגר לתג הזה.

2. לכו לתג האנליטיקס שלכם, פתחו את ה-Advanced Settings ואז Tag Sequencing, והגדירו את התג שיצרתם בשלב הראשון בתור Cleanup Tag.

מעכשיו בכל פעם אחרי שתג האנליטיקס ישלח – התג ששומר את חותמת הזמן ישלח גם הוא, ויצור ב-localStorage משתנה עם חותמת הזמן הנוכחית:

3. צרו Variable חדש מסוג Custom JavaScript והכניסו בו את הקוד הבא:

4. לכו ל-event של הגלילה, ותחת השדה non-interaction בחרו את ה-variable שיצרתם בשלב 3:

זהו. סיימתם.

מעכשיו בכל פעם שה-event של הגלילה ישלח, ה-variable יבדוק האם עברו 30 דקות מה-pageview האחרון, ואם כן – הוא יגדיר את ה-non interaction בתור true, מה שיגרום ל-event לא לפתוח סשן חדש.

שימו לב שדוח ה-landing pages הוא לא הדוח היחיד בגוגל אנליטיקס שבו אפשר להתקל ב-(not set), אבל מנסיוני הוא הכי פופולארי ולכן התייחסתי רק אליו (בפוסט הזה לפחות).