Как бизнесу с отделом продаж проанализировать работу при помощи BI-аналитики: кейс производственной компании SHEDLER и ЗЕКСЛЕР

Алексей Чубыкин
Web-разработчик

Всем привет! Команда разработки ЗЕКСЛЕР делится кейсом на тему бизнес-аналитики. Разберём на примере реальную задачу производственной компании с отделом продаж, которая возникла в процессе ведения комплексного маркетинга. А пока подписывайтесь на наш Телеграм-канал, где кратко рассказываем о применяемых методах, инструментах, делимся полезными видео и прочими материалами.

Рабочие процессы настроены – пора переходить на новый уровень

С компанией SHEDLER работаем с 2023 года, с самого основания. Занимается производством модульных зданий и блок-контейнеров. Работаем комплексно: разработали сайт (кейс описывали здесь), осуществляем поддержку, даем контекстную рекламу (отдельно об этом писали здесь), SEO, контролируем отдел продаж, оптимизируем CRM Битрикс24 под бизнес клиента.

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

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

Внедрение BI-аналитики

Для улучшения работы, в первую очередь, необходимо получить полную картину о всех лидах и продажах, нагрузке на каждого менеджера, выручке и т.д. Собрать все данные решили при помощи внедрения системы BI-аналитики на базе интеграции Bitrix24 с Yandex DataLens. Это позволяет автоматизировать сбор и анализ данных, предоставляя наглядные отчёты и дашборды для мониторинга KPI и выявления тенденций.

Берем Bitrix24 REST API — набор инструментов и методов для взаимодействия с системой Bitrix24.

С помощью REST API можно автоматизировать такие задачи, как создание и управление лидами, проектами, контактами, сделками и другими объектами в Bitrix24. Это даёт возможность разработчикам расширять функциональность системы и адаптировать её под конкретные потребности бизнеса.

На практике часто приходится автоматизировать выполнение задач в CRM, и REST API помогает справиться с этим быстро и эффективно.

Еще один инструмент – Yandex DataLens, который позволяет анализировать информацию о продажах, клиентах, сделках и других аспектах бизнеса, используя мощные инструменты визуализации и анализа данных. В результате компания может получить более глубокое понимание бизнес-процессов, улучшить качество принятия решений и повысить эффективность работы.

Рассказываем, как получали данные по лидам и сделкам из Bitrix24 и обрабатывали их в системе BI-аналитики Yandex Datalens. Пример полученного дашборда с визуализацией всей информации:

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

Сбор всех данных из Битрикс24

Для выборки данных изначально определили, какая информация из Bitrix24 будет использоваться для анализа в Yandex DataLens (например, инфо о сделках, лидах, продажах и т. д.).

Настроили процесс загрузки данных из Bitrix24 в Yandex DataLens. В нашем случае выгрузка происходит в CSV-файл и в Googlе-таблицы. Из Google-таблиц данные забираются через встроенное в DataLens подключение к источнику данных.

Информация в таблицах и CSV-файлах автоматически актуализируется раз в сутки. Периодичность обновления данных может быть любым.

Для подключения к REST API, было создано локальное приложение, которое хранится у нас на сервере.

Для работы с Google таблицами на сервере, в папке с приложением установили PHP-библиотеку. Сами таблицы первоначально создаются через веб-интерфейс. Далее создается сервисный аккаунт Google. Этот аккаунт (e-mail) привязывается к созданной таблице с правами редактирования:

На стороне приложения подключаемся к Google Sheets:

require_once (__DIR__.'/google-api-php-client/vendor/autoload.php');
require_once (__DIR__.'/crest.php');
// Google Sheets
$googleAccountKeyFilePath = __DIR__ . '/sheets-415519-####.json';
putenv( 'GOOGLE_APPLICATION_CREDENTIALS=' . $googleAccountKeyFilePath );
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope( 'https://www.googleapis.com/auth/spreadsheets' );
$service = new Google_Service_Sheets( $client );
// leads sheet
$spreadsheetId = '#####';
// deals sheet
$spreadsheetId_deals = '####';

Используя API Bitrix24 получаем информацию по лидам и сделкам.

/* Формируем список значений пользовательских полей*/
$uf = CRest::call(
'crm.lead.fields',
);
$uf_deals = CRest::call(
'crm.deal.fields',
);

Ввиду того, что лидов и сделок много, код был оптимизирован для пакетной обработки данных (в нашем случае по 50 элементов за раз):

function getBatch($prevID){
          $batch=[];
          for($i=0; $i<50; $i++){
              $batch['step_'.$i]=[
                  'method'=>'crm.lead.list',
                  'params'=> [
                      'order'=>[
                          'ID'=>'ASC'
                      ],
                      'filter'=>[
                          '>ID'=>$prevID,
                      ],
                      'select'=>[
                          'ID',
                          'DATE_CREATE',
                          'ASSIGNED_BY_ID',
                          'UF_CRM_1689860020704', // category
                          'UF_CRM_1691478421965', // region
                          'STATUS_ID',
                          'STATUS_SEMANTIC_ID',
                          'SOURCE_ID'
                      ],
                      'start'=>-1,
                  ],
              ];
              $prevID = '$result[step_'.$i.'][49][ID]';
          }
          return $batch;
}
function downloadLead($managers, $categories, $regions){
          $prevID=0;
          while(true){
              $batch=getBatch($prevID);
              $result=CRest::callBatch($batch,1);
              if (!empty($result['result']['result'])){
                  foreach($result['result']['result'] as $list){
                      $last =end($list);
                      if($last['ID']> $prevID){
                          $prevID = $last['ID'];
                          save($list, $managers, $categories, $regions);
                      }
                      else{
                          break 2;
                      }
                  }
              }
              else{
                  break;
              }
          }
      }

Пример кода получения и сохранения лидов в файл и последующую отправку в Google таблицы:

if (file_exists(__DIR__.'/leads.csv')) {
  unlink(__DIR__.'/leads.csv');
}
$fp_header = fopen(__DIR__.'/leads.csv', 'ab');
fputcsv($fp_header, ['ID', 'DATE', 'MANAGER_ID', 'STATUS_ID', 'STATUS_SEMANTIC_ID', 'SOURCE', 'CAREGORY_ID', 'REGION_ARRAY', 'MANAGER', 'CAREGORY', 'REGION', 'STATUS_NAME', 'STATUS', 'SOURCE_NAME']);
fclose($fp_header);
$result = downloadLead($managers, $categories, $regions);
$response = $service->spreadsheets_values->clear($spreadsheetId, 'leads', new Google_Service_Sheets_ClearValuesRequest([]));
$rows_leads = array_map('str_getcsv', file('leads.csv'));
$values_leads = array();
foreach($rows_leads as $row) {
  $values_leads[] = $row;
}
$body = new Google_Service_Sheets_ValueRange( [ 'values' => $values_leads ] );
$options = array( 'valueInputOption' => 'RAW' );
$service->spreadsheets_values->update( $spreadsheetId, 'leads', $body, $options );

Полученная таблица с данными:

Следующим этапом была обработка данных в Yandex DataLens.

Создали дашборды на основе анализа данных, чтобы отслеживать ключевые показатели эффективности (KPI) и принимать обоснованные решения. 

Такая сборка данных в удобном и актуальном дашборде позволяет в любой момент руководителю, РОПу или другому заинтересованному лицу увидеть статистику всей работы, продаж, нагрузки на менеджеров и эффективность менеджеров. Не нужно для этого делать дополнительные отчёты через битрикс и прочие сервисы, всё индивидуально настроено в дашборде с понятными графиками и фильтрами.

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

Статьи по теме