Интеграция Woocommerce и Bitrix24


Интеграция Woocommerce и Bitrix24 — сложно или можно осуществить самостоятельно?
На самом деле ничего сложного в самостоятельной интеграции Woocommerce и Bitrix24 нет. После ознакомления с данной статьей, каждый вебмастер сможет это проделать на своем сайте. Тем более, что скрипт по интеграции универсальный и его можно просто вставить в function.php вашей текущей темы на WordPress и не «заморачиваться».

Предлагаю на выбор два скрипта по интеграции:

  1. Скрипт по интеграции с помощью упрощенного Rest API.
    Единственное, что необходимо будет сделать — указать [ваше_название] от Битрикс 24, а так же логин и пароль в данном скрипте.
  2. Скрипт по интеграции при помощи входящего вебхука Битрикс24.
    Необходимо будет создать входящий вубхук в Bitrix24 и указать [ваше_название] от Битрикс24, [идентификатор_пользователя] и [код_вебхука].

Рекомендую использовать скрипт по интеграции при помощи входящего вебхука Битрикс24, так как он более безопасный в использовании и функциональнее.

Готовый скрипт для интеграции Woocommerce и Bitrix24

Один из этих скриптов интеграции, на ваш выбор, необходимо внести в functions.php вашей текущей темы на WordPress.
Для этого необходимо перейти в Внешний вид → Редактор → Функции темы.
Открыв файл functions.php необходимо вставить полученный код в самом низу документа.

Скрипт по интеграции с помощью упрощенного Rest API

Внимание! Не забудьте внести свои данные для:

  • [ваше_название].bitrix24.ru — укажите ваш домен в Bitrix24;
  • your_email@email.com — укажите свой логин от Bitrix24;
  • your_password — укажите ваш пароль от Bitrix24.

Прежде чем указывать ваш логин и пароль в PHP скрипте, ознакомитесь, пожалуйста, с разделом «Логин и пароль пользователя Вашей CRM».

