WORDPRESS → TELEGRAM

FormCourier Form Submissions for Telegram: как плагин передает заявки из форм сайта в мессенджер

Плагин FormCourier Form Submissions for Telegram передает данные из форм WordPress напрямую в Telegram, обеспечивая мгновенное уведомление о новых лидах.
FormCourier Form Submissions for Telegram отправка заявок из форм WordPress в Telegram

Email-уведомления о новых заявках нередко теряются: попадают в спам, приходят с задержкой хостинга или просто остаются непрочитанными. Мессенджер решает задачу проще — сообщение приходит туда, куда менеджер смотрит десятки раз в день. Ниже — разбор конкретного решения: что FormCourier Form Submissions for Telegram делает на техническом уровне и как он настраивается.

Что делает плагин и как устроена доставка

Связка wordpress телеграм строится на трех независимых слоях, и путаница между ними — главная причина неверных ожиданий.

Первый слой — конструктор форм (Contact Form 7, WPForms и другие). Он рисует форму, валидирует поля и сохраняет запись, а в момент успешной отправки запускает собственный хук — программную точку, к которой может подключиться сторонний код. Второй слой — FormCourier. Он подписывается на эти хуки, забирает значения полей, собирает из них текстовое сообщение по заданному шаблону и отправляет HTTP-запрос методом sendMessage. Третий слой — Telegram Bot API, официальный интерфейс мессенджера, который принимает запрос, проверяет токен бота и доставляет сообщение в указанный чат.

Маршрут данных выглядит так:

Форма на сайте → хук конструктора → FormCourier → api.telegram.org → чат-адресат

Важная архитектурная деталь: запрос уходит напрямую с вашего сервера. Учетная запись FormCourier не нужна, промежуточного сервиса доставки в схеме нет, и данные формы не проходят через сервер автора плагина. Практическое следствие двоякое. С одной стороны, меньше посредников — меньше точек отказа и вопросов к обработке персональных данных. С другой — доставка полностью зависит от того, может ли ваш хостинг выполнять исходящие HTTP-запросы к внешним API; если такие соединения закрыты, не сработает ничего.

Второе следствие — отправка выполняется синхронно, во время обработки submission. Собственной фоновой очереди и автоматических повторных попыток в плагине нет: если Telegram в эту секунду недоступен, сообщение не уйдет повторно само по себе, а в журнале останется запись об ошибке.

Поддерживаемые плагины форм

Плагин интегрируется с шестью конструкторами, для каждого из которых в коде есть отдельный обработчик со своим хуком:

  • Contact Form 7 — обработка на wpcf7_before_send_mail;
  • WPForms — wpforms_process_complete;
  • Fluent Forms — fluentform/submission_inserted;
  • Forminator — forminator_custom_form_submit_before_set_fields;
  • Ninja Forms — ninja_forms_after_submission;
  • Gravity Forms — gform_after_submission.

Во вкладке Forms каждый провайдер включается отдельным чекбоксом, причем интерфейс определяет, установлен ли и активен ли соответствующий плагин на сайте. Включить можно сразу несколько — например, contact form 7 telegram уведомления и параллельно wpforms telegram на том же сайте.

Ключевое ограничение текущей версии: доставка включается на уровне конструктора форм, а не отдельной настройкой для каждой формы. Если интеграция с Ninja Forms активна, плагин обрабатывает отправки всех форм этого конструктора; выбрать одну конкретную форму по ID в стандартном интерфейсе нельзя.

Отдельно стоит отметить, чего в списке нет. Формы Elementor, Divi, JetFormBuilder, Formidable Forms, а также заказы WooCommerce плагин не обрабатывает. И это не «чат-виджет» для сайта: плагин ничего не выводит на фронтенде и не добавляет кнопку связи — он работает только с уже отправленными данными.

Telegram-бот: Bot Token и Chat ID

Для подключения нужны два значения, и оба получают средствами мессенджера. Плагин не создает ни бота, ни группу, ни канал и не определяет идентификатор чата самостоятельно.

Bot Token выдает @BotFather после команды /newbot. Это строка вида 123456789:AA…, фактически пароль доступа к боту.

