Передача заявок с сайта  в CRM  может происходить двумя способами:

Настройка

Предполагается, что у вас уже настроена интеграция вашей CRM с Roistat (читайте инструкцию для вашей CRM).

Вы можете настроить передачу заявок в CRM через Roistat двумя способами:

Как настроить передачу заявок в CRM через Roistat в интерфейсе Roistat

(warning) Этот способ недоступен, если код формы размещен между тегами <iframe></iframe>.

(warning) Вы можете добавлять неограниченное число форм.

  1. В проекте Roistat откройте раздел Настройки и выберите закладку Заявки с форм сайта.
  2. Нажмите кнопку Добавить форму.  
    Откроется окно Новая форма.
  3. В поле Название введите текст, который будет отображаться в названии заявки: Заявка с формы <Название>. 
  4. Укажите механизм отправки данных по заявке:
  5. В зависимости от механизма отправки данных по заявке введите:
    1. Откройте форму или страницу заказа на вашем сайте. Чаще всего она называется Корзина. Если на вашем сайте данные для заказа вводятся не в форме, а на странице сайта, перейдите к этапу, когда нужно отправлять заказ.
    2. С помощью любого имеющегося у вас инструмента откройте исходный код формы или страницы заказа. Например, с помощью вашего браузера: правой кнопкой мыши выделите содержимое формы или страницы заказа, вызовите контекстное меню и выберите Исходный код выделенного фрагмента.
    3. Сделайте поиск по ключевому слову form id или form, если хотите получить селектор CSS для формы. Сделайте поиск по названию кнопки, по которой отправляется заказ, если хотите получить селектор CSS для кнопки.
    4. Скопируйте значение идентификатора (id) или класса (class).


  6. Укажите способ, которым заполняются основные поля заявки в CRM:  
  7. Создайте при необходимости дополнительные поля заявки:
    1. Раскройте блок Дополнительные поля.
    2. В раскрывающемся списке Выберите поле выберите нужное поле. Список полей загружается из CRM, с которой настроена интеграция.
    3. Укажите способ, которым заполняется дополнительное поле (см. пункт 6 инструкции).
      (информация) Если вам нужно передавать пустое значение в дополнительное поле заявки в CRM, укажите Статическое значение и введите пробел.
    4. Нажмите кнопку Добавить и повторите пункты b и c, если требуется больше одного дополнительного поля.
    Дополнительное поле может понадобиться, например, чтобы указывать город, в котором отправлена заявка. Или чтобы заполнить поле, которого нет в форме и которое обязательно для заполнения в CRM.
  8. Если необходимо инициировать обратный звонок на телефон клиента, который заполнил форму, включите настройку "Обратный звонок"
  9. Если настроенная форма в Roistat не должна временно или всегда отправлять данные в CRM, то выключите настройку "Отправлять в CRM"
  10. Нажмите кнопку Сохранить.

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

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

Как настроить передачу заявок в CRM через Roistat с помощью кода

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

<?php
// Данные должны быть в кодировке UTF-8! Иначе — это может привести к ошибке.
// Если вы используете кодировку Windows-1251, то можно преобразовать все переменные через $value = iconv("Windows-1251", "UTF-8", $value);
// или указать в доп. полях ключ 'charset' с используемой на сайте кодировкой, сервер Roistat, конвертирует все значения из указанной кодировки в UTF-8.
 
// ...
// Где-то здесь вызывается текущая функция создания сделки, например, функция mail().
// ...
 
$roistatData = array(
    'roistat' => isset($_COOKIE['roistat_visit']) ? $_COOKIE['roistat_visit'] : 'nocookie',
    'key'     => '', // Ключ для интеграции с CRM, указывается в настройках интеграции с CRM.
    'title'   => '', // Название сделки
    'comment' => '', // Комментарий к сделке
    'name'    => '', // Имя клиента
    'email'   => '', // Email клиента
    'phone'   => '', // Номер телефона клиента
	'order_creation_method' => '', // Способ создания сделки (необязательный параметр). Укажите то значение, которое затем должно отображаться в аналитике в группировке "Способ создания заявки"
	'is_need_callback' => '0', // После создания в Roistat заявки, Roistat инициирует обратный звонок на номер клиента, если значение параметра равно 1 и в Ловце лидов включен индикатор обратного звонка. 
	'callback_phone' => '<Номер для переопределения>', // Переопределяет номер, указанный в настройках обратного звонка.
    'sync'    => '0', //  
    'is_need_check_order_in_processing' => '1', // Включение проверки заявок на дубли
	'is_need_check_order_in_processing_append' => '1', // Если создана дублирующая заявка, в нее будет добавлен комментарий об этом
	'is_skip_sending' => '1', // Не отправлять заявку в CRM.
	'fields'  => array(
	// Массив дополнительных полей. Если дополнительные поля не нужны, оставьте массив пустым.
	// Примеры дополнительных полей смотрите в таблице ниже.
     "charset" => "Windows-1251", // Сервер преобразует значения полей из указанной кодировки в UTF-8.
    ),
);
 
