נכתב על ידי דני צ'רניאק, DigiKnowledge. נבדק לאחרונה: 10.11.2026

משתנה ב-Google Tag Manager הוא שם קבוע לערך שמתמלא בזמן ריצה: כתובת העמוד, הטקסט של הכפתור שנלחץ או סכום ההזמנה מה-Data Layer. יש שתי משפחות: משתנים מובנים שמגיעים מוכנים ורק מסמנים אותם, לצד משתנים בהגדרת משתמש שיוצרים לפי סוג. Data Layer Variable קורא ערך שהאתר דחף, Lookup Table ו-RegEx Table ממירים ערך אחד לאחר ו-Custom JavaScript מחשב ערך בפונקציה. הכלל המעשי: משתמשים בסוג הפשוט ביותר שמחזיר את הערך וכותבים קוד רק כשאין סוג מוכן.

מה זה משתנה ב-GTM ואיפה משתמשים בו?

לפי התיעוד של Google משתנים הם מצייני מקום בעלי שם לערכים שמתמלאים כשהקוד רץ באתר. המשתנה Page URL, לדוגמה, מחזיר את כתובת העמוד הנוכחי. משתמשים בהם בשני מקומות. בטריגרים הם מגדירים את התנאי שקובע מתי תג נורה, למשל טריגר שפועל כשה-URL מכיל כתובת מסוימת. בתגים הם מעבירים ערכים דינמיים, למשל ערך עסקה ומזהה מוצר לתג המרה.

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

הדרך של ערך אל התג

מהמקור, דרך המשתנה ועד הטריגר או התג

מקור הערךData Layer, URL, עוגייה או אלמנט בעמוד
משתנה קוראמובנה או בהגדרת משתמש
המרהLookup Table, RegEx Table או Format Value
שימושתנאי בטריגר או שדה בתג
שלב ההמרה אינו חובה. רוב המשתנים קוראים ערך ומעבירים אותו כמו שהוא.

אילו משתנים מובנים יש ואיך מפעילים אותם?

משתנים מובנים הם לפי התיעוד קטגוריה מיוחדת: הם נוצרו מראש ואי אפשר לשנות אותם. קונטיינר חדש מגיע בלי אף משתנה בהגדרת משתמש ועם חלק מהמובנים פעילים. כדי להפעיל את השאר נכנסים ל-Variables, לוחצים על Configure בחלק Built-In Variables ומסמנים את מה שצריך. אחרי הסימון המשתנה מופיע בכל תפריטי הבחירה בקונטיינר.

קטגוריהמשתנים עיקרייםמאיפה הערך מגיע
PagesPage URL, Page Hostname, Page Path, Referrerכתובת העמוד הנוכחי
ClicksClick Element, Click Classes, Click ID, Click Target, Click URL, Click Textטריגרים של קליק
FormsForm Element, Form Classes, Form ID, Form Target, Form URL, Form Textטריגר Form Submission
HistoryNew History Fragment, Old History Fragment, New History State, Old History State, History Sourceטריגר History Change
ScrollScroll Depth Threshold, Scroll Depth Units, Scroll Directionטריגר Scroll Depth
VideosVideo Status, Video Percent, Video Title, Video URL, Video Durationטריגר YouTube Video
VisibilityPercent Visible, On-Screen Durationטריגר Element Visibility
ErrorsError Message, Error URL, Error Lineטריגר JavaScript Error
UtilitiesEvent, Container ID, Container Version, Environment Name, Random Numberהקונטיינר עצמו

שני דברים ששווה לדעת על הטבלה. המשתנה Event מחזיר את שם האירוע הנוכחי ב-Data Layer, למשל gtm.js או אירוע מותאם. משתני הקליק והטופס קוראים מפתחות ב-Data Layer כמו gtm.element ו-gtm.elementUrl. לפי התיעוד מי שממלא אותם הם הטריגרים של קליק ושל טופס, כך שבאירוע מסוג אחר הם לא יחזירו את מה שציפיתם.

איך עובד Data Layer Variable?

