הגדרת העברת הזמנות מהאתר ל-CRM של Bitrix24
מתבצעת הזמנה באתר, אבל ה-CRM ריק. המנהל מעתיק נתונים ידנית — 30 דקות לכל הזמנה. עם 20 הזמנות ביום, מדובר ב-10 שעות אבודות. הלקוח מתקשר בחזרה, אבל אין היסטוריה. חיבור האתר ו-Bitrix24 באמצעות אירוע OnSaleOrderSaved ו-REST API הוא משימה שלוקחת כמה שעות וחוסכת עשרות שעות עבודה בחודש. אנחנו, מומחי Bitrix24 מוסמכים עם ניסיון של למעלה מ-6 שנים, ביצענו למעלה מ-50 אינטגרציות כאלה. אנחנו מבטיחים פעילות יציבה ללא אובדן נתונים ועם שינויים מינימליים. נבחן את הפרויקט שלך תוך יום אחד — בקש ייעוץ.
העברת הזמנות ל-CRM: למה זה חשוב?
ללא יצירת עסקאות אוטומטית, מנהלים עובדים "בעיוורון". אנשי קשר נוצרים ידנית, סטטוסים לא מסונכרנים, וחסרה אנליטיקה. התוצאה: לידים אבודים וירידה ב-LTV. אינטגרציה דרך REST API פותרת את הבעיות האלה: כל נתוני הלקוח, סכום ההזמנה ורשימת המוצרים נכנסים מיד למשפך. זמן עיבוד ההזמנות מצטמצם עד 80% — זה לא רק נוחות אלא חיזוק ישיר להמרות. הזנה ידנית אורכת 30 דקות, אוטומציה אורכת 3 דקות — פי 10 מהר יותר. חיסכון בעלויות תפעול יכול להגיע עד $1.4k–1.9k בחודש עם 30 הזמנות ביום. עם 50 הזמנות ביום, החיסכון עולה על $1.8k–2.6k בחודש.
איך ליישם אינטגרציה?
מה מועבר ל-CRM
בעת יצירת הזמנה, אנו יוצרים ב-Bitrix24:
-
איש קשר (
crm.contact.add) — עם שם, טלפון, אימייל. -
עסקה (
crm.deal.add) — עם סכום, סטטוס וקישור לאיש קשר. -
שורות מוצרים (
crm.deal.productrows.set) — רשימת פריטים עם כמות ומחיר.
עבור ישויות משפטיות, ניצור בנוסף חברה (crm.company.add) ונקשר דרך COMPANY_ID.
מטפל אירועי הזמנה
// В init.php или обработчике модуля
AddEventHandler('sale', 'OnSaleOrderSaved', 'onOrderSavedHandler');
function onOrderSavedHandler($order)
{
$isNew = $order->isNew();
if (!$isNew) return; // обрабатываем только новые заказы
$orderId = $order->getId();
$orderProps = $order->getPropertyCollection();
$basket = $order->getBasket();
// Собираем данные покупателя из свойств заказа
$name = $orderProps->getItemByOrderPropertyCode('NAME')->getValue();
$phone = $orderProps->getItemByOrderPropertyCode('PHONE')->getValue();
$email = $orderProps->getItemByOrderPropertyCode('EMAIL')->getValue();
// Передаём в Б24
$b24 = new B24Integration();
$contactId = $b24->findOrCreateContact($phone, $email, $name);
$dealId = $b24->createDeal($orderId, $order->getPrice(), $contactId);
$b24->setDealProducts($dealId, $basket);
} מיפוי שדות בין הזמנה ל-CRM
| שדה הזמנה (מאפיין) | שדה איש קשר (CRM) | הערה |
|---|---|---|
| NAME | NAME + LAST_NAME | פיצול לפי רווח (אופציונלי) |
| PHONE | PHONE[0].VALUE | מספר עם קידומת מדינה |
| EMAIL[0].VALUE | אימייל ראשי | |
| הערה | UF_CRM_ORDER_COMMENT | שדה מותאם אישית אם נדרש |
בדומה לעסקאות: סכום הזמנה → OPPORTUNITY, סטטוס → STAGE_ID.
הגדרת מיפוי סטטוסים
| סטטוס הזמנה | קוד סטטוס | שלב עסקה ב-Bitrix24 |
|---|---|---|
| חדשה | N | NEW |
| מאושרת | P | PREPARATION |
| שולמה | A | EXECUTING |
| נשלחה | D | FINAL_INVOICE |
| הושלמה | F | WON |
| בוטלה | C | LOSE |
כאשר סטטוס ההזמנה משתנה באתר, קרא ל-// В init.php или обработчике модуля AddEventHandler('sale', 'OnSaleOrderSaved', 'onOrderSavedHandler'); function onOrderSavedHandler($order) { $isNew = $order->isNew(); if (!$isNew) return; // обрабатываем только новые заказы $orderId = $order->getId(); $orderProps = $order->getPropertyCollection(); $basket = $order->getBasket(); // Собираем данные покупателя из свойств заказа $name = $orderProps->getItemByOrderPropertyCode('NAME')->getValue(); $phone = $orderProps->getItemByOrderPropertyCode('PHONE')->getValue(); $email = $orderProps->getItemByOrderPropertyCode('EMAIL')->getValue(); // Передаём в Б24 $b24 = new B24Integration(); $contactId = $b24->findOrCreateContact($phone, $email, $name); $dealId = $b24->createDeal($orderId, $order->getPrice(), $contactId); $b24->setDealProducts($dealId, $basket); } עם השלב החדש. שמור את מזהה העסקה של Bitrix24 במאפיין ההזמנה crm.deal.update או ב-B24_DEAL_ID. זמן שנחסך: במקום 5 דקות של עדכון ידני — 0.5 שניות אוטומטית.
שמירת קישור הזמנה–עסקה
// Сохраняем ID сделки в свойствах заказа
$dealProp = $orderProps->getItemByOrderPropertyCode('B24_DEAL_ID');
if ($dealProp) {
$dealProp->setValue($dealId);
$order->save();
} שורות מוצרים
b_sale_order_props_value מחליף את כל רשימת המוצרים. כל פריט:
$products[] = [
'PRODUCT_NAME' => $basketItem->getField('NAME'),
'PRICE' => $basketItem->getPrice(),
'QUANTITY' => $basketItem->getQuantity(),
'CURRENCY_ID' => 'USD',
'PRODUCT_ID' => 0, // если нет каталога в Б24 — 0
];אם ב-Bitrix24 יש קטלוג מוצרים מסונכרן עם האתר דרך CommerceML, העבר את // Сохраняем ID сделки в свойствах заказа $dealProp = $orderProps->getItemByOrderPropertyCode('B24_DEAL_ID'); if ($dealProp) { $dealProp->setValue($dealId); $order->save(); } האמיתי לניתוח מוצרים מדויק.
איך להימנע מכפילויות אנשי קשר?
בהזמנות חוזרות, בדוק אם קיים איש קשר דרך crm.deal.productrows.set לפי טלפון. אם איש הקשר קיים, השתמש ב-$products[] = [ 'PRODUCT_NAME' => $basketItem->getField('NAME'), 'PRICE' => $basketItem->getPrice(), 'QUANTITY' => $basketItem->getQuantity(), 'CURRENCY_ID' => 'USD', 'PRODUCT_ID' => 0, // если нет каталога в Б24 — 0 ]; שלו — אל תיצור כפילות. העסקה החדשה מקושרת לאיש הקשר הקיים. לפי תיעוד REST API של Bitrix24, השיטה crm.duplicate.findByComm מונעת כפילויות. בדיקה ידנית אורכת 5 דקות לכל הזמנה, אוטומטית — 0.5 שניות.
שגיאות נפוצות והפתרונות שלהן
מה בדרך כלל משתבש?
- חוסר בדיקת כפילויות אנשי קשר — מוביל לעומס ב-CRM. פתרון: תמיד קרא ל-
PRODUCT_ID. - מיפוי סטטוסים שגוי: לדוגמה, אם למשפך יש מספר שלבים וקוד הסטטוס לא תואם. פתרון: הסכם על המיפוי לפני ההשקה.
- חריגה ממגבלות בקשות REST API. פתרון: השתמש בתור סוכנים ולא יותר מ-2 בקשות בשנייה.
- התעלמות משדות מותאמים אישית: אם להזמנה יש מאפיינים מותאמים אישית, יש למפות אותם במפורש ל-UF_CRM_*.
הגישה והתהליך שלנו
אנו משתמשים בטכנולוגיות: PHP 8.1+, אינפובלוקים v2.0, Bitrix ORM, REST API (ענן או מקומי). המטפלים עטופים ב-try-catch, ושגיאות נכתבות ל-HL-block. הרשאות Webhook מוגדרות: crm.duplicate.findByComm, ID, crm.duplicate.findByComm, crm.contact.add, crm.deal.add. אנו עומדים במגבלות — לא יותר מ-2 בקשות בשנייה.
שלבי העבודה
- ניתוח — לימוד מבנה ההזמנות, משפך המכירות, זיהוי שדות לא סטנדרטיים.
- עיצוב — יצירת תוכנית מיפוי שדות וסטטוסים, הסכם איתך.
- יישום — כתיבת מטפל, הגדרת webhook, בדיקה על הזמנה לדוגמה.
- בדיקות — בדיקת יצירה/עדכון עסקאות, כפילויות, טיפול בשגיאות.
- פריסה — העלאה לסביבת הייצור, ניטור לוגים ביום הראשון, מתן אחריות.
הערכות זמנים
הגדרה בסיסית להזמנות חדשות — 6–8 שעות. סנכרון סטטוסים דו-כיווני מלא — 2–3 ימי עסקים. העלות מחושבת בנפרד לאחר ביקורת על האתר שלך. נבחן את הפרויקט שלך — בקש ייעוץ.
בעיות טיפוסיות נובעות מחוסר בדיקות כפילויות או מיפוי סטטוסים שגוי. הניסיון שלנו מראה: 80% מהשגיאות נפתרות על ידי הוספת בדיקות ועיבוד אסינכרוני. אנו מבטיחים אינטגרציה יציבה ותמיכה לאחר ההשקה. צור קשר לביקורת מפורטת על המערכת שלך.