add_action( 'woocommerce_thankyou', 'my_custom_tracking' );
function my_custom_tracking( $order_id ) {
  // Подключаемся к серверу CRM
  define('CRM_HOST', '[ваше_название].bitrix24.ru'); // Ваш домен CRM системы
  define('CRM_PORT', '443'); // Порт сервера CRM. Установлен по умолчанию
  define('CRM_PATH', '/crm/configs/import/lead.php'); // Путь к компоненту lead.rest

  
  // Авторизуемся в CRM под необходимым пользователем:
  // 1. Указываем логин пользователя Вашей CRM по управлению лидами
  define('CRM_LOGIN', 'your_email@email.com');
  // 2. Указываем пароль пользователя Вашей CRM по управлению лидами
  define('CRM_PASSWORD', 'your_password');

  // Получаем информации по заказу
  $order = wc_get_order( $order_id );
  $order_data = $order->get_data();

  // Получаем базовую информация по заказу
  $order_id = $order_data['id'];
  $order_currency = $order_data['currency'];
  $order_payment_method_title = $order_data['payment_method_title'];
  $order_shipping_totale = $order_data['shipping_total'];
  $order_total = $order_data['total'];

  $order_base_info = "<hr><strong>Общая информация по заказу</strong><br>
  ID заказа: $order_id<br>
  Валюта заказа: $order_currency<br>
  Метода оплаты: $order_payment_method_title<br>
  Стоимость доставки: $order_shipping_totale<br>
  Итого с доставкой: $order_total<br>";

  // Получаем информация по клиенту
  $order_customer_id = $order_data['customer_id'];
  $order_customer_ip_address = $order_data['customer_ip_address'];
  $order_billing_first_name = $order_data['billing']['first_name'];
  $order_billing_last_name = $order_data['billing']['last_name'];
  $order_billing_email = $order_data['billing']['email'];
  $order_billing_phone = $order_data['billing']['phone'];

  $order_client_info = "<hr><strong>Информация по клиенту</strong><br>
  ID клиента = $order_customer_id<br>
  IP адрес клиента: $order_customer_ip_address<br>
  Имя клиента: $order_billing_first_name<br>
  Фамилия клиента: $order_billing_last_name<br>
  Email клиента: $order_billing_email<br>
  Телефон клиента: $order_billing_phone<br>";

  // Получаем информацию по доставке
  $order_shipping_address_1 = $order_data['shipping']['address_1'];
  $order_shipping_address_2 = $order_data['shipping']['address_2'];
  $order_shipping_city = $order_data['shipping']['city'];
  $order_shipping_state = $order_data['shipping']['state'];
  $order_shipping_postcode = $order_data['shipping']['postcode'];
  $order_shipping_country = $order_data['shipping']['country'];

  $order_shipping_info = "<hr><strong>Информация по доставке</strong><br>
  Страна доставки: $order_shipping_state<br>
  Город доставки: $order_shipping_city<br>
  Индекс: $order_shipping_postcode<br>
  Адрес доставки 1: $order_shipping_address_1<br>
  Адрес доставки 2: $order_shipping_address_2<br>";

  // Получаем информации по товару
  $order->get_total();
  $line_items = $order->get_items();
  foreach ( $line_items as $item ) {
    $product = $order->get_product_from_item( $item );
    $sku = $product->get_sku(); // артикул товара
    $id = $product->get_id(); // id товара
    $name = $product->get_name(); // название товара
    $description = $product->get_description(); // описание товара
    $stock_quantity = $product->get_stock_quantity(); // кол-во товара на складе
    $qty = $item['qty']; // количество товара, которое заказали
    $total = $order->get_line_total( $item, true, true ); // стоимость всех товаров, которые заказали, но без учета доставки

    $product_info[] = "<hr><strong>Информация о товаре</strong><br>
    Название товара: $name<br>
    ID товара: $id<br>
    Артикул: $sku<br>
    Описание: $description<br>
    Заказали (шт.): $qty<br>
    Наличие (шт.): $stock_quantity<br>
    Сумма заказа (без учета доставки): $total;";
  }

  $product_base_infо = implode('<br>', $product_info);

  $subject = "Заказ с сайта № $order_id";

  // Формируем параметры для создания лида в переменной $postData = array
  $postData = array(
    'TITLE' => $subject,
    'COMMENTS' => $order_base_info.' '.$order_client_info.' '.$order_shipping_info.' '.$product_base_infо
  );

  // Передаем данные из Woocommerce в Bitrix24
  if (defined('CRM_AUTH')) {
    $postData['AUTH'] = CRM_AUTH;
  } else {
    $postData['LOGIN'] = CRM_LOGIN;
    $postData['PASSWORD'] = CRM_PASSWORD;
  }

  $fp = fsockopen("ssl://".CRM_HOST, CRM_PORT, $errno, $errstr, 30);
  if ($fp) {
    $strPostData = '';
    foreach ($postData as $key => $value)
    $strPostData .= ($strPostData == '' ? '' : '&').$key.'='.urlencode($value);

    $str = "POST ".CRM_PATH." HTTP/1.0\r\n";
    $str .= "Host: ".CRM_HOST."\r\n";
    $str .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $str .= "Content-Length: ".strlen($strPostData)."\r\n";
    $str .= "Connection: close\r\n\r\n";

    $str .= $strPostData;

    fwrite($fp, $str);

    $result = '';
    while (!feof($fp))
    {
      $result .= fgets($fp, 128);
    }
    fclose($fp);

    $response = explode("\r\n\r\n", $result);

    $output = '<pre>'.print_r($response[1], 1).'</pre>';
  } else {
    echo 'Connection Failed! '.$errstr.' ('.$errno.')';
  }
}

Скрипт по интеграции при помощи входящего вебхука Битрикс24

Внимание!

  1. Активируйте входящий вебхук в Битрикс 24
  2. Не забудьте внести свои данные для:
    • [ваше_название].bitrix24.ru — укажите ваш домен в Bitrix24;
    • [идентификатор_пользователя] — укажите свой идентификатор пользователя;
    • [код_вебхука] — укажите свой код вебхука Битрикс24.

Где получить [идентификатор_пользователя], [код_вебхука] и как активировать входящий вебхук в Битрикс 24 можно узнать здесь: «Как создать входящий вубхук».