זה המשתנה שתשתמשו בו הכי הרבה. הוא קורא ערך שהאתר דחף ב-dataLayer.push לפי שם המפתח. בהגדרה שלו יש בחירה בין שתי גרסאות. לפי התיעוד, Version 1 מתיר נקודות בתוך שם המפתח, כך שהמפתח a.b.c נשאר מפתח אחד. Version 2 מפרש נקודות כערכים מקוננים, כך ש-a.b.c הוא שלוש רמות. בדוגמה הבאה משתנה בשם ecommerce.value ב-Version 2 יחזיר 250.

dataLayer.push({
  'event': 'purchase',
  'ecommerce': {
    'value': 250,
    'currency': 'ILS'
  }
});

שלושה כללים מהתיעוד למפתחים קובעים אם המשתנה יחזיר ערך. ערכים ב-Data Layer נשמרים רק כל עוד המשתמש נשאר באותו עמוד. ערך שצריך בכל עמוד, כמו סוג המשתמש, נדחף מחדש בכל עמוד. דחיפה של מפתח בשם שכבר קיים דורסת את הערך הקודם. שמות המפתחות חייבים להיות עקביים בין העמודים: visitorType ו-visitor_type הם שני משתנים שונים. רוב המקרים של משתנה שמחזיר undefined נגמרים באחד משלושת אלה. איך מגדירים למפתחים שמות אחידים פירטנו במסמך dataLayer למפתחים.

מה ההבדל בין Lookup Table ל-RegEx Table?

שניהם ממירים ערך של משתנה אחד לערך אחר לפי טבלה. Lookup Table יוצר לפי התיעוד משתנה שהערך שלו משתנה לפי הערך של משתנה אחר. הטבלה בנויה משתי עמודות: בראשונה הערך של משתנה הקלט ובשנייה הפלט. הדוגמה בתיעוד ממפה עמודי תודה שונים למזהי המרה שונים. RegEx Table דומה, אבל כל שורה היא תבנית של ביטוי רגולרי.

מאפייןLookup TableRegEx Table
מה כותבים בכל שורהערך של משתנה הקלט ולצדו הפלטתבנית של ביטוי רגולרי ולצדה הפלט
איך נבחר הפלטלפי השורה שמתאימה לערך הקלטמלמעלה למטה, ההתאמה הראשונה מחזירה את הפלט
מתי בוחרים בוכשרשימת הערכים האפשריים סגורה וידועהכשהערכים משתנים אבל יש להם תבנית משותפת
שימוש לדוגמהמזהה מדידה שונה לכל hostnameקיבוץ של תבניות URL לסוג עמוד

ב-RegEx Table יש כמה נקודות שכדאי להכיר. לפי התיעוד, כברירת מחדל התבנית חייבת להתאים למחרוזת הקלט כולה וההתאמה אינה רגישה לאותיות גדולות וקטנות. האפשרות Set Default Value קובעת פלט למקרה שאף תבנית לא התאימה.

תחת Advanced Settings יש שלוש אפשרויות: Ignore Case, Full Matches Only ו-Capture Groups and Replace. כש-Full Matches Only מסומן, התבנית מתנהגת כאילו יש לה עוגנים בהתחלה ובסוף. כשמבטלים אותו, התאמה יכולה להיות בכל מקום במחרוזת. Capture Groups and Replace מאפשר לשלב בפלט חלקים שנתפסו מהקלט בעזרת $1 ו-$2. התיעוד מזהיר שהפעלה שלו יחד עם ביטול של Full Matches Only עלולה לתת תוצאות לא צפויות. בגלל שהבדיקה רצה מלמעלה למטה, שמים את התבניות הספציפיות לפני הכלליות.

מתי כותבים Custom JavaScript ומתי לא?

Custom JavaScript מחזיר את התוצאה של פונקציה. הדרישה היחידה מהתיעוד: הקוד חייב להיות פונקציה אנונימית שמחזירה ערך. הדוגמה מהתיעוד הופכת כתובת לאותיות קטנות:

function () {
  return {{url}}.toLowerCase();
}

