WPForms — один из самых популярных плагинов для создания форм в WordPress. В стандартной комплектации WPForms позволяет отправлять уведомления по электронной почте, однако для интеграции с внешними сервисами и расширения функционала часто требуется использовать webhook. В этой статье мы подробно разберём, как создать автоматические уведомления WPForms через webhook, чтобы отправлять данные формы в сторонние сервисы или собственные API.
Что такое Webhook и зачем он нужен для WPForms
Webhook — это механизм, позволяющий автоматически отправлять данные от одного приложения к другому по HTTP(S)-запросу сразу после наступления события. В случае с WPForms webhook можно использовать для:
- отправки данных формы в CRM или систему учёта заказов;
- интеграции с мессенджерами, например, для отправки уведомлений в Telegram или Slack;
- автоматического запуска бизнес-процессов в сторонних сервисах;
- других кастомных задач, недоступных через стандартные уведомления.
WPForms не имеет встроенной поддержки webhook, но мы можем реализовать эту функцию самостоятельно с помощью хуков и PHP-кода.
Настройка webhook для WPForms через хук wpfomrs_process_complete
Для отправки данных формы на внешний сервер сразу после успешной отправки мы воспользуемся хуком wpforms_process_complete. Он вызывается, когда форма успешно обработана.
Добавьте следующий код в файл functions.php вашей темы или в плагин для кастомных функций:
function wpform_ru_send_webhook_notification($fields, $entry, $form_data) {
// URL вашего webhook сервера
$webhook_url = 'https://example.com/webhook-endpoint';
// Формируем данные для отправки
$data = array();
foreach ($fields as $field) {
$data[$field['name']] = $field['value'];
}
$args = array(
'body' => json_encode($data),
'headers' => array('Content-Type' => 'application/json'),
'method' => 'POST',
'data_format' => 'body',
);
$response = wp_remote_post($webhook_url, $args);
if (is_wp_error($response)) {
error_log('WPForm.ru webhook error: ' . $response->get_error_message());
}
}
add_action('wpforms_process_complete', 'wpform_ru_send_webhook_notification', 10, 3);В этом примере мы перебираем все поля формы и формируем JSON с именами и значениями. Затем отправляем POST-запрос на URL вашего webhook. При ошибке запрос логируется в файл ошибок сервера.
Советы по безопасности и отладке
Для защиты webhook от несанкционированных вызовов рекомендуем:
- добавить в заголовки секретный ключ и проверять его на стороне принимающего сервера;
- логировать ответы с сервера для отладки;
- ограничить IP-адреса, с которых принимаются запросы;
- использовать HTTPS для шифрования данных.
Примеры интеграций webhook с популярными сервисами
Интеграция WPForms с Telegram через webhook
Пример отправки уведомлений в Telegram-бота через webhook. Для этого понадобится токен бота и ID чата.
function wpform_ru_send_telegram_notification($fields, $entry, $form_data) {
$bot_token = '123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$chat_id = '-1001234567890';
$message = "Новая заявка с сайта:\n";
foreach ($fields as $field) {
$message .= $field['name'] . ': ' . $field['value'] . "\n";
}
$url = "https://api.telegram.org/bot" . $bot_token . "/sendMessage";
$args = array(
'body' => array(
'chat_id' => $chat_id,
'text' => $message
)
);
$response = wp_remote_post($url, $args);
if (is_wp_error($response)) {
error_log('WPForm.ru Telegram webhook error: ' . $response->get_error_message());
}
}
add_action('wpforms_process_complete', 'wpform_ru_send_telegram_notification', 10, 3);Этот код формирует текстовое сообщение из полей формы и отправляет его в Telegram. Такой способ удобен для быстрого информирования менеджеров о новых заявках.
Использование плагина WP Webhooks для интеграций
Если вы хотите избежать написания кода, обратите внимание на плагин WP Webhooks от WPShop. Он позволяет настраивать входящие и исходящие webhook без программирования, что подходит для сложных интеграций.
Плагин поддерживает:
- отправку данных форм WPForms по webhook;
- приём webhook для автоматического создания записей;
- настройку фильтров и условий для передачи данных;
- логирование и ретрай запросов.
Обработка ошибок и логирование webhook в WPForms
Для гарантии доставки уведомлений важно контролировать успешность отправки webhook. Рекомендуется расширить функцию отправки, чтобы она писала результат в базу или лог.
function wpform_ru_send_webhook_notification_with_logging($fields, $entry, $form_data) {
$webhook_url = 'https://example.com/webhook-endpoint';
$data = array();
foreach ($fields as $field) {
$data[$field['name']] = $field['value'];
}
$args = array(
'body' => json_encode($data),
'headers' => array('Content-Type' => 'application/json'),
'method' => 'POST',
'data_format' => 'body',
);
$response = wp_remote_post($webhook_url, $args);
if (is_wp_error($response)) {
error_log('WPForm.ru webhook error: ' . $response->get_error_message());
} else {
$code = wp_remote_retrieve_response_code($response);
if ($code != 200) {
error_log('WPForm.ru webhook returned HTTP code: ' . $code);
}
}
}
add_action('wpforms_process_complete', 'wpform_ru_send_webhook_notification_with_logging', 10, 3);Также можно сохранять статус webhook в пользовательских полях записи формы, чтобы потом анализировать их в админке.
Выводы и рекомендации по использованию webhook с WPForms
Использование webhook с WPForms открывает широкие возможности для интеграции с внешними сервисами и автоматизации бизнес-процессов. Главное — правильно настроить отправку данных, обработку ошибок и обеспечить безопасность соединения.
Для начинающих разработчиков рекомендуем использовать хук wpforms_process_complete и простой PHP-код для отправки webhook, а при необходимости — плагин WP Webhooks для визуальной настройки и расширенных возможностей.