add_action( 'woocommerce_thankyou', 'my_custom_tracking' );
function my_custom_tracking( $order_id ) {

  // Получаем информации по заказу
  $order = wc_get_order( $order_id );
  $order_data = $order->get_data();

  // Получаем базовую информация по заказу
  $order_id = $order_data['id'];
  $order_currency = $order_data['currency'];
  $order_payment_method_title = $order_data['payment_method_title'];
  $order_shipping_totale = $order_data['shipping_total'];
  $order_total = $order_data['total'];

  $order_base_info = "<hr><strong>Общая информация по заказу</strong><br>
  ID заказа: $order_id<br>
  Валюта заказа: $order_currency<br>
  Метода оплаты: $order_payment_method_title<br>
  Стоимость доставки: $order_shipping_totale<br>
  Итого с доставкой: $order_total<br>";

  // Получаем информация по клиенту
  $order_customer_id = $order_data['customer_id'];
  $order_customer_ip_address = $order_data['customer_ip_address'];
  $order_billing_first_name = $order_data['billing']['first_name'];
  $order_billing_last_name = $order_data['billing']['last_name'];
  $order_billing_email = $order_data['billing']['email'];
  $order_billing_phone = $order_data['billing']['phone'];

  $order_client_info = "<hr><strong>Информация по клиенту</strong><br>
  ID клиента = $order_customer_id<br>
  IP адрес клиента: $order_customer_ip_address<br>
  Имя клиента: $order_billing_first_name<br>
  Фамилия клиента: $order_billing_last_name<br>
  Email клиента: $order_billing_email<br>
  Телефон клиента: $order_billing_phone<br>";

  // Получаем информацию по доставке
  $order_shipping_address_1 = $order_data['shipping']['address_1'];
  $order_shipping_address_2 = $order_data['shipping']['address_2'];
  $order_shipping_city = $order_data['shipping']['city'];
  $order_shipping_state = $order_data['shipping']['state'];
  $order_shipping_postcode = $order_data['shipping']['postcode'];
  $order_shipping_country = $order_data['shipping']['country'];

  $order_shipping_info = "<hr><strong>Информация по доставке</strong><br>
  Страна доставки: $order_shipping_state<br>
  Город доставки: $order_shipping_city<br>
  Индекс: $order_shipping_postcode<br>
  Адрес доставки 1: $order_shipping_address_1<br>
  Адрес доставки 2: $order_shipping_address_2<br>";

  // Получаем информации по товару
  $order->get_total();
  $line_items = $order->get_items();
  foreach ( $line_items as $item ) {
    $product = $order->get_product_from_item( $item );
    $sku = $product->get_sku(); // артикул товара
    $id = $product->get_id(); // id товара
    $name = $product->get_name(); // название товара
    $description = $product->get_description(); // описание товара
    $stock_quantity = $product->get_stock_quantity(); // кол-во товара на складе
    $qty = $item['qty']; // количество товара, которое заказали
    $total = $order->get_line_total( $item, true, true ); // стоимость всех товаров, которые заказали, но без учета доставки

    $product_info[] = "<hr><strong>Информация о товаре</strong><br>
    Название товара: $name<br>
    ID товара: $id<br>
    Артикул: $sku<br>
    Описание: $description<br>
    Заказали (шт.): $qty<br>
    Наличие (шт.): $stock_quantity<br>
    Сумма заказа (без учета доставки): $total;";
  }

  $product_base_infо = implode('<br>', $product_info);

  $subject = "Заказ с сайта № $order_id";

  // Формируем URL в переменной $queryUrl для отправки сообщений в лиды Битрикс24, где
  // указываем [ваше_название], [идентификатор_пользователя] и [код_вебхука]
  $queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json';
  // Формируем параметры для создания лида в переменной $queryData
  $queryData = http_build_query(array(
    'fields' => array(
      'TITLE' => $subject,
      'COMMENTS' => $order_base_info.' '.$order_client_info.' '.$order_shipping_info.' '.$product_base_infо
    ),
    'params' => array("REGISTER_SONET_EVENT" => "Y")
  ));

  // Обращаемся к Битрикс24 при помощи функции curl_exec
  $curl = curl_init();
  curl_setopt_array($curl, array(
    CURLOPT_SSL_VERIFYPEER => 0,
    CURLOPT_POST => 1,
    CURLOPT_HEADER => 0,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $queryUrl,
    CURLOPT_POSTFIELDS => $queryData,
  ));
  $result = curl_exec($curl);
  curl_close($curl);
  $result = json_decode($result, 1);

  if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."<br>";
}

После того как вы внесете данный скрипт в ваш functions.php текущей темы, то заказы с сайта будут автоматически созданы в CRM системе в виде лидов. Единственное, все данные будут поступать в поле комментарий. Это связано с тем, что при написание скрипта руководствовался тем, что у каждого свои потребности куда заносить то или иное значение, поэтому все поступающие данные из Woocommerce передаю в поле комментарий 'COMMENTS' Bitrix24. Однако вы можете самостоятельно разнести нужные данные по необходимым вам полям в Битрикс 24. О том какие поля доступны по умолчанию в Битрикс 24 вы можете узнать из Таблицы параметров из соответствующих справочников Bitrix24.