Chat ID определяет адресата. Им может быть личный чат, группа или канал при условии, что у бота есть туда доступ. Получить значение можно через служебных ботов, показывающих ID, либо через метод getUpdates — открыв в браузере https://api.telegram.org/bot<ТОКЕН>/getUpdates после того, как боту отправлено хотя бы одно сообщение.

На практике telegram bot wordpress чаще всего не работает из-за трех вещей:

  • боту не написали первым (бот не может инициировать личный диалог);
  • бота не добавили в группу или не дали ему права публикации в канале;
  • в идентификаторе группы или канала отбросили минус — значения вида -1001234567890 отрицательные, и знак является их частью.

Управление правами внутри чата остается зоной ответственности мессенджера. Плагин лишь передаст ошибку, которую вернет API.

Еще одно ограничение, о котором лучше знать заранее: хранится одна общая конфигурация — один Bot Token и один Chat ID. Все включенные провайдеры используют ее совместно, поэтому сценарий «контактная форма в один чат, форма заказа в другой» штатными настройками не решается.

Получайте заявки из WordPress прямо в Telegram

Подключите FormCourier один раз и мгновенно узнавайте о новых обращениях с сайта, чтобы быстрее отвечать потенциальным клиентам.

Как создать Telegram-бота для WordPress

Чтобы отправлять заявки из форм WordPress в Telegram, сначала создайте бота через @BotFather. Бот будет связующим звеном между вашим сайтом WordPress и Telegram-чатом, куда будут приходить уведомления о новых отправках формы.

  1. Откройте @BotFather в Telegram и отправьте команду /newbot.
  2. Укажите имя бота, затем выберите уникальное имя пользователя, заканчивающееся на bot.
  3. Скопируйте Bot Token, который предоставит BotFather.
  4. В WordPress откройте настройки FormCourier Telegram и вставьте токен в поле Bot Token.
  5. Откройте созданного бота в Telegram и нажмите Start.
  6. Получите Chat ID нужного чата и добавьте его в настройки FormCourier.
  7. Используйте Test Message, чтобы проверить подключение.

Храните Bot Token в секрете и никогда не публикуйте его на скриншотах, в публичных репозиториях или в коде сайта.

Как узнать Chat ID в Telegram

После создания Telegram-бота вам понадобится Chat ID, чтобы указать FormCourier, куда отправлять уведомления из форм.

Для личного чата откройте своего бота в Telegram, нажмите Start и отправьте любое сообщение. Затем используйте метод Telegram Bot API getUpdates, чтобы найти в ответе значение chat.id.

Для группы добавьте бота в нужную группу и отправьте там сообщение. Chat ID группы также появится в getUpdates и обычно представляет собой отрицательное число.

Скопируйте правильный Chat ID, вставьте его в настройки FormCourier в WordPress и используйте Test Message, чтобы убедиться, что уведомления успешно доставляются.

Настройка: пять вкладок админки

Интерфейс разделен на разделы Dashboard, Telegram, Forms, Message и Logs. Рабочий порядок действий:

  1. Установить и активировать плагин.
  2. Открыть вкладку Telegram, вставить Bot Token и Chat ID.
  3. Включить интеграцию и сохранить настройки.
  4. Во вкладке Forms отметить нужные конструкторы.
  5. При необходимости отредактировать шаблон во вкладке Message.
  6. Нажать Send Test Message.
  7. Отправить реальную форму и проверить результат в чате и в Logs.

Тестовое сообщение стоит отправлять до проверки формы. Инструмент формирует фиктивную заявку с полями Name, Email, Phone и Message и отправляет ее через сохраненные токен и Chat ID. Тем самым проверяется именно конфигурация доставки: верен ли токен, существует ли чат, есть ли у бота права, проходит ли исходящий запрос с сервера. Работу конкретного конструктора он не проверяет — для этого нужна реальная отправка.

Вот как соотносятся основные возможности и их фактические границы:

