Contact Form 7 и отправка данных в 1С через Webhook

Для многих бизнесов, использующих 1С для учета и управления, важным этапом является интеграция с формами обратной связи на сайте. Contact Form 7 — популярный плагин WordPress для создания форм, который можно легко настроить для отправки данных в 1С через Webhook. В этой статье я подробно расскажу, как реализовать такую интеграцию, приведу примеры кода и полезные советы для успешной настройки.

Почему именно Webhook для интеграции Contact Form 7 с 1С?

Webhook — это метод, при котором данные автоматически отправляются с вашего сайта на заданный URL в режиме реального времени. Для интеграции Contact Form 7 и 1С это очень удобно, так как:

  • Отправка происходит мгновенно после заполнения формы пользователем.
  • Не требуется частый опрос сервера 1С — нагрузка минимальна.
  • Можно легко настроить передачу любых полей формы в формате JSON или URL-encoded.

Таким образом, Webhook обеспечивает надежную и оперативную связь между сайтом и 1С без лишних сложностей.

Подготовка 1С к приему данных из Contact Form 7

Для начала нужно убедиться, что в 1С настроен внешний HTTP-сервис для приема данных в формате JSON или form-data. В 1С обычно создается HTTP-сервис, который принимает POST-запросы с определенной структурой данных и обрабатывает их.

Примерная структура данных, которую 1С ожидает — это JSON с ключами, совпадающими с полями формы:

{
  "name": "Иван Иванов",
  "email": "ivan@example.com",
  "phone": "+7 999 123-45-67",
  "comment": "Интересует консультация"
}

В 1С необходимо реализовать обработчик, который десериализует JSON и создает заявку/контакт в базе.

Настройка Contact Form 7 для отправки данных через Webhook

Contact Form 7 сам по себе не имеет встроенной функции отправки на сторонние URL, но для этого можно использовать хуки WordPress и небольшой PHP-код, который выполнит POST-запрос при отправке формы.

Добавим в functions.php вашей темы следующий код:

add_action('wpcf7_mail_sent', 'contactform7ru_send_to_1c_webhook');
function contactform7ru_send_to_1c_webhook($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if (!$submission) return;

    $data = $submission->get_posted_data();

    // Формируем массив с нужными данными для 1С
    $payload = array(
        'name' => $data['your-name'] ?? '',
        'email' => $data['your-email'] ?? '',
        'phone' => $data['your-phone'] ?? '',
        'comment' => $data['your-message'] ?? ''
    );

    $webhook_url = 'https://your1cserver.example.com/api/webhook'; // Замените на URL вашего 1С

    // Отправляем POST запрос в 1С
    $response = wp_remote_post($webhook_url, array(
        'method' => 'POST',
        'headers' => array('Content-Type' => 'application/json'),
        'body' => json_encode($payload),
        'timeout' => 10
    ));

    if (is_wp_error($response)) {
        error_log('ContactForm7RU: Ошибка отправки данных в 1С - ' . $response->get_error_message());
    } else {
        error_log('ContactForm7RU: Данные успешно отправлены в 1С, код ответа: ' . wp_remote_retrieve_response_code($response));
    }
}

В этом коде:

  • Используется хук wpcf7_mail_sent, чтобы сработать после успешной отправки формы.
  • Получаем данные формы через объект WPCF7_Submission.
  • Формируем массив с ключами, подходящими для 1С.
  • Отправляем POST-запрос с JSON на URL 1С.
  • Добавляем логирование ошибок для отладки.

Обработка ошибок и отладка интеграции

При работе с Webhook важно предусмотреть обработку ошибок и контроль успешности отправки данных:

  • Проверяйте в логах WordPress наличие ошибок отправки в 1С.
  • На стороне 1С убедитесь, что сервис доступен и возвращает корректные коды ответа (200 OK).
  • Для улучшения UX можно настроить в Contact Form 7 отображение сообщений об ошибках при сбое отправки данных в 1С — например, используя дополнительный фильтр и AJAX.

Пример простого расширения для вывода ошибки при сбое отправки:

add_filter('wpcf7_ajax_json_echo', 'contactform7ru_modify_ajax_response', 10, 2);
function contactform7ru_modify_ajax_response($response, $result) {
    if ($result['status'] === 'mail_sent') {
        // Проверим логи или статус отправки в 1С и при ошибке изменим статус
        // Можно реализовать глобальную переменную или сессию для передачи ошибки из функции отправки
    }
    return $response;
}

Расширенные сценарии: отправка файлов и дополнительных данных

Если в форме Contact Form 7 есть поле загрузки файла, и его нужно передать в 1С, то задача усложняется. Формат JSON не подходит для отправки больших файлов напрямую. В таком случае:

  • Можно отправить ссылку на загруженный файл, если он сохраняется на сервере.
  • Или реализовать multipart/form-data POST запрос с использованием библиотеки cURL в PHP.

Пример отправки файла через cURL:

function contactform7ru_send_file_to_1c($file_path, $webhook_url) {
    $curl = curl_init();
    $post_fields = array(
        'file' => new CURLFile($file_path)
    );
    curl_setopt_array($curl, array(
        CURLOPT_URL => $webhook_url,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $post_fields,
        CURLOPT_RETURNTRANSFER => true
    ));
    $response = curl_exec($curl);
    $err = curl_error($curl);
    curl_close($curl);

    if ($err) {
        error_log('ContactForm7RU: Ошибка отправки файла в 1С: ' . $err);
        return false;
    }
    return $response;
}

Этот код можно внедрить в основную функцию для отправки данных.

Заключение: автоматизация и эффективность

Интеграция Contact Form 7 с 1С через Webhook позволяет автоматизировать передачу данных из сайта в учетную систему, что экономит время и снижает ошибки ручного ввода. Используя приведенный пример и рекомендации, вы сможете настроить надежный обмен данными, учитывая особенности своей 1С и структуры форм.

Для расширения возможностей формы и удобства работы с данными можно также рассмотреть плагины, оптимизирующие работу Contact Form 7 или интеграцию с CRM, например, с поддержкой Webhook и REST API. Подробнее такие решения представлены на WPSHOP.ru.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Contact Form 7: отправка формы через REST API с авторизацией в WordPress
14.05.2026
Contact Form 7: Автозаполнение полей формы по ID пользователя в WordPress
02.05.2026
Contact Form 7: как добавить подписку на рассылку с помощью checkbox
04.03.2026
Contact Form 7 и отправка данных в Telegram бот: практическое руководство с кодом
20.01.2026
Contact Form 7: как добавить поля динамического выбора в форму
26.02.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