העברת שמות של קמפיינים וקבוצות מודעות בגוגל אדס באופן דינמי ל – Tracking Template
כאשר עובדים עם Google Ads, מרבית הקמפיינרים בדרך כלל משתמשים בפיצ’ר התיוג האוטומטי המוסיפה את הפרמטר gclid ל-URL של הדף נחיתה (למשל domain.com/landing-page?gclid=12345abcde). פיצ’ר זה מאפשרת למנגנוני המעקב של Google Ads ו- Google Analytics להתאים משתמש ספציפי והפעולות שהוא מבצע בדף נחיתה עם המודעה עליה הוא לחץ.
בקצרה, מזהה ההקלקה (gclid) מתאים את המבקר האנונימי עם הלחיצה על המודעה.
מדוע להשתמש ב-UTM במקום להשתמש ב-GCLID בלבד?
אם אתה משתמש ב- Google Analytics כפלטפורמת המעקב העיקרית שלך, אז הגיוני לחלוטין להישאר עם GCLID בלבד. אך במקרים מסוימים, ייתכן שעדיין תצטרך מעקב בעזרת UTM. הבה נבחן את הדוגמאות הבאות:
- פלטפורמות מעקב נוספות – אם אתה משתמש בכלי אחר שאינו Google Analytics (או אפילו במקביל), תרצה שהוא ידווח במדויק על הקמפיינים, מכיוון שהוא לא יביא את אותם נתוני Google Ads.
- מערכות אוטומציית שיווק – בעוד שחלק מהפלטפורמות מסוגלות לשאוב נתוני Google Ads (למשל Hubspot), רוב הפלטפורמות יתקשו להתמודד עם המשימה, וידרשו שה-UTM יופיעו ב-URL
- מערכות CRM – מספר פלטפורמות CRM, כמו Salesforce, מנותקות מהמעקב ברמת הדף. מערכות אלו שואבות את המידע באמצעות שדות מוסתרים בטפסים – מה שמחייב את ה-UTM להיות נוכח ב-URL.
- מערכות BI – בדומה למערכות CRM, גם מערכות אלו לא תמיד מאפשרות אינטגרציה עם גוגל אדס, ומחייבות שה-UTM יהיה נוכח ב-URL.
לגוגל אדס אין פתרון לבעיה?
הפתרון האינטואיטיבי לכך היא שצריך להשתמש בפרמטרים של Value Adrack של Google Ad. ניתן לצרף פרמטרים אלה באופן אוטומטי לכל הכתובות של דפי הנחיתה, תוך הזרקת תוכן סטטי (למשל utm_source = google) או דינאמי (למשל {utm_keyword = keyword}) אל כתובת האתר.
למרות שמדובר בפתרון הגיוני לכאורה, מכיוון שה-ID של הקבוצות המודעות/קבוצות קמפיינים הן סטטיות, בעוד שהשם שלהם יכול להשתנות, הפתרון רחוק מלהיות דרך ידידותית לקמפיינר לנתח את הנתונים שלו. עם זאת, Google Ads מאפשרת להשתמש רק במזהה הקמפיין ומזהה קבוצת המודעות כפרמטרים של ValueTrack.
הפתרון – Google Ads Script
סקריפטים של Google Ads הם פתרון מצוין לאוטומציית משימות מורכבות בחשבון גוגל אדס שלך. קטעי קוד אלה יכולים ליצור אינטראקציה עם כלים אחרים של Google, למשל Google Sheets, ואפילו עם כלים חיצוניים כגון SQL.
בדרך כלל זהו כלי למשווקים בעלי ידע טכני בעולם התכנות, לכן ניסינו לפשט את התהליך ככל האפשר.
function main() { var TrackingTemplate = "{lpurl}?utm_source=google&utm_medium=cpc&utm_campaign={CampaignName}&utm_content={AdGroupName}&utm_term=utm_term={matchtype}_{keyword}"; var _CAMPAIGN_CONTAINS = ""; var _ADGROUP_CONTAINS = ""; var STATUS = "ENABLED"; if (TrackingTemplate.search(/{AdGroupName}|{CampaignName}/g) == -1) { Logger.log("Enter at least one of the {CampaignName} or {AdGroupName} parameter in the tracking template"); return } if (TrackingTemplate.search("{CampaignName}") > 0 && TrackingTemplate.search("{AdGroupName}") == -1) { var campaignIterator = _CAMPAIGN_CONTAINS == "" ? AdsApp.campaigns().withCondition("Status = " + STATUS).get() : AdsApp.campaigns().withCondition("Name contains '" + _CAMPAIGN_CONTAINS + "'").withCondition("Status = " + STATUS).get(); if (!campaignIterator.hasNext()) { Logger.log("No Campaigns matched with this condition"); return } while (campaignIterator.hasNext()) { var campaign = campaignIterator.next(); var campaigntemplate = TrackingTemplate.replace(/{CampaignName}/g, campaign.getName().replace(/\s/g, '%20')) campaign.urls().setTrackingTemplate(campaigntemplate); Logger.log(campaign.getName() + " => " + campaigntemplate) } } if (TrackingTemplate.search("{AdGroupName}") > 0) { var adgroupIterator = { hasNext: function() { return false } } if (_ADGROUP_CONTAINS == "" && _CAMPAIGN_CONTAINS == "") { adgroupIterator = AdsApp.adGroups().withCondition("Status = " + STATUS).get(); } else if (_ADGROUP_CONTAINS == "" && _CAMPAIGN_CONTAINS !== "") { adgroupIterator = AdsApp.adGroups().withCondition("CampaignName contains '" + _CAMPAIGN_CONTAINS + "'").withCondition("Status = " + STATUS).get(); } else if (_ADGROUP_CONTAINS !== "" && _CAMPAIGN_CONTAINS !== "") { adgroupIterator = AdsApp.adGroups().withCondition("CampaignName contains '" + _CAMPAIGN_CONTAINS + "'").withCondition("Name contains '" + _ADGROUP_CONTAINS + "'").withCondition("Status = " + STATUS).get(); } else if (_ADGROUP_CONTAINS !== "" && _CAMPAIGN_CONTAINS == "") { adgroupIterator = AdsApp.adGroups().withCondition("Name contains '" + _ADGROUP_CONTAINS + "'").withCondition("Status = " + STATUS).get(); } if (!adgroupIterator.hasNext()) { Logger.log("No Campaigns/Adgroups matched with this condition"); return } while (adgroupIterator.hasNext()) { var adgroup = adgroupIterator.next(); var adgrouptemplate = TrackingTemplate.replace(/{AdGroupName}/g, adgroup.getName().replace(/\s/g, '%20')) if (TrackingTemplate.search("{CampaignName}") > 0) { adgrouptemplate = adgrouptemplate.replace(/{CampaignName}/g, adgroup.getCampaign().getName().replace(/\s/g, '%20')) } adgroup.urls().setTrackingTemplate(adgrouptemplate); Logger.log(adgroup.getCampaign().getName() + " => " + adgroup.getName() + " => " + adgrouptemplate) } } }
מה הקוד עושה?
סקריפט זה מוסיף שני UTM דינמיים ל-Tracking Template שלך:
CampaignName ו-AdGroupName
אתה יכול לערוך את המשתנים הללו כדי להוסיף/להסיר נתונים שיופיעו ב-URL של הדף נחיתה שאליה נשלחים המשתמשים.
CAMPAIGN_CONTAINS
ניתן להשתמש במשתנה זה לסנן קמפיינים ספציפיים לפי שם. לדוגמה, אם לכל הקמפיינים של המותג שלך יש סכמת שמות סטנדרטיות, למשל – Brand_Jaspers_UK_Exact, ניתן להתאים את המשתנה ל- _CAMPAIGN_CONTAINS = “מותג”.
כדי להחיל את הקוד על כל הקמפיינים בחשבון, השאר את המשתנה הזה ריק.
ADGROUP_CONTAINS
באופן דומה, ניתן להשתמש במשתנה זה כדי לסנן קבוצות מודעות ספציפיות לפי שמם. לדוגמה, אם לכל קבוצות המודעות בהתאמה מדויקת ישנה סכמת שמות סטנדרטית, למשל – Brand_Jaspers_UK_Exact, ניתן להתאים את המשתנה ל- _ADGROUP_CONTAINS = “מדויק”.
חשוב!
הקפד להסיר את כל ה-Tracking Templates הקיימות מחשבונך (בכל הרמות). קוד זה יפעל רק בקמפיינים פעילים.
הטמעת הקוד
לאחר ביצוע ההתאמות הרלוונטיות לסקריפט, תוכל להטמיע אותו בחשבונך.
- Tools -> Bulk Actions -> Scripts.
- צור סקריפט חדש על ידי לחיצה על סמל הפלוס הכחול.
- תן לסקריפט שם קל לזכרון, למשל “קמפיין אוטומטי” או “UTM של קבוצת מודעות”.
- הדבק את הקוד, ולחץ SAVE.
- לאחר מכן, Google Ads יבקש את רשותך להוסיף את הסקריפט יש סיכוי קטן שהוא יראה שגיאה לאחר אישור ההתקנה, התעלמו, מדובר בבאג זניח של גוגל.
- לאחר מכן תוכל ללחוץ על RUN ולאחר מכן על PREVIEW.
הקוד יתחיל לרוץ, והנתונים יופיעו בחלון התחתון. ה-Tracking Template למעשה נוסף לקמפיינים ולקבוצות המודעות שהוגדרו בקוד (אם לא הוגדרו מסננים, אז הוא יכול על החשבון כולו).
בעמוד הראשי של הסקריפטים, ניתן להגדיר את התדירות שבה הקוד יופעל.
ניתן להגדיר את התדירות כראות עיניכם. אם בחשבון הזה יש שינויים רבים המתרחשים מדי יום, תוכל להגדיר אותו לעדכון על בסיס שעתי. פעולה זו תעדכן קמפיינים חדשים וקיימים (אם שמם ישתנה).
מילים אחרונות
אם יש לך את ההרגשה שזה תהליך מסובך מדי, תמיד אפשר לתת למקצועני קידום ממומן לטפל בבעיה מא’ עד ת.