file_get_contents("https://cloud.roistat.com/api/proxy/1.0/leads/add?" . http_build_query($roistatData));
?>


<?php
// Метод добавляет комментарий к сделке
$roistatData = array(
    'key'     => '', // Ключ для интеграции с CRM, указывается в настройках интеграции с CRM.
    'id'   => '', // Идентификатор заявки, который вернул при ее создании метод /api/proxy/1.0/leads/add)
    'title'    => '', // Заголовок для комментария, необязателен
    'message' => '', // Комментарий к сделке
    ),
);
  
file_get_contents("https://cloud.roistat.com/api/proxy/1.0/leads/messages/add?" . http_build_query($roistatData));
?> 


 По умолчанию значение параметра sync равно 0 ( 'sync' => '0'). В этом случае порядок событий следующий: данные о заявке отправляются в Roistat, Roistat отправляет отчет об их получении, Roistat отправляет данные о заявке в CRM, номер созданной в CRM заявки отправляется в Roistat. Если заявку в CRM не удается создать, ее номер не передается, сообщение об ошибке не выводится.

Если установить значение параметра sync равным 1 ( 'sync' => '1' ), порядок событий следующий: данные о заявке отправляются в Roistat, Roistat отправляет отчет об их получении, Roistat отправляет данные о заявке в CRM, далее возможны 2 варианта событий:

  • если заявку в CRM не удается создать, выводится ошибка;
  • если заявка в CRM создана, ее номер отправляется в Roistat.

(warning) Если значение параметра sync равно 1, то ошибка или номер заявки отправляются не только в Roistat, но и в ответ на запрос о создании проксилида.


Чтобы самостоятельно настроить интеграцию, необходимо скопировать значение параметра 'key' (ключ для интеграции) из карточки интеграции с вашей CRM. Карточка интеграции находится в "Каталоге интеграций".