ВозможностьЧто делаетЧто важно учитывать
Включение провайдеровАктивирует доставку для выбранных конструкторов формНастройка на уровне конструктора, не отдельной формы
Telegram-подключениеХранит Bot Token и Chat ID адресатаОдна конфигурация на весь сайт, маршрутизации по чатам нет
Шаблон сообщенияЗадает вид уведомления через подстановкиШаблон общий для всех включенных провайдеров
Разбиение длинных сообщенийДелит текст на части по ~3000 символовЧасти приходят отдельными сообщениями с пометкой Part N of M
Send Test MessageПроверяет доставку тестовой заявкойПроверяет соединение, а не конкретную форму
Delivery logsХранит последние 100 попыток отправкиЗначения полей заявки в журнал не записываются
Защита от дублейБлокирует повторную отправку в пределах минутыРаботает, если конструктор передает ID отправки
Шифрование токенаШифрует Bot Token перед сохранениемТолько при наличии поддержки OpenSSL в PHP
Очистка при удаленииУдаляет настройки и логи плагинаОтключено по умолчанию; данные форм не трогает

Шаблон сообщения и подстановки

По умолчанию уведомление состоит из заголовка, названия формы и списка полей. В шаблоне доступны подстановки {form_provider}, {form_id}, {form_name}, {all_fields}, {page_url}, {site_name}, {site_url}, {date}, {time} и динамическая конструкция {field:FIELD_NAME}. Неизвестные подстановки из итогового текста вырезаются, так что опечатка не превратится в мусор внутри сообщения.

Основную работу делает {all_fields}. Плагин приводит имена полей к читаемому виду: заменяет дефисы и подчеркивания пробелами, снимает типовые префиксы вроде your-, а распространенные имена Forminator (name-1, email-1, phone-1) сопоставляет с понятными подписями. Пустые значения пропускаются, служебные и антиспам-параметры — ответы reCAPTCHA, hCaptcha, Turnstile, nonce, внутренние ключи с подчеркиванием — отфильтровываются, чтобы уведомление не превращалось в технический дамп.

{field:FIELD_NAME} вынимает одно конкретное значение — удобно, когда телефон нужно поставить в первую строку. Здесь есть нюанс: идентификаторы полей различаются между конструкторами. В Contact Form 7 это имя тега из шорткода (your-email), в WPForms — числовой ID поля, для которого плагин дополнительно регистрирует алиасы вида field_3 и подпись поля. Поэтому {field:email} — это пример, а не универсальная формула; фактическое имя нужно смотреть в настройках своей формы. Если разбираться не хочется, {all_fields} надежнее.

Небольшое предупреждение по {page_url}: значение берется из HTTP-заголовка referrer. Для обычной отправки формы со страницы сайта это работает, но абсолютной гарантии заполнения дать нельзя.

Форматирование и длинные заявки

Сообщения уходят с параметром parse_mode: HTML — это разметка мессенджера, а не Markdown и не полноценная HTML-страница. Шаблон пропускается через белый список тегов: жирный, курсив, подчеркивание, зачеркивание, code и pre, цитата, ссылка. Этого достаточно, чтобы выделить заголовок и сделать контакты удобными для копирования.

Если собранный текст превышает внутренний лимит примерно в 3000 символов, он разбивается на последовательные сообщения с пометками Part 1 of N, Part 2 of N и так далее. Разрыв ищется по ближайшему естественному разделителю — переносу строки, пробелу или знаку препинания, — поэтому слова обычно не рвутся посередине. Данные не обрезаются: если отправка одной из частей не удалась, в журнал попадает указание, на какой именно части процесс остановился.

Журнал доставки и диагностика

Плагин хранит в базе последние 100 попыток отправки. В записи видно время, конструктор форм, идентификатор и название формы, статус и текст результата. Значения полей, заполненных посетителем, в журнал не записываются — это инструмент контроля доставки, а не архив заявок; за хранение самих записей отвечает ваш конструктор форм.

Ответ API плагин разбирает и переводит в понятные формулировки вместо сухих кодов:

  • 401 — не прошла аутентификация, проверьте токен;
  • chat not found — почти всегда опечатка в Chat ID или потерянный минус;
  • 403 / forbidden / bot was blocked — бот заблокирован или не имеет права публикации;
  • 429 — достигнут лимит частоты; если API вернул retry_after, значение подставляется в текст ошибки;
  • 5xx — временная недоступность на стороне мессенджера;
  • Network error — запрос не ушел с сервера, причина на стороне хостинга.

