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

בחורה מפותעת אוחזת בכבל טלפון מנותק

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

תקציר:
העברת קוד גוגל אנליטיקס מקוד המקור של האתר לתג מנג’ר גורמת לבעיה קטנה. תג מנג’ר מייצר טראקר שונה מזה שיצר הקוד הרגיל שהיה. הדבר גורם לקודים אחרים שלא הועברו ל-GTM (כמו איבנטים שפזורים להם איי שם בקוד) לא לעבוד. הפיתרון הקל ביותר הוא להחזיר לטראקר את שמו המקורי בתג מנג’ר.

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

מה קרה שהאיבנט הפסיק לעבוד פתאום?

ניקח סנריו קלאסי שבו מקרה שכזה עלול לקרות: מצב בו אתר מצד אחד מבצע מיגרציה של הקוד של גוגל אנליטיקס מקוד מקור לגוגל תג מנג’ר. מצד שני widget מסויים שהתקנתם כמו צ’אט או פופאפ מנסה לשלוח נתונים לגוגל אנליטיקס בשיטה הרגילה עם קוד javascript היושב בקוד האתר. לאחר המיגרציה אותו widget ממשיך באופן תמים למדי לנסות לשלוח את האיבנטים שלו בדיוק כמו פעם. רק שעכשיו זה כבר לא יעבוד.

ווידג’טים ממשיכים לנסות לשלוח פקודות גם לאחר מיגרציה לגוגל תג מנג’ר:ga(‘send’, ‘event’, ‘Chat’, ‘open’);

Tracker בגוגל אנליטיקס

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

טראקר הוא בעצם אובייקט שתפקידו לבצע שליחה של היטים שונים כמו pageview, event על בסיס הגדרות שניתנו לו מראש. הגדרה אחת שכולם מכירים וקיימת עוד מימי האבות הקדמונים של גוגל אנליטיקס היא ההגדרה לאיזה פרופרטי ישלח המידע. לרובכם בטח מוכר הפורמט הזה: UA-1234567-99 שמייצג את הקונטיינר שאליו אנחנו שולחים את המידע.
הגדרה נוספת שמאד רלוונטית לבעיה שלנו היא האופציה לתת לטראקר שם. לאחר הגדרת השם נוכל לשלוח בשם הטראקר הזה היטים.

דוגמא להגדרת 2 הטראקרים a ו-b באותו עמוד. בכך שולחים 2 היטים במקביל ל-2 Web Properties שונים. שימו לב היטב לארבעת הסימונים המודגשים:

ga(‘create’, ‘UA-XXXXXXX-1’, ‘auto’, {name: ‘a’});
ga(‘a.send’, ‘pageview’);
ga(‘create’, ‘UA-XXXXXXX-2’, ‘auto’, {name: ‘b’});
ga(‘b.send’, ‘pageview’);

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


(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXXXX-1', 'auto');
ga('send', 'pageview');

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

  1. זה לא פותר אותנו מליצור את הטראקר הזה לפני שאנחנו מבקשים להשתמש בו.
  2. היה ונשלח היט בשם טראקר שלא קיים ההיט לא ישלח לשום מקום.

בקוד המעקב שאנחנו מוציאים מתוך המערכת של גוגל אנליטיקס ישנן 2 שורות.
בשורה הראשונה אנחנו מגדירים את הטראקר t0 ובשורה השניה אנחנו שולחים את הpageview בשם אותו טראקר.
כאמור השם המפורש t0 לא בא ליידי ביטוי בקוד, הכל מתרחש מאחורי הקלעים:

ga(‘create’, ‘UA-XXXXXXX-1’, ‘auto’);
ga(‘send’, ‘pageview’);

למעוניינים בסימוכין ניתן לגשת לדוקומנטציה הרשמית.

גוגל תג מנג’ר עובד קצת אחרת

להבדיל מקוד גוגל אנליטיקס ב-javascript שמייצר טראקר אחד ושולח את כל ההיטים שיבואו אחריו דרכו. גוגל תג מנג’ר עובד בצורה הבאה: כל תגית גוגל אנליטיקס שמוגדרת דרך תג מנג’ר, תקבל טראקר חדש עם שם רנדומלי שנקרא פחות או יותר כך gtm321456987. כל תגית שכזו תקבל טראקר משל עצמה עם הגדרות ייחודיות – ממש מפונקות!

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

ככה זה נראה לפני המיגרציה ל-GTM.
בשורה הראשונה והשניה אנחנו מגדירים ומייצרים את הטראקר הדיפולטי ובשורה השלישית (נניח לאחר 10 שניות) ה-widget שלנו קורא לאיבנט ומאחר ולא צויין שום שם לטראקר הוא כמובן ישתמש בטראקר ברירת המחדל t0:

ga(‘create’, ‘UA-123456789-11’, ‘auto’);
ga(‘send’, ‘pageview’);
ga(‘send’, ‘event’, ‘Chat’, ‘open’);

וככה זה נראה מאחורי הקלעים לאחר המיגרציה ל-GTM.
גוגל תג מנג’ר מגדיר ומייצר טראקר ייחודי לתגית זו תחת השם ”gtm321456987“

ga(‘create’, ‘UA-123456789-11’, ‘auto’, {name: ‘gtm321456987’});
ga(‘gtm321456987.send’, ‘pageview’);

הטעות מתרחשת כאן כשלאחר מספר שניות ה-widget מנסה לשלוח את האיבנט כשהוא פונה לטראקר הדיפולטי שכבר לא קיים:

ga(‘send’, ‘event’, ‘Chat’, ‘open’);

תיאורתית אם האיבנט היה נשלח כך זה היה עובד:

ga(‘gtm321456987.send’, ‘event’, ‘Chat’, ‘open’);

איך פותרים את זה?

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

לווב אנליסטים:
יש באפשרותכם אופציה לדרוס את השם המוזר שתג מנג’ר נותן לטראקר שלו. בתגית גוגל אנליטיקס שיצרתם סמנו את הצ’ק בוקס Set Tracker Name שנמצא ב:
→ More settings
→ Advanced Configuration
→ Set Tracker Name

  • במידה ולא מסומן – תג מנג’ר ייתן את השם הייחודי שלו
  • במידה ומסומן עם השדה ריק – שם הטראקר יהיה t0
  • במידה ותרשמו “t0” התוצאה זהה (כמו להשאיר ריק)

לסיכום

ביצוע מיגרציה קוד אנליטיקס לגוגל תג מנג’ר (ובכלל כל נגיעה בקוד מעקב) כורך סביבו סיכונים שמה מידע יפסיק להיקלט כפי שהיה עד כה. בפוסט הזה ראינו מקרה אמנם לא דרמטי במיוחד אבל כזה שמלמד על בעיה נפוצה ואיך ניתן להמנע ממנה – בין אם אתם סטארטאפ או ווב אנליסטים.

Leave a Reply

Your email address will not be published. Required fields are marked *