Название CRMПример дополнительных полей
amoCRM
'price' => 123, // Поле бюджет в amoCRM.
'responsible_user_id' => 3, // Ответственный по сделке.
'1276733' => 'Текст', // Заполнение доп. поля с ID 1276733.
Дополнительное поле может быть заполнено как у сделки, так и у контакта. В случае заполнения поля контакта также необходимо указать ID этого поля.
'status_id' => 123123, // Создавать лид с определенным статусом в определенной воронке. Указывать необходимо ID статуса. 
'pipeline_id'
=> 123123, // Создавать лид с в определенной воронке. Указывать необходимо ID воронки.
// Подробную информацию о наименовании полей и получить список дополнительных полей вы можете в документации amoCRM: https://developers.amocrm.ru/rest_api/#lead.
// Более подробную информацию по работе с дополнительными полями в amoCRM вы можете получить у службы поддержки Roistat.
'tags' => 'Тег1, Тег2', // Название тегов через запятую.
retailCRM'managerComment' => 'Комментарий оператора' ,
'orderMethod' => 'landing-page' , // Способ оформления заказа.
'managerId' => 123, // Ответственный менеджер, где 123 - id менеджера в системе. Узнать id вашего менеджера можно зайдя в его профиль по ссылке http://forexample.retailcrm.ru/managers/123, число 14 и будет являться искомым id.
// Подробную информацию о наименовании полей и получить список дополнительных полей вы можете в документации retailCRM: https://www.retailcrm.ru/docs/rest-api/index.html
// Более подробную информацию по работе с дополнительными полями в retailCRM вы можете получить у службы поддержки Roistat.
// Заполнение пользовательских полей:
'<Символьный код>' => 'Значение' , // Строка.
'<Символьный код>' => '1' , // Флажок (1 – Отмечен, 0 – Снят).
'<Символьный код>' => '<Символьный код значения справочника>' , // Справочник.
Битрикс24 (Сделки)
'OPPORTUNITY' => 123, // Поле сделки Сумма
'ASSIGNED_BY_ID' => 3, // Ответственный по сделке.
'UF_CRM_1425989455' => 'Текст', // Заполнение доп. поля с ID UF_CRM_1425989455. Дополнительное поле может быть заполнено как у сделки, так и у контакта. В случае заполнения поля контакта также необходимо указать ID этого поля.
'ASSIGNED_BY_CONTACT_MANAGER' => 'Y', // Установить ответственного менеджера, как в найденном контакте (если будет найден).
'STAGE_ID' => 'статус' // Статус сделки.
// Подробную информацию о наименовании полей и получить список доп. полей вы можете в документация по REST API в интерфейсе Битрикс24.
// Более подробную информацию по работе с дополнительными полями в Битрикс24 вы можете получить у службы поддержки Roistat.
МойСклад
'state' => '<Value>', // Статус создаваемого заказа (Необязательное поле).
'currency_uuid' => '<Value>', // Поле 'Валюта' в заказе покупателя.
'project_uuid' => '<Value>', // Поле 'Проект' в заказе покупателя.
'contract_uuid' => '<Value>', // Поле 'Договор' в заказе покупателя.
'owner_uid' => 'demo@login', // Назначения ответственного по сделке. Вместо demo@login - укажите логин сотрудника для входа в систему (логины сотрудников можно посмотреть в системе, перейдя в пункт меню "Моя компания" и нажав на вкладку "Сотрудники", в поле "Логин").
'existing_store_uuid' => '<Store_ID>', // Обязательный параметр. Заменить <Store_ID> на идентификатор склада (например, 770657b-4fd2-11e4-90a2-8eca004192b1).
'existing_organization_uuid' => '<Org_ID>', // Обязательный параметр. Заменить <Org_ID> на идентификатор Юр.лица.
'existing_counterparty_uuid' => '<Counter_ID>', // Заменить <Item_ID> на идентификатор контрагента.
'existing_good_uuid' => array( // Обязательный параметр. array( 'uuid' => '<Good_ID>', // Заменить <Good_ID> на идентификатор товара.
'count' => '<Count>', // Заменить <Count> на кол-во товаров в заказе этого наименования. (Необязательный параметр, по умолчанию = 1).
'discount' => '<Discount_percent>', // Заменить <Discount_percent> на размер скидки в процентах (Необязательный параметр, по умолчанию будет = 0).
'vat' => '18', // НДС. По умолчанию - 18%. Вы можете задать собственное значение.
'sum' => '0', // Сумма товара. Вы можете задать собственное значение. ), array( // Этот массив нужен, если товаров несколько.
'uuid' => '<Good_ID>', // Необязательный параметр.
'count' => '<Count>', // Необязательный параметр.
'discount' => '<Discount_percent>', // Необязательный параметр.
'<Field_Name>' => '<Value>', // Заменить <Value> на значение поля.
Мегаплан
'Cost' => 123, // Поле Сумма в Мегаплан 'Category1000047CustomFieldSayt' => 'Текст' // Заполнение доп. поля Category1000047CustomFieldSayt
// Подробную информацию о наименовании полей и получить список доп. полей вы можете в документации Мегаплан: https://help.megaplan.ru/API_deal_save.
// Более подробную информацию по работе с дополнительными полями в Мегаплан вы можете получить у службы поддержки Roistat.

Битрикс24 (лиды + сделки)

Битрикс24 (Коробка)

'OPPORTUNITY' => 123, // Поле 'Возможная сумма сделки'.
'ASSIGNED_BY_ID' => 3, // Ответственный по лиду. 'UF_CRM_1425989455' =>
'UF_CRM_1425989455' => 'Текст', // Заполнение доп. поля с ID UF_CRM_1425989455. Дополнительное поле может быть заполнено как у сделки, так и у контакта. В случае заполнения поля контакта также необходимо указать ID этого поля.
SOURCE_ID' => 47, // Поле 'Источник'.
'SOURCE_DESCRIPTION' => 25, // Поле 'Дополнительно об источнике'.
'ASSIGNED_BY_CONTACT_MANAGER' => 'Y', // Установить ответственного менеджера, как в найденном контакте (если будет найден).
'STATUS_ID' => 'статус' // Статус лида.
// Подробную информацию о наименовании полей и получить список доп. полей вы можете в документация по REST API в интерфейсе Битрикс24.
// Более подробную информацию по работе с дополнительными полями в Битрикс24 вы можете получить у службы поддержки Roistat.
Salesforce

// Чтобы заполнить доп. поле, нужно передать его в формате ключ => значение. Если это пользовательское поле, в качестве ключа используется API name, для стандартных полей - Field Name.

'Company' => 'Компания' ,
'Title' => 'Должность' ,
'Owner' => 123, // Менеджер, ответственный за интерес, где 123 - id менеджера в системе.
// Названия стандартных и настраиваемых полей можно посмотреть в управлении полями сущности на странице Настройка -> Разработать -> Настроить -> Интересы/Возможности/Заказы -> Поля.
// Более подробную информацию по работе с настраиваемыми полями читайте в документации Salesforce: https://help.salesforce.com/apex/HTViewHelpDoc?id=customize_customfields.htm&language=ru .
FreshOffice'person' => '1' , // Тип создаваемого контрагента (1 — юридическое лицо, 2 — физическое лицо).
'id_status_deal' => '1' , // Идентификатор статуса сделки (по умолчанию — 1).
'summa' => '0.00' , // Сумма сделки.
'chance' => '100' , // Вероятность.
'id_manager' => '1' , // Установить ответственного менеджера.
U-ON.Travel
'bedroom_count' => 4 // Количество спален. 
'price' => 3000, // Цена за 1 день.
// Подробную информацию о наименовании полей и получить их список вы можете в документации: http://api.u-on.ru/doc.
// Более подробную информацию по работе с полями в U-ON.Travel вы можете получить у службы поддержки Roistat.


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

В полях title, comment, name и дополнительных полях заявки можно использовать следующие переменные:

ПеременнаяЗначение
{city}Название города посетителя
{country}Страна посетителя
{region}Регион посетителя
{ip}IP адрес посетителя
{visit}Номер визита
{firstVisit}Номер первого визита
{referrer}Страница с которой перешел посетитель
{domain}Домен сайта
{landingPage}Посадочная страница
{source}Источник (маркер)
{orderCreationMethod}Способ создания заявки (Коллтрекинг, Ловец лидов и т.д.)
{utmSource}Значение метки utm_source у посетителя
{utmMedium}Значение метки utm_medium у посетителя
{utmCampaign}Значение метки utm_campaign у посетителя
{utmTerm}Значение метки utm_term у посетителя
{utmContent}Значение метки utm_content у посетителя
{callee}Набранный номер (если заявки отправляются Коллтрекингом Roistat)
{caller}Номер телефона клиента (если заявки отправляются Коллтрекингом Roistat)

{roistatParam1}

Значение метки roistat_param1 у посетителя
{roistatParam2}Значение метки roistat_param2 у посетителя
{roistatParam3}Значение метки roistat_param3 у посетителя
{roistatParam4}Значение метки roistat_param4 у посетителя
{roistatParam5}Значение метки roistat_param5 у посетителя
{googleClientId}Значение ClientId, присвоенное счетчиком Google Analytics
{metrikaClientId}Значение ym_uid, присовенное счетчиком Яндекс.Метрики
{sourceLevel1}Значение источника (маркера) уровня 1
{sourceLevel2}Значение источника (маркера) уровня 2
{sourceLevel3}Значение источника (маркера) уровня 3
{sourceLevel4}Значение источника (маркера) уровня 4
{sourceLevel5}Значение источника (маркера) уровня 5
{sourceLevel6}Значение источника (маркера) уровня 6
{sourceLevel7}Значение источника (маркера) уровня 7
{sourceAliasLevel1}Человекочитаемое название источника (маркера) уровня 1
{sourceAliasLevel2}Человекочитаемое название источника (маркера) уровня 2
{sourceAliasLevel3}Человекочитаемое название источника (маркера) уровня 3
{sourceAliasLevel4}Человекочитаемое название источника (маркера) уровня 4
{sourceAliasLevel5}Человекочитаемое название источника (маркера) уровня 5
{sourceAliasLevel6}Человекочитаемое название источника (маркера) уровня 6
{sourceAliasLevel7}Человекочитаемое название источника (маркера) уровня 7
{visitor_uid}Значение Идентификатора пользователя AmoCRM


$roistatData = array(
	'title'   => 'Новая сделка {visit}',
	'name'    => 'Имя клиента {visit}',
	'comment' => 'utm_source: {utmSource}, utm_medium: {utmMedium}, utm_campaign: {utmCampaign}',
	'fields'  => array(
		'1276733' => '{city}', // Сохраняем в доп. поле город посетителя
		'tags'    => 'Тег1, {utmSource}, {utmMedium}, {utmCampaign}', // Сохраняем значения UTM-меток в тегах
	),
);

Как работает передача заявок в CRM через Roistat

  1. Посетитель заходит на ваш сайт и совершает действие, которое совпадает с условиями создания заявки.
    Например, нажимает кнопку Заказать, селектор которой указан в настройках формы для отправки заявок в Roistat.
  2. В проекте Roistat создается заявка. Перейти к просмотру заявки вы можете в окне настройки интеграции с вашей CRM по ссылке Список отправленных заявок.
  3. Roistat проверяет, подключена ли интеграция с CRM и настроена ли отправка заявок в CRM:

Передача неотправленных заявок в Roistat

Каждые 2 часа (120 минут) интеграция с CRM будет пытаться отправить в Roistat все неотправленные заявки, которые имеют время создания: текущее время минус 48 часов.