Передача данных с форм 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 с контролем дублей и прикрепили примечание