מצב טיפוסי: חנות מקוונת על Bitrix עם קטלוג של 50,000 פריטים. ההמרה ממבקרים לקונים היא 1.2%, אבל אפשר להגיע ל-3% עם המלצות מותאמות אישית. פתרונות ML מותאמים אישית על PHP/SQL דורשים שרת חזק וחודשים של פיתוח. שירותי ענן מוכנים—RetailRocket, Mindbox, Exponea, Segmentify—כבר מאומנים על מיליוני עסקאות ומספקים תוצאות מיד לאחר האינטגרציה. אנחנו מטפלים באינטגרציות כאלה כבר למעלה מ-10 שנים והשלמנו למעלה מ-50 פרויקטים. המטרה שלנו היא להגדיר חילופי נתונים דו-כיווניים כך שההמלצות יופיעו תוך ימים, לא חודש. אנחנו מבטיחים פעולה יציבה והגדלת סל ממוצע ב-15–20%.
לאחרונה, בפרויקט עם קטלוג של 120,000 פריטים, שילבנו את RetailRocket תוך 5 ימים. לאחר הגדרת המלצות בצד השרת, ההמרה גדלה מ-1.8% ל-3.2% תוך חודש אחד. תוצאה זו מושגת באמצעות העברה נכונה של כל סוגי הנתונים ושימוש בעיבוד בצד השרת.
איך לבחור שירות ניתוח חיזוי עבור Bitrix?
הבחירה תלויה במשימות. RetailRocket מתאים יותר לחנויות בינוניות (1,000–100,000 פריטים) עם קהל דובר רוסית: הוא מציע מודול מוכן ותמיכה בשפה הרוסית. Mindbox מצטיין בעומק האנליטיקה ובאינטגרציה של דוא"ל/SMS, אבל עולה פי 2–3 יותר ומתאים לפרויקטים אומניצ'נליים. Segmentify מתמקד בהתאמה אישית של תוכן בזמן אמת, בעוד Exponea (Bloomreach) הוא ספק אירופאי עם GDPR מחמיר, סגמנטציה ואנליטיקה חזקות. לחנויות המשרתות את אירופה, Exponea הוא חובה.
| שירות | התמחות | פלח מחיר | מתאים ביותר עבור |
|---|---|---|---|
| RetailRocket | התאמה אישית, המלצות | בינוני | חנויות בינוניות (1–100 אלף פריטים) |
| Mindbox | אנליטיקה אומניצ'נלית, דיוורים | גבוה | פרויקטים גדולים, אינטגרציית דוא"ל/SMS |
| Exponea (Bloomreach) | התאמה אישית בזמן אמת, GDPR | גבוה | פרויקטים אירופאים, דרישות מחמירות |
| Segmentify | תוכן בזמן אמת | בינוני | מדיה, פרויקטי תוכן |
נתונים להעברה לשירות האנליטיקה
העברת אירועים מהדפדפן
רוב השירותים משתמשים ב-JavaScript SDK כדי לאסוף אירועי התנהגות. ה-SDK מותקן ב-<head> של תבנית האתר. סט האירועים הסטנדרטי כולל צפייה במוצר, הוספה לסל ורכישה. הנה הוראה שלב אחר שלב:
- התקן את ה-JavaScript SDK בתבנית
<head>. חבר את סקריפט השירות. - הגדר את אירוע צפייה במוצר בתבנית
catalog.element:
// Пример для RetailRocket-подобного сервиса
analytics.push(['trackProductView', {
id: <?= (int)$arResult['ID'] ?>,
groupId: <?= (int)$arResult['IBLOCK_SECTION_ID'] ?>,
price: <?= (float)($arResult['CATALOG_PRICE_1']['PRICE'] ?? 0) ?>,
isAvailable: <?= $arResult['CATALOG_QUANTITY'] > 0 ? 'true' : 'false' ?>
}]);
- הוספה לסל—במטפל של כפתור "קנייה" או דרך אירוע
// Пример для RetailRocket-подобного сервиса analytics.push(['trackProductView', { id: <?= (int)$arResult['ID'] ?>, groupId: <?= (int)$arResult['IBLOCK_SECTION_ID'] ?>, price: <?= (float)($arResult['CATALOG_PRICE_1']['PRICE'] ?? 0) ?>, isAvailable: <?= $arResult['CATALOG_QUANTITY'] > 0 ? 'true' : 'false' ?> }]);. - רכישה—בדף הצלחת ההזמנה דרך
OnSaleBasketItemAddBeforeשל רכיב$arResult['ORDER_ID'].
העברת קטלוג המוצרים
השירות חייב לדעת את הקטלוג הנוכחי כדי להציג המלצות. ההעברה היא דרך פיד (YML, CSV, או פורמט מותאם אישית) או דרך API. סוכן Bitrix יוצר את הפיד ומפרסם אותו בכתובת URL. דוגמה ליצירת פיד ב-JSON:
function generateAnalyticsFeed(): void {
$elements = \CIBlockElement::GetList(
['SORT' => 'ASC'],
['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'],
false,
false,
['ID', 'NAME', 'IBLOCK_SECTION_ID', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE', 'CATALOG_PRICE_1', 'CATALOG_QUANTITY']
);
$rows = [];
while ($el = $elements->GetNext()) {
$rows[] = [
'id' => $el['ID'],
'name' => $el['NAME'],
'categoryId' => $el['IBLOCK_SECTION_ID'],
'url' => 'https://' . SITE_SERVER_NAME . $el['DETAIL_PAGE_URL'],
'imageUrl' => 'https://' . SITE_SERVER_NAME . \CFile::GetPath($el['PREVIEW_PICTURE']),
'price' => $el['CATALOG_PRICE_1'],
'inStock' => $el['CATALOG_QUANTITY'] > 0,
];
}
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/upload/analytics_feed.json', json_encode($rows));
}הפיד מתעדכן על ידי סוכן פעם בשעה. כתובת ה-URL נרשמת בלוח הבקרה של שירות האנליטיקה. עבור חנות מקוונת עם 50,000 מוצרים, היצירה אורכת כ-3 שניות.
העברת נתוני משתמשים
בעת הרשמה ועדכון פרופיל—שלח נתונים לשירות דרך API. מטפלי אירועים sale.order.ajax ו-function generateAnalyticsFeed(): void { $elements = \CIBlockElement::GetList( ['SORT' => 'ASC'], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'], false, false, ['ID', 'NAME', 'IBLOCK_SECTION_ID', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE', 'CATALOG_PRICE_1', 'CATALOG_QUANTITY'] ); $rows = []; while ($el = $elements->GetNext()) { $rows[] = [ 'id' => $el['ID'], 'name' => $el['NAME'], 'categoryId' => $el['IBLOCK_SECTION_ID'], 'url' => 'https://' . SITE_SERVER_NAME . $el['DETAIL_PAGE_URL'], 'imageUrl' => 'https://' . SITE_SERVER_NAME . \CFile::GetPath($el['PREVIEW_PICTURE']), 'price' => $el['CATALOG_PRICE_1'], 'inStock' => $el['CATALOG_QUANTITY'] > 0, ]; } file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/upload/analytics_feed.json', json_encode($rows)); } :
AddEventHandler('main', 'OnAfterUserRegister', function($fields) {
if ($fields['EMAIL']) {
AnalyticsService::identifyUser([
'email' => $fields['EMAIL'],
'userId' => $fields['USER_ID'],
'firstName' => $fields['NAME'],
'phone' => $fields['PERSONAL_PHONE'],
]);
}
});OnAfterUserRegister מבצע בקשת POST ל-API של השירות כדי לזהות את המשתמש.
למה המלצות בצד השרת עדיפות על פני צד הלקוח?
הווידג'ט הקליינטי של השירות הוא הדרך הפשוטה ביותר: הכנס OnAfterUserUpdate וקבל סימון מוכן, אבל יש לו חסרונות: טעינת JS חיצוני מעכבת את העיבוד, אין אפשרות להתאמה אישית. API בצד השרת נותן שליטה מלאה: הנתונים מגיעים ב-PHP, אפשר לשמור במטמון, לערבב עם פריטים מבצעיים, ולהכניס ישירות לתגובת ה-HTML. בדיקות מראות שעיבוד בצד השרת מאיץ את טעינת בלוק ההמלצות ב-40% בהשוואה לגישה בצד הלקוח.
דוגמה לקבלת המלצות בתבנית AddEventHandler('main', 'OnAfterUserRegister', function($fields) { if ($fields['EMAIL']) { AnalyticsService::identifyUser([ 'email' => $fields['EMAIL'], 'userId' => $fields['USER_ID'], 'firstName' => $fields['NAME'], 'phone' => $fields['PERSONAL_PHONE'], ]); } }); :
$recommendations = AnalyticsService::getRecommendations([
'type' => 'similar',
'productId' => $arResult['ID'],
'userId' => $USER->GetID(),
'limit' => 8,
]);
// Передаём в шаблон для рендера стандартными средствами Bitrix
$arResult['ANALYTICS_RECOMMENDATIONS'] = $recommendations; מה כלול בעבודה
- התקנה והגדרה של JavaScript SDK של השירות בתבנית האתר: אירועי צפייה, סל, רכישה.
- מחולל פיד קטלוג בפורמט הנדרש על ידי השירות, עם סוכן עדכון (פעם בשעה או יותר).
- מטפלי אירועים ב-PHP לזיהוי משתמשים בעת הרשמה/עדכון פרופיל.
- לקוח API בצד השרת לבקשת המלצות ואינטגרציה לרכיבי קטלוג.
- העברת נתוני הזמנות דרך API או webhook בעת תשלום מוצלח.
- ניטור אינטגרציה: רישום שגיאות, התראות, לוח Grafana.
- תיעוד: תיאור הגדרות, סכמות נתונים, אנשי קשר לתמיכה.
לכל שלב, אנו מספקים ערבויות בכתב וקובעים SLA בחוזה. בממוצע, לאחר הגדרת ההמלצות, לקוחות רואים עלייה בסל הממוצע ב-15–20% וצמיחת המרה ב-30–40%. חיסכון בזמן על איסוף נתונים ידני ויצירת דוחות מגיע עד 20 שעות בחודש. צור קשר—אנו נבחר את הפתרון האופטימלי ונראה דוגמאות לאינטגרציות שלנו. הזמינו ביקורת על מערכת האנליטיקה הנוכחית שלכם—נגלה אילו נתונים כבר מוכנים להעברה ומה צריך לשפר.
לוח זמנים
| שלב | מסגרת זמן |
|---|---|
| התקנת SDK ואירועים בסיסיים (צפייה/סל/רכישה) | 2–3 ימים |
| פיד קטלוג עם סוכן עדכון | 1–2 ימים |
| זיהוי משתמשים והעברת פרופיל | 1–2 ימים |
| המלצות בצד השרת בדפי קטלוג | 2–3 ימים |
| דיוורים מותנים דרך השירות | 3–5 ימים |
העלות מחושבת באופן אישי—תלויה במספר המוצרים, תדירות העדכון, והאם יש צורך בדיוורים מותנים. קבלו ייעוץ לפרויקט שלכם.
תקני העברת נתונים דרך CommerceML מתוארים בתיעוד של Bitrix.