Интеграция Woocommerce и Bitrix24
Самостоятельная интеграция Woocommerce и Bitrix24

Как работают скрипты по интеграции Woocommerce и Bitrix24?

Любой из вышеприведенных php cкриптов по интеграции состоит из двух частей:

  1. php скрипт для отправки данных в Битрикс24:
    • либо с помощью упрощенного Rest API;
    • либо при помощи входящего вебхука Битрикс24.
  2. Хука перехвата введенных данных из Woocommerce.

Так как php скрипт для создание лидов в Битрикс24 через упрощенный Rest API и php скрипт для создание лидов в Битрикс24 при помощи входящего вебхука Битрикс24 — стандартизированное решение команды Битрикс, которое имеет множество ответов и мануалов на русском языке, то решение с хуком для Woocommerce не так популярно. Поэтому предлагаю остановиться на нем по подробнее.

Хук для перехвата данных заказа из Woocommerce

Что такое хук — это тоже самое, что и callback, т.е перехват функций вызова в сторонних процесса.
Поэтому чтобы получить данные по заказу лучше всего использовать поддерживаемый хук Woocommerce — woocommerce_thankyou с функцией получения данных по по id заказу — order_id:

add_action( 'woocommerce_thankyou', 'my_custom_tracking' );
function my_custom_tracking( $order_id ) {
  // получение информации по заказу
  $order = wc_get_order( $order_id );
  $order_data = $order->get_data();

}

Таким образом для $order_data мы получаем массив, в котором хранятся следующие значения:

array(
    // Abstract order props.
    'parent_id'            => 0,
    'status'               => '',
    'currency'             => '',
    'version'              => '',
    'prices_include_tax'   => false,
    'date_created'         => null,
    'date_modified'        => null,
    'discount_total'       => 0,
    'discount_tax'         => 0,
    'shipping_total'       => 0,
    'shipping_tax'         => 0,
    'cart_tax'             => 0,
    'total'                => 0,
    'total_tax'            => 0,

    // Order props.
    'customer_id'          => 0,
    'order_key'            => '',
    'billing'              => 
    array(
        'first_name' => '',
        'last_name'  => '',
        'company'    => '',
        'address_1'  => '',
        'address_2'  => '',
        'city'       => '',
        'state'      => '',
        'postcode'   => '',
        'country'    => '',
        'email'      => '',
        'phone'      => '',
    ),
    'shipping'             => 
    array(
        'first_name' => '',
        'last_name'  => '',
        'company'    => '',
        'address_1'  => '',
        'address_2'  => '',
        'city'       => '',
        'state'      => '',
        'postcode'   => '',
        'country'    => '',
    ),
    'payment_method'       => '',
    'payment_method_title' => '',
    'transaction_id'       => '',
    'customer_ip_address'  => '',
    'customer_user_agent'  => '',
    'created_via'          => '',
    'customer_note'        => '',
    'date_completed'       => null,
    'date_paid'            => null,
    'cart_hash'            => '',
)

Далее были получены некоторые значения из данного массива и объединены в переменных $order_base_info, $order_client_info и $order_shipping_info.

После этого остается получить только информацию по товару/товарам из данного заказа. Для этого была использована конструкция foreach, которая представляет собой простой способ перебора массивов.

// получение информации по товару
$order->get_total();
$line_items = $order->get_items();
foreach ( $line_items as $item ) {
  $product = $order->get_product_from_item( $item );

}

Таким образом для $product мы получаем массив, в котором хранятся следующие значения:

