Contact Form 7 — один из самых популярных плагинов для создания форм в WordPress. Часто возникает задача не просто получать письма с форм, а отправлять данные в CRM, мессенджеры, сервисы аналитики или другие приложения. Один из удобных и универсальных способов интеграции — использование Webhook. В этой статье мы подробно разберем, как реализовать отправку данных Contact Form 7 во вторые сервисы через Webhook, рассмотрим примеры кода и рекомендации по безопасности.
Что такое Webhook и зачем он нужен с Contact Form 7
Webhook — это механизм, при котором одно приложение отправляет данные в другое по HTTP-запросу (обычно POST) в момент наступления события. В случае Contact Form 7 событием будет отправка формы. Это позволяет мгновенно передавать данные, например, в CRM, чат-бот, Google Sheets, сервисы аналитики или любые REST API.
Преимущества Webhook с Contact Form 7:
- Автоматическая передача данных без участия пользователя
- Гибкость интеграции с любыми сторонними сервисами
- Нет необходимости использовать сторонние плагины для каждой интеграции
- Возможность добавления дополнительной логики в обработчик
Однако Contact Form 7 из коробки не поддерживает Webhook. Для реализации потребуется добавить свой PHP-код или использовать плагины расширения.
Как в Contact Form 7 реализовать отправку данных через Webhook: пример кода
Для примера создадим функцию, которая будет срабатывать после успешной отправки формы, собирать данные и отправлять их на внешний URL по POST-запросу.
Добавьте следующий код в functions.php вашей темы или в отдельный плагин:
add_action('wpcf7_mail_sent', 'contactform7ru_send_webhook');
function contactform7ru_send_webhook($contact_form) {
$submission = WPCF7_Submission::get_instance();
if (!$submission) {
return;
}
$data = $submission->get_posted_data();
// Собираем нужные поля формы
$webhook_data = array(
'name' => isset($data['your-name']) ? sanitize_text_field($data['your-name']) : '',
'email' => isset($data['your-email']) ? sanitize_email($data['your-email']) : '',
'message' => isset($data['your-message']) ? sanitize_textarea_field($data['your-message']) : '',
);
// URL вашего Webhook-сервиса
$webhook_url = 'https://example.com/api/webhook';
// Отправляем POST-запрос
$args = array(
'body' => json_encode($webhook_data),
'headers' => array('Content-Type' => 'application/json'),
'timeout' => 10,
);
$response = wp_remote_post($webhook_url, $args);
// Опционально: логируем ошибку
if (is_wp_error($response)) {
error_log('ContactForm7ru Webhook ошибка: ' . $response->get_error_message());
}
}
Обратите внимание, что здесь мы используем хук wpcf7_mail_sent, который срабатывает после успешной отправки формы. Мы получаем отправленные данные, фильтруем их для безопасности, формируем JSON и отправляем на URL Webhook.
Вместо https://example.com/api/webhook подставьте URL нужного вам сервиса.
Настройка Webhook для популярных сервисов
Разберем несколько примеров популярных интеграций через Webhook с Contact Form 7.
Отправка данных в Google Sheets через Webhook
Google Sheets не предоставляет прямого Webhook, но можно использовать сервисы типа Zapier или Make (Integromat) для создания промежуточного Webhook. Вам нужно:
- Создать Webhook URL в Zapier/Make
- Добавить его в код выше вместо
$webhook_url - Настроить в Zapier/Make передачу данных в Google Sheets
Так вы получите автоматическое добавление заявок из формы в таблицу.
Интеграция с CRM Битрикс24 через Webhook
В Битрикс24 есть входящие Webhook, которые принимают заявки. Чтобы отправить данные Contact Form 7 в Битрикс24:
- Создайте входящий Webhook в вашем Битрикс24 (раздел Приложения > Входящие Webhook)
- Получите URL Webhook
- Подставьте URL в код выше
- Подготовьте массив
$webhook_dataв формате, который требует Битрикс24 (обычно это JSON с нужными полями)
Это позволит автоматически создавать сделки или лиды из форм сайта.
Отправка уведомлений в Telegram через Webhook
Отправлять данные в Telegram можно через Bot API. Для этого:
- Создайте бота в Telegram и получите токен
- Получите ID чата для отправки сообщений
- Добавьте в функцию отправку запроса на
https://api.telegram.org/bot{TOKEN}/sendMessageс нужным текстом
Пример кода отправки уведомления:
function contactform7ru_send_telegram($contact_form) {
$submission = WPCF7_Submission::get_instance();
if (!$submission) return;
$data = $submission->get_posted_data();
$message = "Новая заявка:\n";
$message .= "Имя: " . ($data['your-name'] ?? '') . "\n";
$message .= "Email: " . ($data['your-email'] ?? '') . "\n";
$message .= "Сообщение: " . ($data['your-message'] ?? '');
$telegram_api = 'https://api.telegram.org/botYOUR_BOT_TOKEN/sendMessage';
$chat_id = 'YOUR_CHAT_ID';
wp_remote_post($telegram_api, [
'body' => [
'chat_id' => $chat_id,
'text' => $message
]
]);
}
add_action('wpcf7_mail_sent', 'contactform7ru_send_telegram');
Подставьте свои данные, и уведомления будут приходить в Telegram сразу после отправки формы.
Плагины для интеграции Contact Form 7 с Webhook
Если вы не хотите писать код, есть несколько плагинов, которые упрощают работу с Webhook:
- Contact Form 7 to Webhook — позволяет настроить URL Webhook и передавать данные из формы без программирования.
- Clearfy Pro — многофункциональный плагин оптимизации и безопасности, который упрощает написание кастомных интеграций и работу с формами.
Использование плагинов удобно, если у вас нет навыков PHP или хотите быстро настроить интеграцию.
Рекомендации по безопасности при работе с Webhook
При передаче данных через Webhook важно соблюдать меры безопасности:
- Используйте HTTPS для защищенного соединения
- Проверяйте и фильтруйте все данные, получаемые из формы (как в примерах выше)
- Добавляйте проверку подписи или токена на стороне сервиса, если это поддерживается
- Обрабатывайте ошибки и логируйте неудачные попытки отправки
- Ограничивайте частоту отправки запросов, чтобы избежать DDoS
Это поможет избежать утечек данных и повысить надежность интеграции.
Отладка и тестирование Webhook с Contact Form 7
Чтобы убедиться, что данные корректно отправляются и принимаются:
- Используйте сервисы для тестирования Webhook, например Webhook.site, куда можно временно отправлять запросы и видеть их содержимое
- Настройте логирование ошибок в WordPress через
error_logили плагины для отладки - Проверяйте ответы сервера на POST-запросы в своем коде
- Пошагово тестируйте интеграцию на тестовом сайте
Это позволит избежать ошибок в работе формы и интеграции.
Итог
Отправка данных из Contact Form 7 во вторые сервисы через Webhook — мощный и гибкий способ интеграции. С помощью простого PHP-кода или плагинов вы сможете связать вашу форму с CRM, мессенджерами, таблицами и другими системами, автоматизируя бизнес-процессы и улучшая взаимодействие с пользователями.
Если хотите узнать больше о расширениях для WordPress и Contact Form 7, рекомендуем посмотреть WpShop.ru — отличный ресурс с плагинами и темами для любых задач.