Блог Горошко Андрея Bitrix24,PHP Как использовать сквозную аналитику при создании лида

Как использовать сквозную аналитику при создании лида

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Как использовать сквозную аналитику при создании лида». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции.

Как использовать сквозную аналитику при создании лида

> Scope: crm
>
> Кто может выполнять метод: пользователи с административным доступом к разделу CRM

Пример использования сквозной аналитики при создании лида. Предварительно создайте php-страницу с веб-формой обратной связи: Ф.И.О, телефон. На странице разместите код примера.

Что происходит во время выполнения кода?

1. Подключается стандартный js-код из сквозной аналитики Битрикс24.
2. После заполнения формы, помимо полей формы, в скрытом поле передается код для сквозной аналитики b24Tracker.guest.getTrace().
3. Затем вызывается метод crm.lead.add, в котором в поле TRACE добавляется код из getTrace.

Скрипт сквозной аналитики устанавливается на вашем сайте перед закрывающим тегом </body> на всех страницах сайта, включая страницу с формой.

  • JS
    <!DOCTYPE html>
    <html lang="ru">
        <head>
            <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
        </head>
        <body class="container">
            <h1>Feedback</h1>
            <div class="col-12">
                <p id="message"></p>
            </div>
            <form id="feedbackForm">
                <input type="hidden" id="FORM_TRACE" name="TRACE">
                <div class="row">
                    <div class="col-4 mt-3">
                        <label>Name*</label>
                    </div>
                    <div class="col-6 mt-3">
                        <input type="text" name="NAME" required>
                    </div>
                </div>
                <div class="row">
                    <div class="col-4 mt-3">
                        <label>Last name*</label>
                    </div>
                    <div class="col-6 mt-3">
                        <input type="text" name="LAST_NAME" required>
                    </div>
                </div>
                <div class="row">
                    <div class="col-4 mt-3">
                        <label>Phone*</label>
                    </div>
                    <div class="col-6 mt-3">
                        <input type="text" name="PHONE" required>
                    </div>
                </div>
                <div class="row">
                    <div class="col-sm-10">
                        <input type="submit" name="SAVE" class="btn btn-primary" value="Send">
                    </div>
                </div>
            </form>
            <script>
                window.onload = function(e){
                    var traceInput = document.getElementById('FORM_TRACE');
                    if(traceInput)
                    {
                        traceInput.value = b24Tracker.guest.getTrace();
                    }
                }

                document.getElementById('feedbackForm').addEventListener('submit', function(event) {
                    event.preventDefault();
                    var formData = new FormData(event.target);
                    var fields = {
                        TRACE: formData.get('TRACE'),
                        NAME: formData.get('NAME'),
                        LAST_NAME: formData.get('LAST_NAME'),
                        PHONE: [{ value: formData.get('PHONE') }]
                    };

                    BX24.callMethod(
                        'crm.lead.add',
                        { fields: fields },
                        function(result) {
                            var messageElement = document.getElementById('message');
                            if(result.error()) {
                                messageElement.textContent = 'Feedback has not been saved: ' + result.error_description();
                            } else {
                                messageElement.textContent = 'Feedback saved';
                            }
                        }
                    );
                });
            </script>
        </body>
    </html>
  • PHP

Для использования примеров на PHP настройте работу класса CRest и подключите файл crest.php в файлах, где используется этот класс. Подробнее

    <!DOCTYPE html>
    <html lang="ru">
        <head>
            <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
        </head>
        <body class="container">
            <h1>Feedback</h1>
            <?
            include("crest.php");
            $message = '';
            if(!empty($_POST['SAVE']))
            {
                $fields = [
                    'TRACE' => $_POST['TRACE'],
                    'NAME' => $_POST['NAME'],
                    'LAST_NAME' => $_POST['LAST_NAME'],
                    'PHONE' => [ [ 'value'=>$_POST['PHONE'] ] ],
                ];
                $result = CRest::call(
                    'crm.lead.add',
                    [
                        'fields' => $fields
                    ]
                );
                if (!empty($result['result']))
                {
                    $message = 'Feedback saved';
                }
                elseif (!empty($result['error_description']))
                {
                    $message =    'Feedback has not been saved: '.$result['error_description'];
                }
                else
                {
                    $message = 'Feedback has not been saved';
                }
            }
            ?>
            <div class="col-12">
                <p><?=$message?></p>
            </div>
            <form method="post" action="">
                <input type="hidden" id="FORM_TRACE" name="TRACE">
                <div class="row">
                    <div class="col-4 mt-3">
                        <label>Name*</label>
                    </div>
                    <div class="col-6 mt-3">
                        <input type="text" name="NAME" required>
                    </div>
                </div>
                <div class="row">
                    <div class="col-4 mt-3">
                        <label>Last name*</label>
                    </div>
                    <div class="col-6 mt-3">
                        <input type="text" name="LAST_NAME" required>
                    </div>
                </div>
                <div class="row">
                    <div class="col-4 mt-3">
                        <label>Phone*</label>
                    </div>
                    <div class="col-6 mt-3">
                        <input type="text" name="PHONE" required>
                    </div>
                </div>
                <div class="row">
                    <div class="col-sm-10">
                        <input type="submit" name="SAVE" class="btn btn-primary" value="Send">
                    </div>
                </div>
            </form>
            <script>
                window.onload = function(e){
                    var traceInput = document.getElementById('FORM_TRACE');
                    if(traceInput)
                    {
                        traceInput.value = b24Tracker.guest.getTrace();
                    }
                }
            </script>
        </body>
    </html>

💡 Экспертное мнение и рекомендации

Советы эксперта по интеграции:

  • Всегда используйте кэширование при частых запросах к битрикс, чтобы разгрузить базу данных.
  • Соблюдайте стандарты PSR при написании обработчиков для «Как использовать сквозную аналитику при создании лида».
  • Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Как использовать метод SDK crm.quote.contact.items.set в Битрикс24Как использовать метод SDK crm.quote.contact.items.set в Битрикс24

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Как использовать метод SDK crm.quote.contact.items.set в Битрикс24», проанализируем

Установить автоматический статус «Отошел» im.user.status.idle.startУстановить автоматический статус «Отошел» im.user.status.idle.start

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Установить автоматический статус «Отошел» im.user.status.idle.start». Вы узнаете экспертные методики работы с im.user.status.idle.start и

Получить список доступных хранилищ disk.storage.getlistПолучить список доступных хранилищ disk.storage.getlist

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Получить список доступных хранилищ disk.storage.getlist». Вы узнаете экспертные методики работы с disk.storage.getlist и