מדריך זה מתאר כיצד ליישם תכונות של מסחר אלקטרוני משופר של Universal Analytics באמצעות Google Tag Manager באתר.
סקירה
מסחר אלקטרוני משופר ב-Google Analytics מאפשר שליחה של נתוני חשיפות, קידום מכירות ומכירות של מוצר עם כל אחת מהצפיות והאירועים שלך ב-Google Analytics. אפשר להשתמש בצפיות בדפים כדי לעקוב אחר חשיפות של מוצרים ורכישות של מוצרים, ולהשתמש באירועים כדי לעקוב אחר שלבי התשלום וקליקים על מוצרים.
לפני שתתחיל
מומלץ לעיין בקטע פעולות ופעולות של נתוני מסחר אלקטרוני משופר במדריך למפתחים בנושא מסחר אלקטרוני משופר כדי לעזור לכם לתכנן את ההטמעה. המדריך יעזור לכם להבין אילו שדות הם שדות חובה ושדות אופציונליים לכל אחת מהאינטראקציות של המסחר האלקטרוני שאתם רוצים למדוד.
הפעלת מסחר אלקטרוני משופר
ברוב ההטמעות, יש להפעיל מסחר אלקטרוני משופר בכל אחד מהצפיות בדף או בתג מעקב האירועים ב-Universal Analytics. יש שתי אפשרויות להפעלה של מסחר אלקטרוני משופר במסך של עורך התגים של ממשק האינטרנט:
- הטמעה באמצעות שכבת הנתונים (מומלץ)
- הטמעה באמצעות מאקרו JavaScript מותאם אישית
למרות ששתי השיטות מספקות פונקציונליות מקבילה של מסחר אלקטרוני, אנחנו ממליצים לכל האתרים שתומכים בשכבת נתונים להשתמש ב-method של שכבת הנתונים. במדריך הזה מוצגת השיטה 'שכבת נתונים' כברירת המחדל, והשימוש במאקרו JavaScript מותאם אישית מתועד בסוף המדריך.
שימוש בשכבת הנתונים
בקטעים הבאים מוסבר איך להשתמש בשכבת הנתונים כדי למדוד את פעילויות המסחר האלקטרוני המשופר הבאות:
- חשיפות של המוצרים
- קליקים על מוצרים
- חשיפות של פרטי המוצר
- הוספה לעגלת הקניות או הסרה ממנה
- חשיפות של קידום מכירות
- קליקים על קידום מכירות
- דף התשלום
- רכישות
- החזרים כספיים
הסרת האובייקט של מסחר אלקטרוני
מומלץ להשתמש בפקודה הבאה כדי לנקות את האובייקט של המסחר האלקטרוני לפני שדוחפים אירוע מסחר אלקטרוני לשכבת הנתונים. ניקוי האובייקט ימנע מאירועי מסחר אלקטרוני מרובים בדף להשפיע זה על זה.
dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.
מדידת חשיפות של מוצרים
- מדידת מסחר אלקטרוני:
impressions
- מקבל נתונים: מערך של
impressionFieldObjects
כדי למדוד חשיפות של מוצרים, אפשר להשתמש בפעולה impression
ובפעולה אחת או יותר
impressionFieldObjects
. הדוגמה הבאה מבוססת על ההנחה שהפרטים לגבי המוצרים
שמוצגים בדף ידועים במועד טעינת הדף:
<script> // Measures product impressions and also tracks a standard // pageview for the tag configuration. // Product impressions are sent by pushing an impressions object // containing one or more impressionFieldObjects. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'currencyCode': 'EUR', // Local currency is optional. 'impressions': [ { 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'list': 'Search Results', 'position': 1 }, { 'name': 'Donut Friday Scented T-Shirt', 'id': '67890', 'price': '33.75', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'list': 'Search Results', 'position': 2 }] } }); </script>
מדידת קליקים על מוצרים
- מדידת מסחר אלקטרוני:
click
- מקבלים נתונים:
list
, מערך שלproductFieldObjects
כדי למדוד קליקים על קישורי מוצרים, מבצעים את הפעולה click
לשכבת הנתונים לצד productFieldObject
כדי לייצג את המוצר שעליו בוצעה לחיצה, כמו בדוגמה הזו:
<script> /** * Call this function when a user clicks on a product link. This function uses the event * callback datalayer variable to handle navigation after the ecommerce data has been sent * to Google Analytics. * @param {Object} productObj An object representing a product. */ function(productObj) { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'productClick', 'ecommerce': { 'click': { 'actionField': {'list': 'Search Results'}, // Optional list property. 'products': [{ 'name': productObj.name, // Name or ID is required. 'id': productObj.id, 'price': productObj.price, 'brand': productObj.brand, 'category': productObj.cat, 'variant': productObj.variant, 'position': productObj.position }] } }, 'eventCallback': function() { document.location = productObj.url } }); } </script>
מדידת צפיות בפרטי מוצרים
- מדידת מסחר אלקטרוני:
detail
- מקבלים נתונים:
list
, מערך שלproductFieldObjects
כדי למדוד צפייה של פרטי מוצרים, אפשר להעביר פעולה detail
לשכבת הנתונים,
יחד עם productFieldObjects
אחד או יותר שמייצגים את המוצרים שצופים:
<script> // Measure a view of product details. This example assumes the detail view occurs on pageload, // and also tracks a standard pageview of the details page. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'detail': { 'actionField': {'list': 'Apparel Gallery'}, // 'detail' actions have an optional list property. 'products': [{ 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray' }] } } }); </script>
מדידה של תוספות או הסרות מעגלת קניות
- מדידת מסחר אלקטרוני:
add
,remove
- מקבלים נתונים:
list
, מערך שלproductFieldObjects
באופן דומה, אפשר למדוד הוספות או הסרות מעגלת קניות באמצעות
add
או remove
actionFieldObject
ורשימה של
productFieldObjects
:
הוספת מוצר לעגלת קניות
// Measure adding a product to a shopping cart by using an 'add' actionFieldObject // and a list of productFieldObjects. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'addToCart', 'ecommerce': { 'currencyCode': 'EUR', 'add': { // 'add' actionFieldObject measures. 'products': [{ // adding a product to a shopping cart. 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1 }] } } });
הסרת מוצר מעגלת קניות
// Measure the removal of a product from a shopping cart. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'removeFromCart', 'ecommerce': { 'remove': { // 'remove' actionFieldObject measures. 'products': [{ // removing a product to a shopping cart. 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1 }] } } });
מדידת קידומי מכירות
אפשר למדוד גם חשיפות וגם קליקים על קידומי מכירות פנימיים באתר, כמו מודעות באנר שמוצגות באתר עצמו שמפרסמות מבצע על קבוצת משנה מסוימת של מוצרים, או הצעה של משלוח חינם.
מדידת חשיפות של קידום מכירות
- מדידת מסחר אלקטרוני:
promoView
- מקבל נתונים: מערך של
promoFieldObjects
כדי למדוד חשיפה של קידום מכירות, צריך להגדיר את המפתח promoView
בשכבת נתוני המסחר האלקטרוני לערך promoFieldObject
שמתאר את קידומי המכירות המוצגים למשתמשים בדף:
<script> // An example of measuring promotion views. This example assumes that // information about the promotions displayed is available when the page loads. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'promoView': { 'promotions': [ // Array of promoFieldObjects. { 'id': 'JUNE_PROMO13', // ID or Name is required. 'name': 'June Sale', 'creative': 'banner1', 'position': 'slot1' }, { 'id': 'FREE_SHIP13', 'name': 'Free Shipping Promo', 'creative': 'skyscraper1', 'position': 'slot2' }] } } }); </script>
מדידת קליקים בקידום מכירות
כדי למדוד קליק על מבצע, צריך לדחוף את הפעולה promoClick
לשכבת הנתונים עם מערך שמכיל promoFieldObject
שמתאר את הקידום שעליו לחץ המשתמש:
<script> /** * Call this function when a user clicks on a promotion. This function uses the eventCallBack * datalayer variable to handle navigation after the ecommerce data is sent to Google Analytics. * * @param {Object} promoObj An object representing an internal site promotion. */ function onPromoClick(promoObj) { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'promotionClick', 'ecommerce': { 'promoClick': { 'promotions': [ { 'id': promoObj.id, // Name or ID is required. 'name': promoObj.name, 'creative': promoObj.creative, 'position': promoObj.pos }] } }, 'eventCallback': function() { document.location = promoObj.destinationUrl; } }); } </script>
מדידת מצב התשלום
כדי למדוד כל שלב בתהליך התשלום צריך:
- מודדים כל שלב בתהליך התשלום באמצעות הפעולה
checkout
. - אם רלוונטי, מודדים את האפשרויות בקופה באמצעות הפעולה
checkout_option
. - אופציונלי: אתם יכולים להגדיר שמות של שלבים ידידותיים למשתמש לדוח משפך התשלום על ידי קביעת הגדרות למסחר אלקטרוני בקטע ניהול בממשק האינטרנט.
1. מדידת שלבי התשלום
- מדידת מסחר אלקטרוני:
checkout
- מקבלים נתונים:
step
, מערך שלproductFieldObjects
כדי למדוד את תהליך התשלום, שעשוי לכלול לחצן תשלום ודף תשלום אחד או יותר שבהם המשתמשים מזינים פרטי משלוח ותשלום, אפשר להשתמש בפעולה checkout
ובשדה step
כדי לציין את השלב בתהליך התשלום שנמדד.
אפשר גם להשתמש בשדה option
כדי לספק נתונים נוספים לגבי הדף, כמו סוג התשלום שנבחר על ידי המשתמש.
<script> /** * A function to handle a click on a checkout button. This function uses the eventCallback * data layer variable to handle navigation after the ecommerce data has been sent to Google Analytics. */ function onCheckout() { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'checkout', 'ecommerce': { 'checkout': { 'actionField': {'step': 1, 'option': 'Visa'}, 'products': [{ 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1 }] } }, 'eventCallback': function() { document.location = 'checkout.html'; } }); } </script>
2. אפשרויות מדידה של תהליך התשלום
- מדידת מסחר אלקטרוני:
checkout_option
- יתקבלו נתונים:
step
,option
אפשרות התשלום בקופה שימושית במקרים שבהם כבר מדדת
שלב בקופה, אבל ברצונך לקבל מידע נוסף על
אותו שלב בקופה. לדוגמה, שיטת המשלוח שנבחרה על ידי המשתמש.
כדי למדוד זאת, צריך להשתמש בפעולה checkout_option
יחד עם השדות step
ו-option
.
<script> /** * A function to handle a click leading to a checkout option selection. */ function onCheckoutOption(step, checkoutOption) { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'checkoutOption', 'ecommerce': { 'checkout_option': { 'actionField': {'step': step, 'option': checkoutOption} } } }); } </script>
3. הגדרת משפך התשלום
אפשר לתת לכל שלב בתהליך התשלום שם תיאורי שישמש בדוחות. כדי להגדיר את השמות האלה, נכנסים לקטע מנהל מערכת בממשק האינטרנט של Google Analytics, בוחרים את התצוגה המפורטת (פרופיל) ולוחצים על הגדרות מסחר אלקטרוני. צריך לפעול לפי ההוראות להגדרת מסחר אלקטרוני כדי להוסיף תוויות לכל שלב בקופה שברצונך לעקוב אחריו.
מדידת רכישות
- מדידת מסחר אלקטרוני:
purchase
- מתקבלים נתונים:
id
(מזהה עסקה), מערך שלproductFieldObjects
דחוף את פרטי הטרנזקציות לשכבת הנתונים באמצעות הפעולה purchase
, יחד עם
event
שיפעיל תג התומך במסחר אלקטרוני משופר. בדוגמה הזו, פרטי העסקה ידועים בזמן שהדף נטען, והם יישלחו יחד עם צפייה בדף כשהסקריפט gtm.js
יחזיר:
<script> // Send transaction data with a pageview if available // when the page loads. Otherwise, use an event when the transaction // data becomes available. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'purchase': { 'actionField': { 'id': 'T12345', // Transaction ID. Required for purchases and refunds. 'affiliation': 'Online Store', 'revenue': '35.43', // Total transaction value (incl. tax and shipping) 'tax':'4.90', 'shipping': '5.99', 'coupon': 'SUMMER_SALE' }, 'products': [{ // List of productFieldObjects. 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1, 'coupon': '' // Optional fields may be omitted or set to empty string. }, { 'name': 'Donut Friday Scented T-Shirt', 'id': '67890', 'price': '33.75', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'quantity': 1 }] } } }); </script>
מדידת החזרים כספיים
- מדידת מסחר אלקטרוני:
refund
- מתקבלים נתונים:
id
(מזהה עסקה), מערך שלproductFieldObjects
כדי למדוד החזר כספי מלא על עסקה, יש לשלוח refund
actionFieldObject
יחד עם מזהה העסקה
של העסקה שעליה בוצע החזר כספי:
<script> // Refund an entire transaction by providing the transaction ID. This example assumes the details // of the completed refund are available when the page loads: dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'refund': { 'actionField': {'id': 'T12345'} // Transaction ID. Required for purchases and refunds. } } }); </script>
כדי למדוד החזר כספי חלקי, צריך להוסיף רשימה של
productFieldObjects
, כולל מזהי המוצרים והכמויות שמקבלים החזר כספי:
<script> // Measure a partial refund by providing an array of productFieldObjects and specifying the ID and // quantity of each product being returned. This example assumes the partial refund details are // known at the time the page loads: dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'refund': { 'actionField': {'id': 'T12345'}, // Transaction ID. 'products': [ {'id': 'P4567', 'quantity': 1}, // Product ID and quantity. Required for partial refunds. {'id': 'P8901','quantity': 2} ] } } }); </script>
העברת מאפיינים מותאמים אישית ברמת המוצר
כדי להעביר מאפיין מותאם אישית ברמת המוצר לאובייקט המסחר האלקטרוני, משתמשים בסימון הבא כדי להוסיף אותו למוצר:
dimensionn
כאשר n
הוא מספר טבעי, לדוגמה:
<script> dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'purchase': { ... 'products': [{ 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'dimension1': 'Same day delivery' }] } } }); </script>
העברת מדדים מותאמים אישית ברמת המוצר
כדי להעביר מדד מותאם אישית ברמת המוצר לאובייקט המסחר האלקטרוני, משתמשים בסימון הבא כדי להוסיף אותו למוצר:
metricn
כאשר n
הוא מספר טבעי, לדוגמה:
<script> dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'purchase': { ... 'products': [{ 'name': 'Goal Flow Garden Hose', 'id': 'p001', 'brand': 'Google Analytics', 'category': 'Home Goods', 'variant': 'Green', 'price': '20', 'quantity': 1, 'metric3': '10' // Custom metric 'Cost' }] } } }); </script>
שילוב של חשיפות ופעולות
במקרים שבהם יש לך גם חשיפות של מוצרים וגם פעולה, אפשר לשלב ולמדוד אותן בהיט אחד.
הדוגמה הבאה מראה איך מודדים תצוגה של פרטי מוצר עם חשיפות של מוצרים בקטע של מוצרים קשורים:
<script> dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'impressions': [ { 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'list': 'Related Products', 'position': 1 }, { 'name': 'Donut Friday Scented T-Shirt', 'id': '67890', 'price': '33.75', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'list': 'Related Products', 'position': 2 }], 'detail': { 'actionField': {'list': 'Apparel Gallery'}, // 'detail' actions have an optional list property. 'products': [{ 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray' }] } } }); </script>
שימוש במאקרו JavaScript מותאם אישית
אם האתר שלך לא תומך בשכבת נתונים, אפשר להשתמש במאקרו JavaScript בהתאמה אישית כדי לקרוא לפונקציה שמחזירה את האובייקט של נתוני המסחר האלקטרוני. האובייקט צריך להשתמש בתחביר של שכבת הנתונים שהוצג קודם במדריך הזה. לדוגמה:
// A custom JavaScript macro that returns an ecommerceData object // that follows the data layer syntax. function() { var ecommerceData = { 'ecommerce': { 'purchase': { 'actionField': {'id': 'T12345'}, 'products': [ // List of productFieldObjects ], ... // Rest of the code should follow the data layer syntax. } }; return ecommerceData; }
במקרה שאתה בוחר להשתמש במאקרו JavaScript מותאם אישית במקום בשכבת הנתונים, בחר באפשרות הפעל תכונות של מסחר אלקטרוני משופר והגדר את האפשרות קריאת נתונים ממאקרו.