איך טריגר מחליט מתי תג נורה?
טריגר מאזין לסוג אחד של אירוע. כש-GTM רושם אירוע, הוא בודק את כל הטריגרים שמתאימים לסוג הזה ומפעיל את התגים שמחוברים אליהם. על כל טריגר אפשר להוסיף תנאים שמצמצמים אותו. לפי התיעוד כל תנאי בנוי משלושה חלקים: משתנה, אופרטור וערך. לדוגמה: Page Path equals /thank-you/. בין האופרטורים יש גם matches RegEx לתבניות טקסט וגם matches CSS selector לזיהוי אלמנטים ב-HTML.
לתג אחד יכולים להיות כמה טריגרים מפעילים. התג נורה כשהתנאים של אחד מהם מתקיימים, כך שתג עם טריגר לכל העמודים ועוד טריגר לעמוד אחד פשוט נורה בכל העמודים. מעל זה אפשר להוסיף חריג (Exception, נקרא גם blocking trigger) שחוסם את התג בתנאים מסוימים. הדוגמה מהתיעוד: תג עם טריגר לכל העמודים וחריג של Page URL equals thankyou.html לא יירה לעולם בעמוד הזה. את התנאים עצמם ממלאים המשתנים, שעליהם פירטנו במדריך המשתנים ב-GTM.
מהאירוע ועד התג
ארבעת השלבים שכל טריגר עובר
אילו סוגי טריגרים יש ב-GTM?
זאת הרשימה המלאה של סוגי הטריגרים בקונטיינר Web לפי מרכז העזרה של Tag Manager, עם השימוש הטיפוסי של כל אחד.
| סוג הטריגר | מתי הוא נורה | שימוש טיפוסי |
|---|---|---|
| Consent Initialization | לפני כל טריגר אחר | תגים שקובעים או מעדכנים מצב הסכמה בלבד |
| Initialization | לפני כל הטריגרים חוץ מ-Consent Initialization | תג שחייב לרוץ לפני שאר התגים ולא מנהל הסכמה |
| Page View | ברגע שהדפדפן מתחיל לטעון את העמוד | תג שצריך רק את עצם הצפייה בעמוד |
| DOM Ready | אחרי שהדפדפן סיים לבנות את ה-HTML | תג שקורא ערכים מתוך ה-DOM |
| Window Loaded | אחרי טעינה מלאה, כולל תמונות וסקריפטים | תג שיכול לחכות לסוף הטעינה |
| Click: All Elements | קליק על כל אלמנט בעמוד | כפתורים, תמונות, אלמנטים שאינם קישור |
| Click: Just Links | קליק על קישור מסוג a בלבד | קישורים יוצאים, tel ו-mailto |
| Form Submission | כשטופס נשלח | טפסים שמבצעים submit רגיל של הדפדפן |
| Element Visibility | כשאלמנט נבחר נכנס לאזור הנראה במסך | הודעת תודה, באנר, אזור בעמוד |
| Scroll Depth | כשהגלילה חוצה סף שהוגדר | עומק קריאה בעמודי תוכן |
| YouTube Video | באינטראקציה עם סרטון YouTube מוטמע | התחלה, התקדמות וסיום צפייה |
| Custom Event | כשנדחף ל-Data Layer אירוע בשם שהוגדר | כל פעולה שהאתר מדווח עליה בעצמו |
| History Change | כשה-fragment ב-URL משתנה או שהאתר משתמש ב-pushState | צפיות וירטואליות באתרי SPA |
| JavaScript Error | בשגיאת JavaScript שלא נתפסה | ניטור שגיאות בכלי האנליטיקה |
| Timer | במרווחי זמן קבועים | זמן שהייה בעמוד |
| Trigger Group | אחרי שכל הטריגרים שבקבוצה נורו | שילוב תנאים, למשל גלילה וגם זמן |
מה ההבדל בין חמשת טריגרי טעינת העמוד?
ההבדל הוא בתזמון. לפי התיעוד סדר הקדימות הוא: Consent Initialization, Initialization, Page View, DOM Ready ו-Window Loaded. בהגדרות של טריגרים אחרים, למשל Scroll Depth, שלושת השלבים האחרונים מופיעים בשמות Container Load (gtm.js), DOM Ready (gtm.dom) ו-Window Load (gtm.load).
Consent Initialization נועד לוודא שהגדרות ההסכמה מכובדות לפני שכל טריגר אחר נורה. התיעוד מדגיש שמשתמשים בו רק לתגים שמנהלים הסכמה, למשל תג של פלטפורמת ניהול הסכמה. תג שרק צריך לרוץ מוקדם שייך ל-Initialization. כל קונטיינר Web מגיע עם שני טריגרים מוכנים: Consent Initialization - All Pages ו-Initialization - All Pages. על המנגנון הזה הרחבנו בהגדרות ההסכמה בתגים של GTM.
Page View נורה מיד כשהדפדפן מתחיל לטעון את העמוד. הוא מתאים כשכל מה שצריך הוא נתון על הצפייה עצמה. תג שקורא ערך מתוך העמוד, למשל טקסט של כותרת, צריך DOM Ready, כי לפני כן האלמנט עדיין לא בהכרח קיים. Window Loaded מחכה גם לתמונות ולסקריפטים. התיעוד ממליץ להוסיף לכל טריגר כזה תנאי, בדרך כלל תבנית URL, כדי שיפעל רק בעמודים הרלוונטיים.
מתי משתמשים בטריגר Custom Event?
כשהאתר עצמו יודע שהפעולה קרתה. המפתח הוא event בתוך dataLayer.push. לפי התיעוד, GTM משווה את שם האירוע שנדחף לשדה Event name שבטריגר. כשיש התאמה התג נורה. אפשר גם לסמן use regex matching כדי שטריגר אחד יתפוס כמה שמות אירועים.
dataLayer.push({
'event': 'generate_lead',
'form_name': 'contact'
});
יש לזה יתרון נוסף שקשור לסדר העיבוד. לפי התיעוד למפתחים, GTM מעבד את ההודעות ב-Data Layer אחת אחרי השנייה לפי סדר ההגעה. כשההודעה היא אירוע, התגים שהתנאים שלהם מתקיימים נורים לפני שהוא עובר להודעה הבאה. לכן כשתג תלוי בערך מסוים, ההמלצה היא לדחוף את הערך יחד עם שם אירוע ולהאזין לו בטריגר Custom Event. כך הערך בטוח זמין ברגע שהתג נורה. איך מגדירים למפתחים מה לדחוף פירטנו במסמך dataLayer למפתחים.
מה ההבדל בין טריגר קליק, טופס ונראות אלמנט?
שלושתם מנחשים פעולה מתוך מה שקורה בדפדפן, בלי שהאתר מדווח עליה. טריגר קליק מגיע בשתי גרסאות: All Elements לכל אלמנט ו-Just Links לקישורים בלבד. את ההגדרה המלאה שלו תמצאו במדריך מעקב הקליקים.
Form Submission נורה כשטופס נשלח. יש לו שתי אפשרויות. Wait for Tags מעכב את השליחה עד שהתגים נורו או עד שעבר פרק זמן מוגדר. בלי האפשרות הזאת, תגים איטיים עלולים לא להספיק לפני שהעמוד הבא נטען. Check Validation מגביל את הטריגר לטפסים שנשלחו בהצלחה. בלעדיו הטריגר נורה בכל ניסיון שליחה, גם כזה שנכשל באימות. התיעוד מזהיר שטריגרים של טפסים וקישורים עלולים להישבר כשסקריפט אחר בעמוד מחזיר false לפני שהטריגר מגיע לתורו. לכן ההמלצה היא לבדוק אותם ב-Preview ולהגביל אותם לעמודים שנבדקו.
Element Visibility נורה כשאלמנט נכנס לאזור הנראה במסך, בין אם בטעינה, בגלילה או בשינוי שהקוד ביצע. בוחרים את האלמנט לפי ID או לפי CSS Selector. קובעים אם הטריגר יירה פעם אחת בעמוד, פעם אחת לכל אלמנט או בכל פעם שהאלמנט מופיע. ברירת המחדל של Minimum Percent Visible היא 50 אחוז. האפשרות Observe DOM changes מאפשרת לעקוב אחרי אלמנטים שנוספים לעמוד אחרי הטעינה, למשל הודעת תודה שמופיעה בלי מעבר עמוד. התיעוד מציין שהאפשרות הזאת וגם משך נראות מינימלי דורשים ניטור של האלמנטים. מומלץ לכן לבחור סלקטור צר או ID. על Scroll Depth ו-YouTube Video יש מדריך נפרד: מעקב גלילה וצפייה בוידאו ב-GTM.
מתי צריך History Change, Timer, JavaScript Error ו-Trigger Group?
History Change נורה כשה-fragment שב-URL משתנה, או כשהאתר משתמש ב-pushState של HTML5. לפי התיעוד הוא נועד לתגים שמודדים צפיות וירטואליות באפליקציות של עמוד אחד. JavaScript Error נורה בשגיאה שלא נתפסה, כלומר מה שמגיע ל-window.onError. שתי מגבלות מהתיעוד: שגיאות שקרו לפני ש-GTM נטען לא מדווחות וכך גם שגיאות שהקוד תפס בעצמו.
Timer שולח אירוע במרווח קבוע שמוגדר באלפיות שנייה, כששם האירוע כברירת מחדל הוא gtm.timer. בשדה Limit קובעים כמה פעמים לכל היותר הוא יירה. אם משאירים אותו ריק, הטריגר ממשיך לירות עד שהמשתמש עוזב את העמוד. Trigger Group מעריך כמה טריגרים כאחד: הוא נורה רק אחרי שכל הטריגרים שנבחרו נורו לפחות פעם אחת. אם מוסיפים אותו טריגר פעמיים, הוא צריך לירות פעמיים לפני שהקבוצה נורית.
איך בוחרים טריגר לתג חדש?
- שואלים מי יודע שהפעולה קרתה. אם האתר יודע, למשל רכישה או ליד שנשמר, מבקשים אירוע ב-Data Layer ומשתמשים ב-Custom Event. זאת הבחירה היציבה ביותר.
- אם אין אירוע מהאתר, בוחרים את הטריגר המובנה הקרוב ביותר. קליק לקישורים ולכפתורים, Form Submission לטופס רגיל, Element Visibility להודעה שמופיעה בעמוד, History Change לאתר SPA.
- בוחרים את התזמון המוקדם ביותר שבו הנתון כבר קיים. Page View לנתוני צפייה, DOM Ready כשקוראים מה-DOM, Initialization רק למה שחייב לרוץ ראשון.
- מצמצמים בתנאים. תנאי על Page Path או על Click URL מגביל את הטריגר לעמודים שבדקתם. זאת ההמלצה של התיעוד במיוחד לטריגרים של טפסים וקישורים.
- מוסיפים חריג רק כשצריך. חריג גובר על כל טריגר מפעיל. לכן כדאי לתעד בשם התג למה הוא שם.
- בודקים ב-Preview לפני פרסום. מוודאים שהתג נורה פעם אחת, באירוע הנכון ועם הערכים הנכונים. את התהליך תיארנו במדריך Preview ו-Tag Assistant.
שאלות נפוצות
כמה סוגי טריגרים יש ב-Google Tag Manager?
בקונטיינר Web מרכז העזרה של Tag Manager מפרט 11 קבוצות של טריגרים: טעינת עמוד, קליק, Element Visibility, Form Submission, Scroll Depth, YouTube Video, Custom Event, History Change, JavaScript Error, Timer ו-Trigger Group. קבוצת טעינת העמוד כוללת חמישה סוגים וקבוצת הקליק כוללת שניים: All Elements ו-Just Links.
מה ההבדל בין Page View, DOM Ready ו-Window Loaded?
ההבדל הוא בתזמון. Page View נורה מיד כשהדפדפן מתחיל לטעון את העמוד. DOM Ready נורה אחרי שהדפדפן סיים לבנות את ה-HTML ואפשר לקרוא את ה-DOM. Window Loaded נורה רק אחרי שהעמוד נטען במלואו, כולל תמונות וסקריפטים. תג שקורא ערכים מתוך העמוד צריך לפחות DOM Ready.
מה ההבדל בין Initialization ל-Consent Initialization?
Consent Initialization נורה לפני כל טריגר אחר. לפי התיעוד של Google הוא מיועד רק לתגים שקובעים או מעדכנים מצב הסכמה, למשל תג של פלטפורמת ניהול הסכמה. Initialization נורה מיד אחריו ולפני שאר הטריגרים. הוא מתאים לתגים שצריכים לרוץ מוקדם אבל לא מנהלים הסכמה.
מתי עדיף Custom Event על טריגר קליק או טופס?
כשהאתר יכול לדווח בעצמו שהפעולה קרתה. אירוע שנדחף ל-Data Layer עם המפתח event לא תלוי במבנה ה-HTML או בעיצוב. לכן הוא לא נשבר כשמשנים כפתור או טופס. טריגרים של קליק וטופס מנחשים את הפעולה מהדפדפן. התיעוד מזהיר שהם עלולים להישבר כשסקריפט אחר בעמוד מחזיר false.
מה זה חריג (Exception) בטריגר?
חריג, שנקרא גם blocking trigger, הוא טריגר שחוסם תג מלירות בתנאים מסוימים. הוא גובר על הטריגרים המפעילים. לפי הדוגמה בתיעוד, תג עם טריגר לכל העמודים וחריג של Page URL equals thankyou.html לא יירה בעמוד הזה. מוסיפים חריג בחלק Exceptions שבהגדרת ה-Triggering של התג.
איך עובד Trigger Group?
Trigger Group מעריך כמה טריגרים כתנאי אחד. הוא נורה רק אחרי שכל הטריגרים שנבחרו בו נורו לפחות פעם אחת. אם מוסיפים את אותו טריגר יותר מפעם אחת, הטריגר הזה צריך לירות אותו מספר פעמים לפני שהקבוצה נורית. שימוש לדוגמה: תג שנורה רק אחרי גלילה וגם אחרי זמן שהייה.
מה השורה התחתונה?
רוב הקונטיינרים צריכים בפועל ארבעה סוגי טריגרים: Initialization למה שחייב לרוץ ראשון, Page View לעמודים, Custom Event לכל מה שהאתר יודע לדווח וקליק למה שנשאר. שאר הסוגים פותרים מקרים נקודתיים. הכלל שאני עובד לפיו: קודם אירוע ב-Data Layer. טריגר שמנחש מהדפדפן נכנס רק כשאין ברירה, עם תנאי שמצמצם אותו ועם בדיקה ב-Preview. את התמונה הרחבה של תגים, טריגרים ומשתנים תמצאו במדריך המלא ל-Google Tag Manager. תכנון הטריגרים הוא חלק משירות הטמעת Google Tag Manager שלנו. אם יש לכם קונטיינר שבו תגים נורים פעמיים או לא נורים בכלל, כתבו לנו.
מקורות
Tag Manager Help: Trigger types, Tag Manager Help: Page view triggers, Tag Manager Help: Firing and blocking triggers, Tag Manager Help: Custom event trigger, Tag Manager Help: Best practices for trigger configuration, Google for Developers: The data layer