Если записи в журнале нет вовсе, до этапа отправки дело не дошло. Проверьте по порядку: включена ли интеграция, отмечен ли нужный провайдер во вкладке Forms, активен ли сам конструктор, действительно ли форма отправляется без ошибки валидации, и не пуста ли форма — при отсутствии заполненных полей обработчик завершается молча.

Для отправок, по которым конструктор передает идентификатор записи (WPForms, Fluent Forms, Forminator, Ninja Forms, Gravity Forms), работает защита от повторной доставки: на минуту ставится метка, и второй вызов того же хука не создаст дубль. Contact Form 7 идентификатор записи в этот обработчик не передает, поэтому для него такая защита не применяется.

Полезно понимать и терминологию: описанная схема не является webhook-интеграцией. Плагин сам инициирует запрос к telegram api wordpress-сайта в момент отправки формы. Webhook работает в обратную сторону — когда мессенджер обращается к вашему серверу при событиях в чате. Приема команд, ответов обратно в WordPress и двусторонней синхронизации здесь нет, как нет и отправки файлов, изображений или голосовых сообщений: используется один метод текстовой отправки.

Безопасность, приватность и расширение

Bot Token сохраняется в настройках WordPress и после сохранения не показывается обратно в интерфейсе. При наличии поддержки OpenSSL в PHP-среде значение шифруется алгоритмом AES-256-CBC на ключе, производном от соли сайта. Это защита хранимого значения в базе, а не сквозное шифрование переписки: содержимое сообщения мессенджер обрабатывает как обычное сообщение бота.

С точки зрения обработки данных картина простая. Заявки не уходят автору плагина, зато уходят в Telegram — а это внешний сторонний сервис со своими условиями. Администратору сайта стоит отразить это в политике конфиденциальности, если того требуют применимые правила и характер собираемых данных. Автоматического соответствия GDPR ни один wordpress telegram plugin сам по себе не обеспечивает.

При удалении плагина его настройки и журналы стираются только если заранее включена соответствующая опция (по умолчанию она выключена). Записи, которые хранят сами конструкторы форм, при этом не затрагиваются.

Для разработчиков доступны три точки расширения: фильтр formcourier_telegram_submission, позволяющий изменить объект отправки до формирования сообщения, и экшены formcourier_telegram_before_send и formcourier_telegram_after_send — второй получает результат запроса и удобен для собственного логирования. Визуального конструктора правил в плагине нет; это именно программные хуки.

question-mark-svgrepo-com-150x150 FAQ

Часто задаваемые вопросы

В версии 1.0.1 — нет. Хранится одна пара «токен + Chat ID», общая для всех включенных конструкторов, и шаблон сообщения тоже один. Различать источник заявок удобно через подстановки: добавьте в шаблон {form_name} и {form_provider}, и в чате будет видно, откуда пришло обращение.
Сначала проверьте токен на лишние пробелы при вставке и Chat ID целиком, вместе с минусом для групп и каналов. Затем убедитесь, что бот добавлен в нужный чат и имеет право публикации. Если текст ошибки говорит о сетевой проблеме, а не об отказе со стороны API, причина обычно на хостинге — уточните у провайдера, разрешены ли исходящие соединения к внешним сервисам.
Нет. Журнал фиксирует только факт попытки доставки: время, конструктор, форму, статус и результат. Заполненные посетителем значения в нем не хранятся, поэтому использовать плагин как резервную базу заявок нельзя — для этого нужны собственные записи конструктора форм.
Да. Добавьте Telegram-бота в группу, отправьте сообщение в этой группе и укажите Chat ID группы в настройках FormCourier. Убедитесь, что у бота есть разрешение на отправку сообщений.
Проверьте правильность Bot Token и Chat ID, а также убедитесь, что бот был запущен или добавлен в нужную группу. Также проверьте, может ли ваш хостинг подключаться к Telegram Bot API.

Не пропускайте новые заявки с сайта

Отправляйте данные из Contact Form 7, WPForms и других популярных форм прямо в Telegram без внешних сервисов и учетной записи FormCourier.