מצב טיפוסי: חנות מקוונת על 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,
]);
// Передаём в шаблон для рендера стандартными средствами Битрикс
$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.