array(
  'id' => 0,
  'name' => '',
  'slug' => '',
  'date_created' => {
    'date' => '',
    'timezone_type' => 0,
    'timezone' => '+00 =>00'
  },
  'date_modified' => {
    'date' => '',
    'timezone_type' => 0,
    'timezone' => '+00 =>00'
  },
  'status' => '',
  'featured' => false,
  'catalog_visibility' => '',
  'description' => '',
  'short_description' => '',
  'sku' => '',
  'price' => '',
  'regular_price' => '',
  'sale_price' => '',
  'date_on_sale_from' => ,
  'date_on_sale_to' => ,
  'total_sales' => 0,
  'tax_status' => '',
  'tax_class' => '',
  'manage_stock' => false,
  'stock_quantity' => null,
  'stock_status' => '',
  'backorders' => '',
  'sold_individually' => false,
  'weight' => '',
  'length' => '',
  'width' => '',
  'height' => '',
  'upsell_ids' => [],
  'cross_sell_ids' => [],
  'parent_id' => 0,
  'reviews_allowed' => true,
  'purchase_note' => '',
  'attributes' => [],
  'default_attributes' => [],
  'menu_order' => 0,
  'virtual' => false,
  'downloadable' => false,
  'category_ids' => [],
  'tag_ids' => [],
  'shipping_class_id' => 0,
  'downloads' => [],
  'image_id' => '',
  'gallery_image_ids' => [],
  'download_limit' => 0,
  'download_expiry' => 0,
  'rating_counts' => [],
  'average_rating' => '',
  'review_count' => 0,
  'meta_data' => [{
    'id' => 0,
    'key' => '',
    'value' => ''
  }, {
    'id' => 0,
    'key' => '',
    'value' => ''
  }]
)

Далее были получены некоторые значения из данного массива и записаны в переменную $product_info[]. Где [] используются для того, чтобы можно было вынести значения переменной за пределы массива foreach.

Если в заказе будут присутствовать 2 и более товаров, то следует предусмотреть корректный вывод информации. В связи с этим была добавлена строчка $product_base_infо = implode('
', $product_info);
, которая позволяет выводить информацию по каждому отдельному товару в заказе друг под другом.

Поэтому, если Вы планируете разносить данные полученные из Woocommerce по полям Битрикс 24, то следует учесть, что товаров в заказе может быть несколько. В связи с этим, рекомендую оставить информацию по товарам в поле для комментариев.

Особенности для передачи номера телефона, email или мессенджера при интеграции с помощью входящего вебхука

При интеграции Woocommerce и Битрикс 24 с помощью входящего вебхука, необходимо учесть особенности передачи номера телефона, email или мессенджера. Что это за особенности, и как все-таки передавать данные параметры можно узнать в разделе «Учесть особенность для передачи номера телефона, email, мессенджера».

На этом интеграция Woocommerce и Bitrix24 завершена.

Понравилась статья? Поделись ей =)
Вам также может быть интересно
70 комментариев
Иван

Большое спасибо за статью! Применял другой код, но благодаря этой статье смог прописать нужный мне функционал к сайту. Спасибо!!!

Владимир из Get To the Top

не за что 😉

Дмитрий

Большое спасибо за скрипт! Такой вопрос остался — как передать поле «Примечание к заказу» в Битрикс? Очень важное поле)

Владимир из Get To the Top

Добрый день, Дмитрий

примечания к заказу должны храниться в переменной customer_note для массива order_data
Так к примеру, если следовать коду в статье, то

	***
	$order_note = $order_data['customer_note']
	***
	$order_base_info = "
	***
	Примечание к заказу: $order_note
"

Дмитрий

Сработало, большое спасибо)

Дмитрий

А, и еще, почему-то создается два лида в Битриксе, с разницей в 10 секунд буквально…

Владимир из Get To the Top

Не могу точно сказать почему у Вас именно так.
Скорее всего при оформлении заказа у вас дублируется данные в function.php

Денис

Такая же проблема. Два лида создаются. Не смог решить. Подскажите пожалуйста, как быть?

Владимир из Get To the Top

Добрый день, Денис

сложно сказать по какой причине у вас создаются два лида, так как лично не сталкивался с такой проблемой.

Если у вас получилось решить проблему, то буду признателен, если расскажите как.

Дмитрий Кот

Такая же проблема. Решили как нибудь задвоение лидов?

Владимир из Get To the Top

Скорее всего всё дело в хуке woocommerce_thankyou, который вызывается 2 раза из-за архитектуры вашего шаблона на WordPress или из-за доработок WooCoocommerce для готового шалона.

Евгений

Добрый день! У меня получилось избавиться от ошибки с помощью этого )
add_action( ‘woocommerce_thankyou’, ‘my_custom_tracking’, 50 );