הדוגמה הזאת היא גם הסיבה שאני ממעט להשתמש בו. המרה לאותיות קטנות קיימת היום כאפשרות מוכנה ב-Format Value, בלי שורת קוד. לפני שכותבים פונקציה כדאי לעבור על הסוגים המוכנים. JavaScript Variable קורא משתנה גלובלי שקיים בקוד העמוד. DOM Element מחזיר טקסט של אלמנט או ערך של מאפיין שלו. 1st Party Cookie מחזיר ערך של עוגייה. URL מפרק כתובת לרכיבים. Auto-Event Variable מחזיר פרטים על האלמנט שהפעיל את האירוע, כולל מאפיין לפי בחירה. קוד שנכתב ביד צריך תחזוקה ובדיקה בכל שינוי באתר, בעוד שסוג מוכן פשוט ממשיך לעבוד.

מה עושה Format Value?

Format Value הוא חלק שמופיע בתחתית ההגדרה של משתנה בהגדרת משתמש. הוא משנה את הערך אחרי שהמשתנה קרא אותו. לפי התיעוד האפשרויות הן: Change Case to לאותיות קטנות או גדולות, Convert null to ו-Convert undefined to להחלפת ערך חסר בטקסט או במשתנה, Convert true to ו-Convert false to. כשמסמנים כמה אפשרויות הן מופעלות מלמעלה למטה לפי הסדר ברשימה. השימוש הנפוץ: אחידות. ערך שמגיע פעם כ-Contact ופעם כ-contact יוצר שתי שורות בדוח. המרה לאותיות קטנות במשתנה פותרת את זה במקור.

איזה סוג משתנה מתאים לאיזה צורך?

הצורךסוג המשתנההערה
ערך שהאתר דחףData Layer VariableVersion 2 לקריאת ערכים מקוננים
חלק מכתובת העמודURLרכיבים: Full URL, Protocol, Hostname, Port, Path, Filename Extension, Query, Fragment
ערך של עוגייה1st Party Cookieאם יש כמה עוגיות באותו שם, מוחזר הערך הראשון
מאפיין של האלמנט שנלחץAuto-Event VariableElement Attribute עם שם המאפיין
ערך קבוע שחוזר בכמה תגיםConstantלמשל מספר חשבון
ערך שתלוי במשתנה אחרLookup Table או RegEx Tableערך קבוע מול תבנית
פרמטרים משותפים לאירועי GA4Google Tag: Event Settingsפירוט במדריך Google tag ותג אירוע GA4
חישוב שאין לו סוג מוכןCustom JavaScriptפונקציה אנונימית שמחזירה ערך

איך יוצרים משתנה חדש ובודקים אותו?

  1. פותחים את מסך המשתנים. בתפריט הצד לוחצים על Variables. בחלק User-Defined Variables לוחצים על New.
  2. בוחרים סוג. לוחצים על Variable Configuration ובוחרים את הסוג הפשוט ביותר שמחזיר את הערך שאתם צריכים.
  3. ממלאים את ההגדרות. ב-Data Layer Variable זה שם המפתח והגרסה. ב-Lookup Table זה משתנה הקלט והשורות.
  4. מוסיפים Format Value כשצריך. המרה לאותיות קטנות וערך חלופי ל-undefined חוסכים שורות כפולות בדוחות.
  5. נותנים שם שמתאר את התפקיד. התיעוד ממליץ על שיטת שמות שמתארת מה המשתנה עושה. מוסכמה נפוצה היא קידומת לפי סוג, לדוגמה DLV לערכים מה-Data Layer.
  6. בודקים ב-Preview. בוחרים את האירוע הרלוונטי ובודקים את הערך של המשתנה באותו רגע. את הבדיקה הזאת תיארנו במדריך Preview ו-Tag Assistant.

שאלות נפוצות

מה ההבדל בין משתנה מובנה למשתנה בהגדרת משתמש ב-GTM?

