Описание

Данная инструкция подходит в тех случаях, когда формы на сайте подключены через плагин Contact Form 7.

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

Настройка

Переходим в Панель администратора → Contact Form 7 → Form name → Change.

1) В настройках формы есть "Шаблон формы", дописываем в форму скрытое поле в которое будет сохраняться значение куки с номером визита Roistat, дописываем:

<input type="hidden" name="roistat-promo-code"> 


2) Это скрытое поле заполняется скриптом который необходимо разместить на страницах сайта, после кода счетчика Roistat. (Код должен быть установлен в шаблон, код установленный на страницу через редактор форм CF7 или редактор записей — может выводится некорректно.) Для этого перейдите в панель администратора → Внешний вид → Редактор → Подвал (footer.php) и впишите код перед тегом </body>

<script>
function getCookie(name) {
 var cookie = " " + document.cookie;
 var search = " " + name + "=";
 var setStr = null;
 var offset = 0;
 var end = 0;
 if (cookie.length > 0) {
        offset = cookie.indexOf(search);
 if (offset != -1) {
            offset += search.length;
 end = cookie.indexOf(";", offset)
            if (end == -1) {
                end = cookie.length;
 }
            setStr = unescape(cookie.substring(offset, end)); //После отправки заявки из формы
 }
    }
    return(setStr);
}

(function(d){
    setTimeout(function(){
        document.getElementsByName('roistat-promo-code')[0].value = getCookie('roistat_visit');
 }, 1000);
})(document);
</script>


3) Для передачи значения промо кода можно дописать  в шаблон письма:

[roistat-promo-code]

4) Обработку заявки из формы и отправку в Roistat нужно сделать через хук в модуле wpcf7_before_send_mail (Можно дописать в конец файла с функциями темы: wp-content\themes\{папка с используемой темой}\functions.php)

function wpcf7_modify_this($WPCF7_ContactForm) {
	// Код скрипта смотрите в инструкции к вашей CRM в пункте автоматическая отправка в CRM
	// Например, для amoCRM – http://help.roistat.com/display/docs/amoCRM#amoCRM-Шаг5.АвтоматическаяотправкасделкивamoCRM
	// Промокод будет доступен в массиве $_COOKIE по ключу roistat_visit
	// Например: $roistatVisitId = array_key_exists('roistat_visit', $_COOKIE) ? $_COOKIE['roistat_visit'] : "неизвестно";
}
add_action("wpcf7_before_send_mail", "wpcf7_modify_this");

Например:

function wpcf7_modify_this( $WPCF7_ContactForm ) {
	// Отправка данных в amoCRM
   $roistatData = array(
      'roistat' => isset($_COOKIE['roistat_visit']) ? $_COOKIE['roistat_visit'] : null,
      'key'     => 'SECRET_KEY', // Вместо SECRET_KEY нужно вставить секретный ключ. Чтобы скопировать этот ключ, откройте Каталог интеграций -> amoCRM. Секретный ключ находится в нижней части экрана в строке Ключ для интеграций (смотрите скриншот ниже).
      'title'   => 'Новый лид с сайта', // Постоянное значение
      'comment' => isset($_POST['your-message']) ? $_POST['your-message'] : null, // Для поля с именем 'your-message'
      'name'    => isset($_POST['your-name'])    ? $_POST['your-name'] : null, // Для поля с именем 'your-name'
      'email'   => isset($_POST['your-email'])   ? $_POST['your-email'] : null, // Для поля с именем 'your-email'
      'phone'   => null, // Если значения нет
      'fields'  => array(
      // Массив дополнительных полей, если нужны, или просто пустой массив. Более подробно про работу доп. полей можно посмотреть в видео в начале статьи
    // Примеры использования:
        "price" => 123, // Поле бюджет в amoCRM
        "responsible_user_id" => 3, // Ответственный по сделке
        "1276733" => "Текст", // Заполнение доп. поля с ID 1276733
    // Подробную информацию о наименовании полей и получить список доп. полей вы можете в документации amoCRM: https://developers.amocrm.ru/rest_api/#lead
    // Более подробную информацию по работе с дополнительными полями в amoCRM, вы можете получить у нашей службы поддержки
        "charset" => "Windows-1251", // Сервер преобразует значения полей из указанной кодировки в UTF-8
      ),
   );
   file_get_contents("https://cloud.roistat.com/api/proxy/1.0/leads/add?" . http_build_query($roistatData));
}
add_action("wpcf7_before_send_mail", "wpcf7_modify_this");

Расположение ключа для интеграций:

Настройка ContactForm7 в виде отдельного плагина

ContactForm7 можно интегрировать с Roistat так, чтобы ContactForm7 был отдельным плагином. 

Для этого нужно:

1. В каталоге wp-content\wp-content\plugins создать новую папку roistat-contact-form-7-integration.
2. В папке roistat-contact-form-7-integration создать файл roistat-contact-form-7-integration.php
3. Добавить в файл код:

<?php
/*
Plugin Name: ROIstat CF7 integration
Plugin URI:
Description:
Version: 0.1
Author:
Author URI:
License: GPL2
*/


function wpcf7_modify_this( $WPCF7_ContactForm ) {
    // Отправка данных в amoCRM
   $roistatData = array(
      'roistat' => isset($_COOKIE['roistat_visit']) ? $_COOKIE['roistat_visit'] : null,
      'key'     => 'SECRET_KEY', // Замените SECRET_KEY на секретный ключ из пункта меню Настройки -> Интеграция со сделками в нижней части экрана и строчке Ключ для интеграций
      'title'   => 'Новый лид с сайта', // Постоянное значение
      'comment' => isset($_POST['your-message']) ? $_POST['your-message'] : null, // Для поля с именем 'your-message'
      'name'    => isset($_POST['your-name'])    ? $_POST['your-name'] : null, // Для поля с именем 'your-name'
      'email'   => isset($_POST['your-email'])   ? $_POST['your-email'] : null, // Для поля с именем 'your-email'
      'phone'   => null, // Если значения нет
      'fields'  => array(
      // Массив дополнительных полей, если нужны, или просто пустой массив. Более подробно про работу доп. полей можно посмотреть в видео в начале статьи
    // Примеры использования:
        "price" => 123, // Поле бюджет в amoCRM
        "responsible_user_id" => 3, // Ответственный по сделке
        "1276733" => "Текст", // Заполнение доп. поля с ID 1276733
    // Подробную информацию о наименовании полей и получить список доп. полей вы можете в документации amoCRM: https://developers.amocrm.ru/rest_api/#lead
    // Более подробную информацию по работе с дополнительными полями в amoCRM, вы можете получить у нашей службы поддержки
        "charset" => "Windows-1251", // Сервер преобразует значения полей из указанной кодировки в UTF-8
      ),
   );
   file_get_contents("https://cloud.roistat.com/api/proxy/1.0/leads/add?" . http_build_query($roistatData));
}
add_action("wpcf7_before_send_mail", "wpcf7_modify_this");

?>

4. В админ-панели сайта добавить ContactForm7 в список плагинов. 

Альтернативный способ добавления ContactForm7 в список плагинов

1. В каталоге wp-content\wp-content\plugins создать новую папку roistat-contact-form-7-integration.
2. В папку roistat-contact-form-7-integration добавить файл roistat.php из этого архива.
3. В админ-панели сайта добавить ContactForm7 в список плагинов.