Налаштування передачі замовлень із сайту в CRM Бітрікс24

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування передачі замовлень із сайту в CRM Бітрікс24
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування передачі замовлень з сайту до CRM Бітрікс24

Замовлення оформлено на сайті — у CRM його немає. Менеджер обробляє замовлення в особистому кабінеті сайту, не бачачи історії комунікацій з клієнтом, завдань і дзвінків з Бітрікс24. Зв'язати дві системи можна через подію OnSaleOrderSaved та REST API.

Що передається до CRM

При створенні замовлення на сайті створюємо в Бітрікс24:

  • Контакт (crm.contact.add) — за даними покупця: ім'я, телефон, email.
  • Угоду (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);
}

Мепінг статусів замовлення в стадії угоди

Статуси з b_sale_status (таблиця сайту) потрібно привести до стадій воронки Бітрікс24. Стадії воронки отримуємо через crm.dealcategory.stage.list:

Статус замовлення Код статусу Стадія угоди Б24
Новий N NEW
Підтверджений P PREPARATION
Оплачений A EXECUTING
Відвантажений D FINAL_INVOICE
Завершений F WON
Скасований C LOSE

При зміні статусу замовлення на сайті — викликаємо crm.deal.update з новою стадією. ID угоди Бітрікс24 зберігаємо у властивості замовлення B24_DEAL_ID або в b_sale_order_props_value.

Зберігання зв'язки замовлення–угода

// Зберігаємо 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'  => 'UAH',
    'PRODUCT_ID'   => 0, // якщо немає каталогу в Б24 — 0
];

Якщо в Бітрікс24 є каталог товарів і він синхронізований з сайтом, передаємо реальний PRODUCT_ID для коректної аналітики по товарах.

Повторні замовлення від клієнта

При повторному замовленні того ж клієнта перевіряємо наявність контакту через crm.duplicate.findByComm за телефоном. Якщо контакт існує — використовуємо його ID, не створюємо дубль. Нова угода прив'язується до наявного контакту.

Базове налаштування передачі нових замовлень — 6–8 годин. Повна двостороння синхронізація статусів — 2–3 робочих дні.