А вот при попытке интегрировать не через API выдавала ошибку метода, так и не смог побороть (

Владимир из Get To the Top

Добрый день, Евгений

попробуйте заменить «woocommerce_thankyou» на «woocommerce_checkout_order_processed»

Андрей

Попробуйте этот код вне рамок cms — такая проблема была у меня когда я использовал его в шаблоне страницы WordPress

Дмитрий Кот

Да дело в Хуке.
Заменил «woocommerce_thankyou» на «woocommerce_checkout_order_processed» и все стало хорошо обрабатывать и товары отправляет и лиды не двоит. )

Владимир из Get To the Top

Добрый день, Дмитрий

спасибо за участие и вашу помощь =)

Sanek24b

Я встроил данный код в функцию моей темы. Скрипт так и не начал отправлять заказы. Что я сделал не так ?

Владимир из Get To the Top

Добрый день,

уточните, пожалуйста, что значит встроили?
Вы указали 1) ваш домен CRM системы, 2) логин пользователя CRM с правами по управлению лидами, 3) пароль для входа от п.2?

Sanek24b

Владимир, код который выше. Я вставил в functions.php, внес свой логин и пароль, адрес crm(права обязательно) .
Данный скрипт только в functions.php вставить, нужно ли еще что-то делать ?

Владимир из Get To the Top

да, код вставляется только в functions.php более никаких действий производить не нужно

Sanek24b

Получил ошибку

	Fatal error: Call to undefined method WC_Order::get_data() in wp-content/themes/mytheme/functions.php on line 147 

что это может быть ?

Владимир из Get To the Top

Скорее всего вы пользуетесь старой версией WooCommerce, где новые заказы называются по-разному.
Замените строчку $order = wc_get_order( $order_id ); на $order = new WC_Order( $order_id );

Sanek24b

на версии 3,0 сработало
а вот на версии 2,6,4 не работает (
Я настаке дали ответ но я не очень понимаю о что нужно делать в примере [ссылка заблокирована по решению администрации сайта]
Подскажите пожалуста как изменить данный плагин под 2,6,4

Павел

Спасибо за скрипт!
Помогите пожалуйста разнести поля Имя, Фамилия и номер телефона по соответсвующим полям в Бирикс.

Артем

Как-то так:

	'NAME' => $order_billing_first_name.' '.$order_billing_last_name,
	'PHONE_WORK' => $order_billing_phone,
	'EMAIL_WORK' => $order_billing_email

Таблицу параметров (имен) можно посмотреть тут https://gettotop.ru/crm/bitrix24-lidy-s-sajta-avtomaticheskoe-sozdanie-lidov/

Владимир из Get To the Top

Да, все верно. Спасибо =)

Пётр

Доброго Времени! Помогите пожалуйста скриптом готовым, для распределения Имя, Фамилия и номер телефона по соответствующим полям в Бириксе. Если не затруднит.

Владимир из Get To the Top

Добрый день, Петр

	'NAME' => $order_billing_first_name,
	'PHONE_WORK' => $order_billing_phone,
	'LAST_NAME' => $order_billing_last_name

Артем

Спасибо большое! Все работает, но у меня создается сделка не в то Направление.
У меня в Битриксе два Направления «Техподдержка» и «Продажи». Из вордпресса создается всегда почему-то в техподдержку.

Пробую передавать "CATEGORY_ID" => 0, но к сожалению ничего не меняется.

Знаете ли вы как можно указать в какое направление создавать сделку?

Владимир из Get To the Top

Добрый день, Артем
Честно говоря, никогда с категориями не сталкивался.
Поэтому буду рад, если Вы сообщите как вам удалось решить задачу.

Никита

А как сделать так чтобы лид падал не конкретному пользователю, а всему отделу продаж ?

Владимир из Get To the Top

Если за задачу отвечают все, значит за задачу никто не отвечает. Поэтому в CRM системе всегда указывается конкретный ответственный. Никак по другому.

Но, в разделе «CRM → Настройки → Права → Права доступа» можно настраивать доступ к любым лидам, сделкам, контактам как для отдельного лица, так и для группы лиц и даже отделкам компании. К примеру, там Вы можете дать доступ Отделку продаж:

  1. ко всем лидам;
  2. ко всем открытым лида;
  3. лиды отдела;
  4. лиды отдела + подотдела.

Либо вы можете организовать поочередное присвоение лидов для группы ответственных. Для данной реализации необходимо написать сценарий обработки с помощью бизнес-процесса. Конкретная реализация зависит от ситуации, для начала ознакомьтесь с бизнес-процессами в Битрикс 24.

Павел

