Работа с формами в WordPress часто требует интеграции с внешними сервисами для автоматизации бизнес-процессов. WPForms предоставляет удобный способ отправлять данные из форм на сторонние платформы с помощью Webhook. В этой статье подробно рассмотрим, как настроить и расширить такую интеграцию, а также приведём примеры кода для кастомизации.
Что такое Webhook и зачем он нужен в WPForms
Webhook — это механизм, позволяющий автоматически отправлять данные с вашего сайта в сторонний сервис при наступлении определённого события, например, при отправке формы. В WPForms Webhook используется для передачи данных формы в CRM, сервисы рассылок, системы аналитики и другие API без необходимости вручную экспортировать данные.
Преимущества использования Webhook в WPForms:
- Автоматизация передачи данных в реальном времени;
- Минимум ручной работы — нет необходимости скачивать CSV и загружать на другой сервис;
- Гибкость — можно отправлять данные в любые сервисы, поддерживающие приём Webhook;
- Повышение оперативности обработки заявок и других данных.
WPForms включает встроенный аддон для Webhook, который активируется в премиум-версии. Но даже без аддона можно реализовать отправку данных через кастомный код.
Как настроить отправку данных из WPForms через встроенный Webhook
Для начала рассмотрим стандартный способ — через аддон WPForms Webhooks.
- Убедитесь, что у вас активирована лицензия WPForms Pro или выше.
- Перейдите в WPForms > Addons и установите аддон Webhooks.
- Создайте новую форму или откройте существующую.
- В настройках формы перейдите во вкладку Marketing > Webhooks.
- Добавьте новый Webhook, указав URL внешнего сервиса, куда будут отправляться данные.
- Выберите метод отправки (POST, GET и т.п.) и формат данных (JSON, FORM, RAW).
- Настройте, какие поля формы отправлять, и сохраните изменения.
После этого при каждой отправке формы WPForms автоматически отправит данные на указанный URL.
Пример настройки Webhook для интеграции с CRM
Допустим, у вас есть CRM, которая принимает POST-запросы с JSON. В настройках Webhook укажите:
- URL:
https://crm.example.com/api/leads - Метод: POST
- Тип контента: JSON
- Поля: выберите все необходимые поля формы
Это позволит быстро интегрировать формы сайта с вашей CRM без дополнительного программирования.
Кастомизация отправки данных через хук WPForms
Если стандартный аддон не подходит или нужно добавить дополнительную логику, можно использовать хук wpforms_process_complete, который срабатывает после отправки формы. Это даёт полный контроль над обработкой и отправкой данных.
Пример функции, которая отправляет данные формы на внешний URL с помощью wp_remote_post:
function wpform_ru_send_data_to_webhook( $fields, $entry, $form_data ) {
$webhook_url = 'https://example.com/api/webhook';
$data = [];
foreach ( $fields as $field ) {
$data[ $field['name'] ] = $field['value'];
}
$args = [
'body' => json_encode( $data ),
'headers' => [
'Content-Type' => 'application/json',
],
'timeout' => 15,
];
$response = wp_remote_post( $webhook_url, $args );
if ( is_wp_error( $response ) ) {
error_log( 'Webhook send error: ' . $response->get_error_message() );
}
}
add_action( 'wpforms_process_complete', 'wpform_ru_send_data_to_webhook', 10, 3 );В этом примере мы собираем все поля формы в ассоциативный массив, кодируем в JSON и отправляем POST-запросом на внешний URL. В случае ошибки записываем сообщение в лог.
Как фильтровать данные перед отправкой
Иногда нужно отправлять не все поля, а только определённые, или изменить формат данных. Добавим фильтрацию полей по имени:
function wpform_ru_send_filtered_data_to_webhook( $fields, $entry, $form_data ) {
$webhook_url = 'https://example.com/api/webhook';
$data = [];
$allowed_fields = [ 'name', 'email', 'phone' ];
foreach ( $fields as $field ) {
if ( in_array( $field['name'], $allowed_fields, true ) ) {
$data[ $field['name'] ] = $field['value'];
}
}
if ( empty( $data ) ) {
return; // Нет данных для отправки
}
$args = [
'body' => json_encode( $data ),
'headers' => [
'Content-Type' => 'application/json',
],
'timeout' => 15,
];
$response = wp_remote_post( $webhook_url, $args );
if ( is_wp_error( $response ) ) {
error_log( 'Webhook send error: ' . $response->get_error_message() );
}
}
add_action( 'wpforms_process_complete', 'wpform_ru_send_filtered_data_to_webhook', 10, 3 );Так вы гарантируете, что в Webhook попадут только нужные данные.
Обработка ответов и повторные попытки отправки
В сложных интеграциях важно обрабатывать ответы сервера и при необходимости повторять отправку данных. WPForms не имеет встроенного механизма повторных попыток, но вы можете расширить свой код.
Пример обработки ответа и логирования статуса:
function wpform_ru_send_data_with_response_handling( $fields, $entry, $form_data ) {
$webhook_url = 'https://example.com/api/webhook';
$data = [];
foreach ( $fields as $field ) {
$data[ $field['name'] ] = $field['value'];
}
$args = [
'body' => json_encode( $data ),
'headers' => [
'Content-Type' => 'application/json',
],
'timeout' => 15,
];
$response = wp_remote_post( $webhook_url, $args );
if ( is_wp_error( $response ) ) {
error_log( 'Webhook send error: ' . $response->get_error_message() );
// Здесь можно реализовать логику повторной отправки через wp_schedule_single_event
} else {
$code = wp_remote_retrieve_response_code( $response );
if ( $code !== 200 ) {
error_log( 'Webhook response code: ' . $code );
// Логика реакции на неуспешный ответ
}
}
}
add_action( 'wpforms_process_complete', 'wpform_ru_send_data_with_response_handling', 10, 3 );Для повторных попыток можно использовать wp_cron и сохранять неотправленные данные в отдельной таблице или опциях.
Советы по безопасности и оптимизации
При работе с Webhook важно учитывать безопасность:
- Используйте HTTPS для передачи данных;
- Проверяйте и валидируйте входящие запросы на стороне сервиса;
- Ограничьте данные для отправки только необходимыми полями;
- Реализуйте обработку ошибок и уведомления администратору;
- При большом количестве отправок используйте очереди и отложенную отправку, чтобы не блокировать работу сайта.
Оптимизация отправки данных поможет избежать зависания формы и ухудшения пользовательского опыта.
Альтернативные плагины и расширения для интеграции Webhook
Кроме встроенного аддона WPForms Webhooks и кастомного кода можно рассмотреть плагины, которые расширяют возможности интеграций:
- Clearfy Pro — оптимизация и безопасность, включая улучшенное управление хуками и логированием;
- WPRemark — расширенные уведомления и интеграции;
- Использование Quizle для опросов с расширенной аналитикой и отправкой результатов через Webhook;
- Плагины для интеграции с конкретными CRM, которые могут использовать Webhook для приёма данных.
Выбор зависит от задач и бюджета проекта.
Выводы по теме отправки данных из WPForms через Webhook
Использование Webhook в WPForms — мощный инструмент для автоматизации и интеграции сайта с внешними системами. Стандартный аддон позволяет быстро настроить передачу данных, а кастомный код даёт максимальную гибкость и контроль. Важно правильно обрабатывать ошибки, оптимизировать отправку и обеспечивать безопасность передачи данных.
Для дальнейшей автоматизации рекомендую изучить возможности плагинов из экосистемы WPSHOP, которые помогут расширить функционал вашего сайта на WordPress.