Contact Form 7 и Telegram: 4 способа получать заявки

Обновлено 10 октября 2026 г. · 8 мин чтения

Contact Form 7 — самая популярная форма WordPress, но из коробки она умеет только отправлять письмо. Если письма уходят в спам или читаются раз в день, заявки остывают. Ниже — четыре способа получать отправки CF7 в Telegram с их плюсами и ограничениями.

Способ 1. Готовый плагин из каталога WordPress

В каталоге WordPress есть несколько плагинов, которые пересылают отправки Contact Form 7 в Telegram. Обычно нужно создать бота через @BotFather, указать в настройках плагина токен бота и Chat ID.

Плюс — настройка за 10 минут без кода. Минусы — плагины небольших авторов редко обновляются, а история заявок по-прежнему живёт только в почте. При выборе смотрите на дату последнего обновления и совместимость с текущей версией WordPress.

Способ 2. Свой код через хук Contact Form 7

CF7 даёт хуки, через которые можно получить данные отправки. Код ниже добавляется в functions.php дочерней темы или в небольшой собственный плагин.

functions.php
add_action('wpcf7_before_send_mail', function ($form) {
  $submission = WPCF7_Submission::get_instance();
  if (!$submission) return;
  $d = $submission->get_posted_data();
  $text = "Заявка: " . $form->title() . "\n"
    . "Имя: " . ($d['your-name'] ?? '—') . "\n"
    . "Email: " . ($d['your-email'] ?? '—') . "\n"
    . "Сообщение: " . ($d['your-message'] ?? '—');
  wp_remote_post('https://api.telegram.org/bot' . TG_TOKEN . '/sendMessage', [
    'timeout' => 5,
    'body' => ['chat_id' => TG_CHAT_ID, 'text' => $text],
  ]);
});

Используйте wpcf7_before_send_mail, а не wpcf7_mail_sent: второй хук срабатывает только после успешной отправки письма. Если почта сломана, вы не получите и уведомление в Telegram — то есть потеряете заявку дважды.

Константы TG_TOKEN и TG_CHAT_ID храните в wp-config.php, а не в коде темы. Учтите, что синхронный запрос к Telegram замедляет ответ формы, а при недоступности API сообщение просто не уйдёт — повторной отправки здесь нет.

Способ 3. Пересылка писем в Telegram

Можно оставить CF7 как есть и пересылать письма в Telegram через бота-пересыльщика или правило почтового ящика. Это работает, только если письма вообще доходят: при проблемах с SPF, DKIM или функцией mail() хостинга теряться будут и письма, и уведомления.

Способ 4. Плагин сервиса сбора заявок

Плагин Site-Inbox подписывается на отправки Contact Form 7 и Elementor Pro, сохраняет каждую заявку в общей панели и отправляет уведомление в Telegram. Стандартные поля your-name, your-email, your-phone и your-message распознаются автоматически, остальные поля формы сохраняются в дополнительных данных.

  • Заявка сохраняется, даже если письмо не ушло.
  • При сбое сети отправка повторяется в фоне через WP-Cron.
  • Видно сайт, форму, страницу и UTM-метки.
  • Можно подключить регистрации, комментарии и заказы WooCommerce.

Сравнение способов

  • Плагин-пересыльщик: быстро, но без истории и повторной отправки.
  • Свой код: гибко, но поддержка и обработка ошибок на вас.
  • Пересылка писем: просто, но зависит от доставки почты.
  • Сервис сбора заявок: история, статусы и повторная доставка; подходит, если сайтов несколько.

Независимо от способа проверьте, что форма корректно работает с кэширующими плагинами: устаревший кэш страницы — частая причина ошибки «Не удалось отправить сообщение» в CF7.

Частые вопросы

Как узнать Chat ID для Telegram?

Добавьте бота в нужный чат, отправьте в чат любое сообщение и откройте https://api.telegram.org/bot<токен>/getUpdates — в ответе будет chat.id. У групп он начинается с минуса, у супергрупп — с -100.

Почему уведомление приходит, а письмо нет?

Значит, проблема в отправке почты: настройте SMTP с авторизацией и проверьте SPF и DKIM домена.

Можно ли отправлять в Telegram только часть форм?

Да. В своём коде проверяйте $form->id(), а в сервисах сбора заявок фильтруйте по ID формы.

Установите плагин Site-Inbox — формы Contact Form 7 начнут сохраняться в панели и приходить в Telegram.

Читайте также