Отправка данных из WPForms в внешние сервисы через Webhook

Работа с формами в WordPress часто требует интеграции с внешними сервисами для автоматизации бизнес-процессов. WPForms предоставляет удобный способ отправлять данные из форм на сторонние платформы с помощью Webhook. В этой статье подробно рассмотрим, как настроить и расширить такую интеграцию, а также приведём примеры кода для кастомизации.

Что такое Webhook и зачем он нужен в WPForms

Webhook — это механизм, позволяющий автоматически отправлять данные с вашего сайта в сторонний сервис при наступлении определённого события, например, при отправке формы. В WPForms Webhook используется для передачи данных формы в CRM, сервисы рассылок, системы аналитики и другие API без необходимости вручную экспортировать данные.

Преимущества использования Webhook в WPForms:

  • Автоматизация передачи данных в реальном времени;
  • Минимум ручной работы — нет необходимости скачивать CSV и загружать на другой сервис;
  • Гибкость — можно отправлять данные в любые сервисы, поддерживающие приём Webhook;
  • Повышение оперативности обработки заявок и других данных.

WPForms включает встроенный аддон для Webhook, который активируется в премиум-версии. Но даже без аддона можно реализовать отправку данных через кастомный код.

Как настроить отправку данных из WPForms через встроенный Webhook

Для начала рассмотрим стандартный способ — через аддон WPForms Webhooks.

  1. Убедитесь, что у вас активирована лицензия WPForms Pro или выше.
  2. Перейдите в WPForms > Addons и установите аддон Webhooks.
  3. Создайте новую форму или откройте существующую.
  4. В настройках формы перейдите во вкладку Marketing > Webhooks.
  5. Добавьте новый Webhook, указав URL внешнего сервиса, куда будут отправляться данные.
  6. Выберите метод отправки (POST, GET и т.п.) и формат данных (JSON, FORM, RAW).
  7. Настройте, какие поля формы отправлять, и сохраните изменения.

После этого при каждой отправке формы 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.

Как добавить собственные поля в WPForms и обработать их в WordPress
23.11.2025
WPForms: как сделать отсрочку отправки формы в WordPress
12.02.2026
WPForms: заполнение формы через AJAX без перезагрузки страницы
05.02.2026
WPForms: как создать уникальный тип поля для форм в WordPress
21.01.2026
WPForms: настройка отправки формы по Email с использованием PHPMailer
16.04.2026