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


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

Elementor  — это плагин для WordPress, который реализует функционал визуального конструктора страниц.


Он позволяет создавать красивые и функциональные страницы сайта без специальных знаний и опыта, простым перетаскиванием готовых блоков. Плагин имеет систему готовых шаблонов, дополнений и интеграций, позволяет создавать свои шаблоны для WordPress.


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

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

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

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

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

Данный код добавит функцию send_custom_webhook в настройку формы Elementor. Данная функция привязывается к хуку elementor_pro/forms/new_record, который вызывается при создании новой записи формы в Elementor Pro.

function send_custom_webhook( $record, $handler ) {

  $form_name = $record->get_form_settings( 'form_name' );

  $raw_fields = $record->get( 'fields' );
  $fields = [];
  foreach ( $raw_fields as $id => $field ) {
    $fields[ $id ] = $field['value'];
  }

    $micookie = json_decode(stripslashes($_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])) { 
            $fields[$par] = $micookie[$par]; 
        }  
    } 
    $fields['page_url'] = wp_get_referer();
    $fields['form_name'] = $record->get_form_settings( 'form_name' );
  wp_remote_post(
    'https://ep.morekit.io/xxxxxxxxxxxxxxxxxxxxxxxxxxx',
    [
      'body' => $fields,
    ]
  );
}
add_action( 'elementor_pro/forms/new_record', 'send_custom_webhook', 10, 2 );

Резюмируя: этот код обрабатывает данные формы, отправленные через Elementor, добавляет в них UTM метки из cookies, а затем отправляет эти данные на указанный URL с помощью POST-запроса.

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

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

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

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

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


Блок #5 регулярные выражения используется для очистки номера телефона от лишних символов (скобок, дефисов), оставляет только цифры. Данные блок необходим для более корректного поиска по телефону в amoCRM


Блок #2 Найти контакты Выполняем поиск контакта по очищенному номеру телефона в amoCRM


Блок #3 Найти контакты Выполняем поиск контакта по email, если не нашли контакт по номеру телефона


Блок #4 Создать контакт Если контакта нет в системе amoCRM, создаем новый контакт, заполняя Название, Email, Телефон


Блок #6 создать переменную записываем найденный или созданный контакт в переменную «Контакт», для удобства обращения к контакту далее в процессе


Блок #7 Найти сделки выполняем поиск активной сделки (игнорируя этапы поиска 142 и 143) в amoCRM из контакта


Блок #9 Создать задачу создаем задачу на активную сделку, если у контакта она была найдена. Срок задачи — до конца дня


Блок #8 Создать сделку если у контакта не было активной сделки, создаем новую сделку, прикрепляя найденный/созданный контакт

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


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


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


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


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

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


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