Перейти к содержанию

Загрузка заявок в Roistat

Зачем загружать заявки

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

  1. Заявки загружаются из CRM в Roistat. Этот способ подходит, если на сайте уже настроена отправка заявок в CRM. В этом случае они загружаются в Roistat после подключения CRM. Настройка минимальна: нужно только создать дополнительное поле в CRM и добавить скрипт на сайт, чтобы оно автоматически заполнялось уникальным номером посещения.

    1.png

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

  2. Заявки отправляются из Roistat в CRM. При использовании данного способа заявки с сайта отправляются в Roistat (Интеграции → Настройки подключенной интеграции → Список отправленных заявок), а затем в CRM.

    2.png

    Этот способ надежнее. Если в момент создания заявки CRM была недоступна, заявка не потеряется и будет создана в CRM, когда появится доступ (попытки отправить заявку будут продолжаться каждые 30 минут в течение двух суток). При этом в новую CRM не получится отправить не те заявки, так как передача заявок для каждой CRM настраивается индивидуально.

    Настройка чуть сложнее: нужно внести изменения в скрипт отправки данных, который уже используется на вашем сайте. Впрочем, самое сложное здесь – найти на сайте этот скрипт, а изменить в нем несколько строк не составит труда.

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

Обновление заявок

С определенной периодичностью Roistat обновляет данные по заявкам, которые были изменены в CRM. Дата создания заявок не имеет значения.

Точную частоту обновления данных по заявкам можно посмотреть на странице Состояние проекта. На этой странице вы можете запустить обновление заявок вручную.

По умолчанию Roistat запрашивает в CRM данные по заявкам, измененным в течение последних семи дней. Если по какой-либо причине доступ к вашей CRM отсутствовал больше семи дней, и заявки не обновились, напишите нам, и мы поможем.

Если сделка была создана за последние 14 дней и была удалена, то она автоматически удалится и в Roistat. Если сделка была создана более 14 дней назад, то для удаления сделки необходимо инициировать обновление данных.

Как настроить загрузку заявок из CRM

Создание дополнительного поля

Когда клиент заходит на сайт, в браузере сохраняется информация о визите. Например, о том, откуда был совершен переход на сайт. Для связи визитов с заявками в CRM Roistat использует номер визита. Это уникальный номер посещения, который записывается в cookie roistat_visit. Содержимое этой cookie нужно передать в CRM вместе с созданной заявкой. Для этого сначала в CRM нужно создать дополнительное поле с именем roistat

Пример дополнительного поля roistat в Битрикс24:

3-1.png

Установка скрипта

Откройте PHP-файл, в котором настроена отправка заявок в вашу CRM. Над кодом для отправки заявок вставьте скрипт для передачи в CRM значения cookie roistat_visit:

$roistatVisitId = array_key_exists('roistat_visit', $_COOKIE) ? $_COOKIE['roistat_visit'] : 'nocookie'

Добавьте полученное значение roistatVisitId к данным, отправляемым в CRM. При необходимости обратитесь за помощью к веб-разработчику.

Как настроить отправку заявок в CRM

Создание дополнительного поля

Как и в предыдущем случае, сначала нужно создать в CRM дополнительное поле с именем roistat, куда автоматически будет записываться номер визита. 