משתנים מובנים נוצרו מראש על ידי Google ואי אפשר לשנות את ההגדרה שלהם. מפעילים אותם במסך Variables: לוחצים על Configure בחלק Built-In Variables ומסמנים את המשתנים הרצויים. משתנים בהגדרת משתמש יוצרים לבד לפי סוג, למשל Data Layer Variable או Lookup Table. קונטיינר חדש מגיע בלי משתנים בהגדרת משתמש ועם חלק מהמובנים פעילים.

מה ההבדל בין Version 1 ל-Version 2 ב-Data Layer Variable?

ההבדל הוא בפירוש של נקודות בשם המפתח. לפי התיעוד של Google, Version 1 מתיר נקודות כחלק מהשם, כך ש-a.b.c הוא מפתח אחד. Version 2 מפרש נקודות כערכים מקוננים, כך ש-a.b.c מצביע על c בתוך b בתוך a. כדי לקרוא ערך מתוך אובייקט מקונן כמו ecommerce.value משתמשים ב-Version 2.

למה Data Layer Variable מחזיר undefined?

שלוש סיבות נפוצות נובעות מהכללים שבתיעוד. ערכים ב-Data Layer נשמרים רק באותו עמוד, כך שערך שנדחף בעמוד קודם כבר לא קיים. שמות המפתחות חייבים להיות עקביים, כי visitorType ו-visitor_type הם שני מפתחות שונים. סיבה שלישית היא תזמון: הערך נדחף אחרי האירוע שבו התג נורה. בודקים את זה ב-Preview על האירוע המדויק.

מה ההבדל בין Lookup Table ל-RegEx Table?

Lookup Table ממפה ערך קבוע של משתנה קלט לערך פלט. RegEx Table עושה את אותו דבר עם תבניות של ביטויים רגולריים. לפי התיעוד, RegEx Table נבדק מלמעלה למטה וההתאמה הראשונה מחזירה את הפלט. כברירת מחדל התבנית חייבת להתאים למחרוזת כולה בלי רגישות לאותיות גדולות וקטנות. יש בו גם Set Default Value למקרה שאין התאמה.

איך כותבים משתנה Custom JavaScript ב-GTM?

לפי התיעוד הקוד חייב להיות פונקציה אנונימית שמחזירה ערך. אפשר להפנות בתוכה למשתנים אחרים בשמם בין סוגריים מסולסלים כפולים. לפני שכותבים קוד כדאי לבדוק אם סוג מוכן מחזיר את אותו ערך: JavaScript Variable למשתנה גלובלי, DOM Element לטקסט של אלמנט, 1st Party Cookie לעוגייה או Format Value להמרת אותיות.

מה זה Format Value במשתנה של GTM?

Format Value הוא חלק בתחתית ההגדרה של משתנה בהגדרת משתמש שמשנה את הערך אחרי הקריאה. האפשרויות כוללות Change Case to לאותיות קטנות או גדולות, Convert null to, Convert undefined to, Convert true to ו-Convert false to. לפי התיעוד, כשמסמנים כמה אפשרויות הן מופעלות מלמעלה למטה לפי הסדר שבו הן מופיעות.

מה השורה התחתונה?

משתנים הם המקום שבו קונטיינר נשאר נקי או מסתבך. קונטיינר טוב נשען על מעט סוגים: Data Layer Variable לכל מה שהאתר מדווח, משתנים מובנים לעמוד ולקליק, Constant למזהים וטבלת Lookup או RegEx כשאותו תג צריך ערך שונה בהקשרים שונים. Custom JavaScript נשאר למקרים שבאמת אין להם סוג מוכן. את המקום של המשתנים בתמונה הכוללת תמצאו במדריך המלא ל-Google Tag Manager. סידור המשתנים והמוסכמות הוא חלק קבוע משירות הטמעת Google Tag Manager שלנו. אם יש לכם קונטיינר עם עשרות משתנים שאף אחד לא בטוח מה הם מחזירים, כתבו לנו.

מקורות

דני צ'רניאק
דני צ'רניאק
יועץ אנליטיקה דיגיטלית ומייסד DigiKnowledge. מרצה לאנליטיקה דיגיטלית באוניברסיטת תל אביב, באוניברסיטה הפתוחה ובאוניברסיטת אריאל. לעמוד האישי

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *