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