Настройка скрипта

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

  2. Убедитесь, что кодировка данных в файле – UTF-8.

    У меня кодировка Windows-1251. Как ее изменить?

    Это можно сделать одним из способов:

    • Используйте функцию iconv(). Перед каждой переменной в файле вставьте строку:
    ```
    $value = iconv("Windows-1251", "UTF-8", $value)
    ```
    
    *$value*  это пример переменной. Замените *value* на имя своей переменной.
    
    • Передайте значение вашей кодировки в массиве полей, тогда Roistat автоматически преобразует данные в UTF-8. Например:
    ```
    'fields'  => array("charset" => "Windows-1251")
    ```
    
    Подробнее  в разделе [Передача дополнительных полей](#_8).
    
  3. Отредактируйте файл, добавив в него наш скрипт. Он будет собирать данные из формы заявки и отправлять их в Roistat. На их основе Roistat создаст заявку в CRM. Пример скрипта:

    <?php
    $roistatData = array(
        'roistat' => isset($_COOKIE['roistat_visit']) ? $_COOKIE['roistat_visit'] : 'nocookie',
        'key'     => 'value', //вместо value нужно указать ключ для интеграции из вашего проекта Roistat
        'phone'   => 'value', //вместо value должен быть телефон клиента или переменная, в которую он передается
        'email'   => 'value', //вместо value должна быть электронная почта клиента или переменная, в которую она передается
        'fields'  => array(), //массив, в который можно передать значения дополнительных полей, а можно оставить пустым
    );
    file_get_contents("https://cloud.roistat.com/api/proxy/1.0/leads/add?" . http_build_query($roistatData));
    

    Внимание!

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

    Чтобы скопировать ключ интеграции, перейдите в раздел Интеграции и откройте настройки подключенной CRM. Ключ находится внизу окна настройки интеграции:

    4-1.png

Дополнительные настройки

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

Обратный звонок

Если клиент оставил в форме заявки свой телефон, можно автоматически ему перезвонить. Для этого нужно:

  1. Подключить опцию Ловец лидов, если у вас тариф Старт. На других тарифах Ловец лидов включен в стоимость.

  2. В разделе Ловец лидов → Обратный звонок разрешить обратный звонок и указать номер менеджера для переадресации звонка:

    5-1.png

  3. Передать параметр 'is_need_callback' => '1' в скрипте отправки данных формы заявки:

        $roistatData = array(
            'roistat' => isset($_COOKIE['roistat_visit']) ? $_COOKIE['roistat_visit'] : 'nocookie',
            'key'     => 'SECRET_KEY'
            'title'   => 'Название сделки',
            'name'    => 'Имя клиента',
            'phone'   => '79111234567',
            'is_need_callback' => '1', // Обратный звонок поступит на номер 79111234567. Если поменять 1 на 0, звонка не будет
    

Передача дополнительных полей

Вы можете создать дополнительные поля заявок в вашей CRM и автоматически заполнять их с помощью Roistat при создании заявки с сайта. Например, вы можете сразу назначить ответственного менеджера, передав его ID в нужное поле CRM.

Формат и названия дополнительных полей отличаются для разных CRM. Чтобы передавать в них значение, нужно знать ID полей. Если вы не можете узнать их самостоятельно, обратитесь к разработчикам своей CRM/CMS. 

У многих CRM/CMS систем есть API. C помощью API-метода можно выгрузить свои заявки, посмотреть, какие есть поля и какие у них ID. Посмотрите, к примеру, как сделать это в amoCRM.

$roistatData = array(
    'roistat' => isset($_COOKIE['roistat_visit']) ? $_COOKIE['roistat_visit'] : 'nocookie',
    'key'     => 'SECRET_KEY'
    'title'   => 'Название сделки',
    'comment' => 'Комментарий к сделке',
    'name'    => 'Имя клиента',
    'email'   => 'client@email.com',
    'phone'   => '79111234567',
    'fields'  => array(
        "price" => 123, // Поле бюджет в amoCRM
        "responsible_user_id" => 3, // Ответственный по сделке
        "1276733" => "Текст", // Заполнение доп. поля с ID 1276733
        "status_id" => 123123, // Создавать лид с определенным статусом в определенной воронке. Указывать необходимо ID статуса.
        "charset" => "Windows-1251", // Сервер преобразует значения полей из указанной кодировки в UTF-8
        "tags" => "Тег1, Тег2", // Название тегов через запятую
    ),
);
file_get_contents("https://cloud.roistat.com/api/proxy/1.0/leads/add?" . http_build_query($roistatData));

Использование переменных

Некоторым полям заявки можно присваивать значения свойств визита через переменные. Например, в дополнительное поле CRM можно передавать город, из которого клиент зашел на ваш сайт и оставил заявку.  

В каких полях заявки можно использовать переменные:

  • title
  • comment
  • name
  • дополнительные поля

Какие переменные можно использовать

Переменная Значение
{agent} Браузер посетителя
{callee} Набранный номер (если заявки отправляются Коллтрекингом Roistat)
{caller} Номер телефона клиента (если заявки отправляются Коллтрекингом Roistat)
{city} Название города посетителя
{country} Страна посетителя
{date} Дата визита посетителя
{domain} Домен сайта
{email} Email, указанный клиентом
{facebookClientId} Значение fbclid, присвоенное счетчиком Facebook. Также эту переменную можно использовать для записи facebookClientID в емейлтрекинге и в отправке заявок с форм сайта.
{firstVisit} Номер первого визита
{googleClientId} Значение ClientId, присвоенное счетчиком Google Analytics. Также эту переменную можно использовать для записи googleClientID в емейлтрекинге и в отправке заявок с форм сайта.
{ip} IP-адрес посетителя
{landingPage} Посадочная страница
{markerSource} Первый уровень источника
{metrikaClientId} Значение ym_uid, присовенное счетчиком Яндекс.Метрики. Также эту переменную можно использовать для записи metrikaClientID в емейлтрекинге и в отправке заявок с форм сайта.
{name} Имя, указанное клиентом
{orderCreationMethod} Способ создания заявки (Коллтрекинг, Ловец лидов и т.д.)
{orderPage} Страница, с которой была оставлена заявка. Работает для заявок, созданных с помощью Заявок с форм сайта
{os} Операционная система посетителя
{phone} Номер телефона, указанный клиентом
{referrer} Страница с которой перешел посетитель
{region} Регион посетителя
{roistatParam1} Значение метки roistat_param1 у посетителя
{roistatParam2} Значение метки roistat_param2 у посетителя
{roistatParam3} Значение метки roistat_param3 у посетителя
{roistatParam4} Значение метки roistat_param4 у посетителя
{roistatParam5} Значение метки roistat_param5 у посетителя
{source} Источник (маркер)
{sourceAliasLevel1} Человекочитаемое название источника (маркера) уровня 1
{sourceAliasLevel2} Человекочитаемое название источника (маркера) уровня 2
{sourceAliasLevel3} Человекочитаемое название источника (маркера) уровня 3
{sourceAliasLevel4} Человекочитаемое название источника (маркера) уровня 4
{sourceAliasLevel5} Человекочитаемое название источника (маркера) уровня 5
{sourceAliasLevel6} Человекочитаемое название источника (маркера) уровня 6
{sourceAliasLevel7} Человекочитаемое название источника (маркера) уровня 7
{sourceLevel1} Значение источника (маркера) уровня 1
{sourceLevel2} Значение источника (маркера) уровня 2
{sourceLevel3} Значение источника (маркера) уровня 3
{sourceLevel4} Значение источника (маркера) уровня 4
{sourceLevel5} Значение источника (маркера) уровня 5
{sourceLevel6} Значение источника (маркера) уровня 6
{sourceLevel7} Значение источника (маркера) уровня 7
{utmCampaign} Значение метки utm_campaign у посетителя
{utmContent} Значение метки utm_content у посетителя
{utmMedium} Значение метки utm_medium у посетителя
{utmSource} Значение метки utm_source у посетителя
{utmTerm} Значение метки utm_term у посетителя
{visit} Номер визита
{visitor_uid} Значение Идентификатора пользователя amoCRM

Пример использования переменных

$roistatData = array(
    'title' => 'Новая сделка {visit}', //Добавляем номер визита к названию заявки
    'name' => 'Имя клиента {visit}', //Добавляем номер визита к имени клиента
    'comment' => 'utm_source: {utmSource}, utm_medium: {utmMedium}, utm_campaign: {utmCampaign}', //Передаем utm-метки в комментарий к заявке
    'fields' => array(
        '1276733' => '{city}', // Сохраняем город посетителя в доп. поле с ID 1276733
        'tags' => 'Тег1, {utmSource}, {utmMedium}, {utmCampaign}', // Сохраняем значения utm-меток в тегах
    ),
);
file_get_contents("https://cloud.roistat.com/api/proxy/1.0/leads/add?" . http_build_query($roistatData));

Проверка на дубли

Проверка на дубли позволяет отсеивать повторяющиеся заявки. Это нужно для того, чтобы в CRM не скапливались лишние данные, а также для создания точных статистических отчётов.

Подробнее о проверке на дубли

Подтверждение создания сделки в CRM

Используйте параметр 'sync' => '1', когда после отправки заявки с сайта в Roistat требуется получать от CRM подтверждение создания сделки. Если сделка создана успешно, скрипт вернет ее ID. Например, это можно использовать, чтобы после создания заявки сразу показывать клиенту номер заказа (обычно совпадает с ID сделки в CRM). Если сделку не удалось создать, вместо ID сделки будет ошибка.

Пример использования

$roistatData = array(
    'roistat' => isset($_COOKIE['roistat_visit']) ? $_COOKIE['roistat_visit'] : 'nocookie',
    'key'     => 'SECRET_KEY'
    'title'   => 'Название сделки',
    'name'    => 'Имя клиента',
    'phone'   => '79111234567',
    'sync' => '1',
);

Проверка работы

Создайте тестовую заявку с сайта. Все настроено правильно, если:

  • В разделе Интеграции вашего проекта Roistat в Списке отправленных заявок подключенной интеграции появилась новая заявка:

    5-2.png

  • В поле Промокод указан номер визита, а в поле Отправлен успешный статус отправки.

  • В CRM появилась новая заявка с этим номером визита в поле roistat.

Вы можете экспортировать список заявок в файл Excel. Для этого укажите нужный период и нажмите кнопку Скачать:

6-1.png

Решение проблем

Заявки с сайта нет в списке отправленных заявок

Это значит, что заявка либо не была отправлена с сайта в Roistat, либо не была им получена. Возможные причины:

  1. Проблема на стороне сервера, где расположен ваш сайт;
  2. Ошибки в скрипте отправки данных.

Что делать:

  1. Измените последнюю строку в скрипте отправки данных с этой:

    file_get_contents("<https://cloud.roistat.com/api/proxy/1.0/leads/add>?" . http_build_query($roistatData));

    На эту:

    file_get_contents("<http://cloud-reserved.roistat.com/api/proxy/1.0/leads/add>?" . http_build_query($roistatData));

    Сохраните изменения и попробуйте создать заявку на сайте еще раз. Если она не появится в списке отправленных заявок, обратитесь за помощью с своему хостинг-провайдеру с вопросом, почему не отправляются данные на адреса https://cloud.roistat.com/api/proxy/1.0/leads/add и http://cloud-reserved.roistat.com/api/proxy/1.0/leads/add.

  2. Проверьте, что в скрипте нет синтаксических ошибок. Воспользуйтесь сервисом валидации кода.

Заявка с сайта есть в списке отправленных заявок, но отсутствует в CRM

Если заявка не была отправлена в CRM, у нее будет статус X. Возможные причины:

  1. Не настроена интеграция с CRM или к ней нет доступа;
  2. Недостаточно прав на создание сделок в CRM;
  3. В CRM есть обязательные поля, которые не заполняются при отправке заявки.

Что делать:

  1. Проверьте, что правильно указали данные на странице настроек интеграции (Интеграции → Настройки подключенной интеграции). Затем перейдите в раздел Диагностика проекта → Диагностика неисправностей и запустите проверку интеграции с CRM:

    8-1.png

    Если все правильно, интеграция будет помечена зеленой галочкой:

    8-2.png

  2. Проверьте, что у вашего аккаунта CRM имеются права на создание сделок.

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

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