Вставил скрипт, изменил логин, пароль и домен, но лиды не появляются. Нужно ли в самом Битрикс что-то настраивать? Возможно проблема из-за домена ***.bitrix.by, а не .ru?

Владимир из Get To the Top

Добрый день, Павел.
Нет, в битриксе ничего настраивать не нужно.
Скажите, пожалуйста, выдает ли wp какие-либо ошибки?

Максим

Прив вставке данного скрипта. сайт подвисает до бесконечности после нажатия кнопки добавить в корзину, затем, если жмешь оформить заказ…

Владимир из Get To the Top

Добрый день, Максим
сложно судить не видя почему у вас так происходит.
Может быть у вас возник конфликт из-за плагинов, или у вас старая версия Woocommerce

Владимир из Get To the Top

Проверьте не используете ли вы хук

	add_action( 'woocommerce_thankyou', 'my_custom_tracking' );
	function my_custom_tracking( $order_id ) {
		***
	}

второй раз?

Из-за дубликата использования могут происходит циклические редиректы.

Дмитрий

Доброе! вылетает на ошибку

	Parse error: syntax error, unexpected 'В В ' (T_STRING) 

показывает на самое начало
вставлял в functions и дочерней и главной темы.
обертывал if( ! function_exists(
все равно результат тот же
вордпресс 5
woo Версия 3.5.2

Владимир из Get To the Top

Добрый день, Дмитрий
ошибка syntax error, unexpected T_STRING говорит о том, что где-то ошибка синтаксисе и стоит не тот или упущен знак ', ,, ; и т.п.
Обратите внимание в какой строчке у вас ошибка и проверьте все кавычки, точки, точки с запятой в ней.

Иван

Насколько безопасны данные методы?
Указываются в явном виде логин и пароль от битрикса

Владимир из Get To the Top

  1. Скрипт по интеграции с помощью упрощенного Rest API — небезопасный способ, так как если злоумышленник получит доступ к вашему файлу function.php, то он узнает логин и пароль от Битрикс 24. Поэтому рекомендуется указывать доступы пользователя с ограниченными правами и только с правами управления лидами.
  2. Рекомендую использовать скрипт по интеграции при помощи входящего вебхука Битрикс24, так как он более безопасный. Даже если злоумышленник получит доступ к файлу function.php и узнает код входящего вебхука, то попасть в Битрикс24 он не сможет. Не сможет и скачать базу клиентов. Единственное, что он сможет — добавить лид, контакт, сделку, компанию.

Алексей

А что такое идентификатор пользователя? Где его взять? Все пересмотрел уже.

Владимир из Get To the Top

Добрый день, Алексей
узнать что такое «идентификатор пользователя» вы можете по данной ссылке как создать входящий вебхук в Битрикс24.
Если что то будет непонятно, обращайтесь.

Добрый день , хорошая статья.
Подскажите , а как получить Общую стоимость товара
ttl = сумма всех товаров без учета доставок и тд .
Спасибо за ваш ответ.

Владимир из Get To the Top

Добрый день,
вся информация по заказу храниться в массиве wc_get_order( $order_id ).
Не знаю почему, но таких данных там нет. Однако вы можете вычислить их самостоятельно:

$order_total = $order_data['total'];
$order_shipping_totale = $order_data['shipping_total'];
$ttl = $order_total - $order_shipping_totale;

Огромное спасибо!!
А будут статьи как разложить ютм метки , и отправлять их в битрикс?

Владимир из Get To the Top

Добрый день,

да, в плане стоит написание статьи по данному поводу.
Постараюсь выложить ее в ближайшее время.

Спасибо что читаете =)

Спасибо все работает

Спасибо.
Подскажите , будет ли статья , как таким образом получить поля , гугл айди клиента , ютм метки , все что касается аналитики, скажем так.
Спасибо за Ваш ответ

Владимир из Get To the Top

Добрый день,

да, в плане стоит написание статьи по данному поводу.
Постараюсь выложить ее в ближайшее время.

Спасибо что читаете =)

Александр

Владимир, спасибо за статью. Плюсую просьбу Riskoff. Может быть кратко в комменте подскажете, как передавать utm-метки? Для фиксации метки в заказе вукомерса поставил плагин UTM Leads Tracker — XLPlugins.

Добрый день . Подскажите , а как эти данные передавать сразу в сделку , а не в лид ?

Владимир из Get To the Top

Добрый день,

