שילוב Enhanced Ecommerce של Yandex.Metrica עם 1C-Bitrix
לעתים קרובות אנו נתקלים במצב שבו בעל חנות מקוונת על 1C-Bitrix מניח שפשוט התקנת מונה Metrica מספיקה—ונתוני המכירות כבר מופיעים בדוחות. במציאות, ללא העברת אירועי Enhanced Ecommerce, האנליטיקה מוגבלת לספירת ביקורים ולחיצות. המשימה שלנו היא להגדיר משפך מלא: מצפייה במוצר ועד תשלום, עם פילוח לפי מוצר, מותג וקטגוריה. Enhanced Ecommerce מדויק פי 3 מהסכמה הסטנדרטית המבוססת על יעדים מכיוון שהוא מעביר נתונים מפורטים עבור כל מוצר. בואו נבחן יישום של אירועי dataLayer, ניפוי באגים ושליחה מובטחת בצד השרת של עסקאות.
כיצד Enhanced Ecommerce עובד
Yandex.Metrica מקבלת נתוני עסקאות דרך אובייקט dataLayer—מערך JavaScript שהדף דוחף אליו אירועים. מונה Metrica קורא אירועים במבנה ספציפי ושולח אותם לשרתי Yandex. האירועים המרכזיים: detail (צפייה במוצר), add (הוספה לסל), remove (הסרה מהסל), purchase (רכישה שהושלמה). כל אירוע מכיל אובייקט ecommerce עם מערך products. מוצר מתואר על ידי שדות: id, name, price, brand, category, quantity, variant.
כיצד ליישם dataLayer ב-1C-Bitrix?
אין אינטגרציה מובנית של Enhanced Ecommerce ב-Bitrix—המודול sale שולח רק את קוד המונה הבסיסי. היישום נופל על המפתח.
אירוע detail — נוסף לתבנית הרכיב catalog.element. ב-result_modifier.php או template.php, צרו מערך מוצרים ודחפו אותו ל-dataLayer:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
"ecommerce": {
"detail": {
"products": [
{
"id": "SKU-1234",
"name": "Название товара",
"price": 2500,
"brand": "Бренд",
"category": "Раздел/Подраздел"
}
]
}
}
});אירוע add — נורה כאשר לוחצים על כפתור "הוסף לסל". ב-Bitrix, הוספה לסל עוברת בדרך כלל דרך בקשת AJAX אל window.dataLayer = window.dataLayer || []; window.dataLayer.push({ "ecommerce": { "detail": { "products": [{ "id": "SKU-1234", "name": "Название товара", "price": 2500, "brand": "Бренд", "category": "Раздел/Подраздел" }] } } }); . יש ליירט את התגובה המוצלחת ולדחוף את האירוע. הדרך האמינה ביותר היא להירשם לאירוע JS מותאם אישית sale.basket.basket או לעטוף את המטפל הסטנדרטי.
אירוע remove — דומה ל-add, נורה כאשר פריט מוסר מהסל. הוא מיורט דרך אותו BX.onCustomEvent('OnBasketChange') עם ניתוח של הבדל במצב הסל.
אירוע purchase — הקריטי ביותר. הוא נוצר בעמוד "תודה על ההזמנה" (OnBasketChange → תבנית אישור). נתוני ההזמנה נלקחים מ-sale.order.ajax:
window.dataLayer.push({
"ecommerce": {
"purchase": {
"actionField": {
"id": "ORDER-5678",
"revenue": 7500,
"shipping": 300
},
"products": [
{
"id": "SKU-1234",
"name": "Товар 1",
"price": 2500,
"quantity": 3
}
]
}
}
}); מדוע שליחה בצד השרת דרך OnSaleOrderPaid היא קריטית?
הסתמכות רק על dataLayer בצד הלקוח היא מסוכנת—המשתמש עלול לסגור את הדף לפני שהסקריפט נורה. למעקב מובטח אחר עסקאות, נעשה שימוש במטפל האירועים \Bitrix\Sale\Order::load($orderId). כאשר סטטוס התשלום משתנה ל"שולם", סקריפט בצד השרת שולח נתונים ל-Metrica דרך Measurement Protocol או כותב אותם לתור נפרד להעלאה מאוחרת דרך ממשק ההמרות הלא מקוונות. גישה זו מבטלת אובדן נתונים ומונעת עסקאות כפולות. בפרויקט אחד עבור רשת אלקטרוניקה גדולה, צמצמנו אובדן עסקאות מ-30% לפחות מ-2% לאחר יישום שליחה בצד השרת.
דרישות טכניות לשליחה בצד השרת
- PHP 8.1+ עם תמיכה ב-cURL - גרסת Bitrix 21+ (משתמשת ב-D7) - גישה להגדרות מונה Yandex.Metrica (מספר מונה ו-token של OAuth) - מטפל אירועים OnSaleOrderPaid במודול מותאם אישית או ב-init.phpהגדרת יעדים
בממשק Yandex.Metrica, צרו יעדים מסוג "אירוע JavaScript" כדי לעקוב אחר פעולות ספציפיות:
| יעד | מזהה | טריגר |
|---|---|---|
| צפייה במוצר | window.dataLayer.push({ "ecommerce": { "purchase": { "actionField": { "id": "ORDER-5678", "revenue": 7500, "shipping": 300 }, "products": [ {"id": "SKU-1234", "name": "Товар 1", "price": 2500, "quantity": 3} ] } } }); |
טעינת עמוד מוצר |
| הוספה לסל | OnSaleOrderPaid |
לחיצה על "הוסף לסל" |
| תחילת תשלום | product_detail |
מעבר לעמוד התשלום |
| השלמת הזמנה | add_to_cart |
עמוד אישור |
היעדים נשלחים דרך begin_checkout במקביל לאירועי dataLayer. הם משלימים את נתוני המסחר האלקטרוני ומאפשרים בניית יעדים מורכבים למשפכים.
| היבט | dataLayer בצד הלקוח | שליחה בצד השרת |
|---|---|---|
| אמינות | בינונית (תלויה בדפדפן) | גבוהה (מובטחת) |
| זמן השהיה | מיידי | 1–5 דקות (המרות לא מקוונות) |
| כפילויות | אפשריות ברענון עמוד | מבוטלות באמצעות בדיקת דגל |
| נתוני מוצר | מלאים | רק מזהה וכמות |
מה כלול בהגדרת מסחר אלקטרוני
אנו עובדים עם Bitrix למעלה מ-10 שנים והשלמנו יותר מ-150 פרויקטים. החבילה הסטנדרטית כוללת:
- ביקורת על מבנה dataLayer הנוכחי והמונה
- פיתוח אירועי detail, add, remove, purchase
- אינטגרציה של שליחה בצד השרת דרך OnSaleOrderPaid
- יצירת יעדים ומשפכים ב-Yandex.Metrica
- בדיקות בסביבות בדיקה וייצור
- הדרכת המנהל שלך על שימוש בדוחות
- תיעוד האירועים המיושמים
ניפוי באגים
ניפוי באגים של Enhanced Ecommerce הוא השלב התובעני ביותר. כלים:
קונסולת הדפדפן — לאחר כל פעולה, בדקו את התוכן של purchase_complete. הפקודה ym(COUNTER_ID, 'reachGoal', 'add_to_cart') מציגה את כל האירועים שנצברו.
Yandex.Metrica → פרמטרי ביקור — בדוח "תוכן → פרמטרי ביקור" ניתן לראות אילו אירועי מסחר אלקטרוני Metrica רשמה. הנתונים מופיעים עם השהיה של 5-10 דקות.
Tag Assistant של Yandex — תוסף דפדפן שמציג בזמן אמת אילו נתונים נשלחים למונה. הוא עוזר לזהות: שדות חובה חסרים, פורמט מחיר שגוי (מחרוזת במקום מספר), אירועים כפולים.
שגיאות נפוצות:
- מחיר מועבר כמחרוזת עם רווחים (
window.dataLayerבמקוםJSON.stringify(dataLayer, null, 2)) – Metrica מתעלמת מערכים כאלה. -
"2 500"אירוע נורה בכל רענון של עמוד האישור – יוצר עסקאות כפולות. פתרון: בדקו את הדגל2500או שמרו את מזהה ההזמנה שנשלח ב-purchase. -
window.ecommerceSentמכיל פירורי לחם מלאים במקום היררכיה דרךsessionStorage– שובר את דוח הקטגוריות. - מכל המסחר האלקטרוני לא מופעל בהגדרות המונה (הגדרות → מסחר אלקטרוני → תיבת סימון "שלח נתוני מסחר אלקטרוני").
האם אתם רוצים להגדיר אנליטיקת מכירות מלאה? צרו קשר — נעריך את הפרויקט שלכם תוך יום אחד. קבלו ייעוץ על אינטגרציית Enhanced Ecommerce.

