Передача данных с сайта на WordPress с формами Ninja Forms


Передача данных с форм Ninja Forms на сайтах WordPress

Ninja Forms — это простой и удобный инструмент для создания форм на веб-сайтах. Ninja Forms позволяет легко добавлять формы обратной связи либо другие контактные формы на свой сайт без необходимости программирования.


Однако, когда возникает вопрос об отправке данных с формы обратной связи, созданной с помощью Ninja Forms, могут возникнуть небольшие сложности ввиду того, что формы Ninja Forms не имеют встроенного визуального интерфейса для отправки данных на внешние сервисы.

Вставка кода в functions.php

Для возможности отправки запросов с форм Ninja Forms нам потребуется скрипт, который собирать данные формы и куки, и отправлять в MoreKit.
Для начала в MoreKit необходимо создать процесс с типом «Другое».

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

Далее в списке файлов сайта ищем functions.php — в него необходимо вставить код. Не забываем изменить в коде ссылку отправки на нашу ссылку, которую скопировали из процесса с типом «Другое»

Данный код добавит функцию my_ninja_forms_after_submission. Данная функция привязывается к событию отправки данных с Ninja Forms и отправляет данные по ссылке, указанной в коде в формате POST запроса. Дополнительно данный скрипт соберет аналитику (UTM и счетчики).

add_action( 'ninja_forms_after_submission', 'my_ninja_forms_after_submission' );

function my_ninja_forms_after_submission( $form_data ) {
  $data = [];
 
  foreach( $form_data[ 'fields' ] as $field ) { 
   $data[$field['key']] = $field['value'];
  }
  
  SendToAmoByMore($data);
}


function SendToAmoByMore($data)
{
  //Интеграция с amoCRM MoreKIT
  $moreUrl = 'https://ep.morekit.io/XXXXXXXXXXXXXXXXXXX'; // заменить ссылку
  $postArr = $data;

  $ip = getRealIPCron();
  $postArr["USER_IP"] = $ip;

   // Добавление UTM-меток и других куки в запрос
    $micookie = json_decode($_COOKIE['_mk_si'], true);
    $pars = array('utm_source', 'utm_medium', 'utm_term', 'utm_content', 'utm_campaign', 'roistat_visit', '_ga', '_ym_uid');
    foreach ($pars as $par) {
        if (isset($micookie[$par])) {
            $postArr[$par] = $micookie[$par];
        }
    }

  $opts = array(
        'http' =>
        array(
            'method' => 'POST',
            'header' => 'Content-type: application/x-www-form-urlencoded',
            'content' => http_build_query($postArr),
            'timeout' => 1,
        )
    );


   $myCurl = curl_init();
    curl_setopt($myCurl, CURLOPT_URL, $moreUrl);
    curl_setopt($myCurl, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($myCurl, CURLOPT_POST, TRUE);
    curl_setopt($myCurl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($myCurl, CURLOPT_POSTFIELDS, json_encode($postArr));
    curl_setopt($myCurl, CURLOPT_AUTOREFERER, TRUE);
    curl_setopt($myCurl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    $response = curl_exec($myCurl);
    curl_close($myCurl);
}



function makeUserUTMCookie() { 
    if (isset($_COOKIE['_mk_si'])) 
        $micookie = json_decode($_COOKIE['_mk_si'], true); 
    else 
        $micookie = array(); 
    $utms = array('utm_source', 'utm_medium', 'utm_term', 'utm_content', 'utm_campaign'); 
    $cookies = array('roistat_visit','_ga','_ym_uid');   
    foreach($utms as $utm) 
      if (!empty($_GET[$utm])) $micookie[$utm]=$_GET[$utm];     
    foreach($cookies AS $cookie)  
      if(!empty($_COOKIE[$cookie])) $micookie[$cookie]=$_COOKIE[$cookie];     
    setcookie('_mk_si',json_encode($micookie),time()+3600*24*365, "/"); 
} 
makeUserUTMCookie();

Заполнение формы и отправка данных в MoreKit

После вставки кода, если все сделано верно, пробуем заполнить форму и осуществить отправку. Во вкладке «События» увидим входящие данные с формы.

Пример входящих данных с формы Ninja Forms

Выстраивание логической схемы передачи данных с формы Ninja Forms в amoCRM

После того, как получили событие, можно выстраивать логическую схему передачи в amoCRM. На скриншоте представлена стандартная схема передачи создания контакта и сделки с контролем дублей, поиском активных сделок из контакта и постановкой задачи на текущую активную сделку, если она ранее была в crm-системе.


Блок #11 Найти контакты — выполняем поиск контакта в amoCRM по email пользователя из входящих данных


Блок #12 Создать контакт — создаем контакт у случае, если контакт не нашелся в системе amoCRM по email адресу их входящих данных

Блок #14 Создать переменную — создает переменную, записывает в нее контакт и ответственного

Блок #14 Найти сделки — выполняется поиск активных сделок в amoCRM из контакта

Блок #16 Создать сделку — Создание сделки с заполнением данных аналитики, привязкой карточки контакта к новой созданной сделке

Блок #18 Создать примечание — Создание текстового примечания к сделке с прикрепление сообщения клиента из входящих данных


Проверка результата отработки логической схемы


Проверяем результат, можно либо заполнить форму заново и получить новые данные, либо повторить существующий лог в MoreKit


После повторения лога видим новый лог с отработанной схемой (нужно нажимать синюю кнопку «Обновить», для получения новых логов на странице событий), из лога можем кликнуть на ID сделки напротив блока сделки, чтобы сразу перейти в сделку amoCRM и посмотреть результат


После перехода в сделку видим результат


Прикрепленный контакт к сделке

И данные аналитики

Подводим итоги


В данной статье рассмотрели возможность передачи данных с форм Ninja Forms, встроили скрипт-обработчик, который собирает и отправляет данные при заполнении формы в MoreKit, затем выстроили логическую схему передачи данных в amoCRM с контролем дублей и прикрепили примечание