для этого необходимо использовать скрипт по интеграции при помощи входящего вебхука Битрикс24.
В URL, в переменной $queryUrl, для отправки в Битрикс24, нужно заменить crm.lead.add.json на crm.deal.contact.add.json.

Обращаю ваше внимание, что параметры полей для лидов в Битрикс24 могут отличаться от параметров полей для контактов, поэтому при данной реализации следует их сравнить.

Дмитрий

Владимир, подскажите: не понял, как передать название товара со всеми его вариациями в названии? Т.е. не «Cвитшот (трехниточный) + принт», а «Cвитшот (трехниточный) + принт Размер: M Выбор технологии нанесения: Сублифлок А6 (+300₽): 1 A4 (+550₽): 1».
если в корзине открыть код страницы, то это «продолжение» в названии товара подписано как variation. В массиве product такого не заметил, может смотрю плохо и не туда)
При этом в шаблонном письме о заказе все эти детали передаются.

Дмитрий

Add-ons are added in order as meta by the «wc_add_order_item_meta» function. — вот что нашел по моему вопросу, может поможет ответить. Вариации товара добавлены плагином YITH Product Add-ons.

Alexandr

Добрый день, стоит плагин woocommerce-product-addon, добавляет дополнительные свойства товара для заказа, как их перехватить и отправить в CRM, есть какие то методы. И еще как быть в общем с дополнительными полями в заказе.

Евгений

Добрый день! Возможна как то привязать товар к лиду, то есть либо создавать новый товар при новом заказе если такого товара нет, либо автоматом привязка товара к лиду, если такой товар есть, как то возможно такое реализовать?

Владимир из Get To the Top

Добрый день, Евгений

да есть возможность. Однако вам необходимо будет создать товары в Б24 заранее.
Посмотрите, пожалуйста, здесь.

Александр

Добрый день, прописал ваш скрипт (простой Rest API), но в Битрикс новых лидов не появляется и WP тоже не выдаёт никаких ошибок.
У меня сейчас в WooComerce чуть больше 250 заявок, часть завершена, часть в работе. Они все должны появиться в Битриксе? Через какое время обычно в CRM начинают поступать заявки после добавления вашего скрипта?

Владимир из Get To the Top

Добрый день,
данный скрипт передает только те заявки, которые будут оставлены после внедрения скрипта.

Ахаха, поржал 🙂 Реально этот Александр упоротый. «Они» существуютЪ !!!
Владимир, я добавил скрипт, открыл банковский счет и вот сижу жду когда миллионы долларов начнут литься нескончаемым потоком, скрипт же сам клиентов добывает и сделки заключает, так ? А еще он сам сайты делает, бензин в бензобак заливает и ремонт квартиры делает же? А то я сижу жду 🙁 Через какое время обычно начинают поступать заявки в CRM, деньги, бензин, счастье ? И вообще доколе? :))

Павел

Огромное спасибо за статью! Очень была полезной.
Интеграцию произвел без проблем

Александр

Здравствуйте!

Я сделал все как вы описали, по 2 способу — через веб хук, но на странице заказа у меня появяется ошибка:
«Ошибка при сохранении лида: Method not found!»
Подскажите что делать?

Владимир из Get To the Top

Добрый день, Александр
какая у вас версия WooCommerce?

Исабек

‘NAME’ => $order_billing_first_name.’ ‘.$order_billing_last_name,
‘PHONE_WORK’ => $order_billing_phone,
‘EMAIL_WORK’ => $order_billing_email
Добрый день не работает телефон и почта

Владимир из Get To the Top

Подскажите, какой способ интеграции используете? При помощи входящего вебхука?

Петр

Есть уже готовые интеграции для вукомерса и Contac Form 7

Владимир из Get To Top

Добрый день, Петр
да вы правы, в магазине плагинах для WP уже появились готовые интеграции.
Но как правило, каждый установленный плагин замедляет работы сайта, что негативно сказывается на SEO продвижении.
К тому же, при использовании стороннего плагина возрастает риск утечки как персональных данных пользователей, которые к вам обратились, так и ваших лидов (могут быть проданы конкурентам)

Владислав

Спасибо вам огромное за статью и развёрнутые ответы на вопросы. Очень помогли!

Дмитрий

Здравствуйте, статья просто супер, но у меня возник вопрос, можно ли как то после создания лида, получить его айди, для того что бы в этот лид добавить товар?

Оставить комментарий

Ваш адрес электронной почты опубликован не будет.Поля, обязательные для заполнения, помечены *