WORDPRESS → TELEGRAM

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

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

Сповіщення про нові заявки електронною поштою нерідко губляться: потрапляють у спам, надходять із затримкою через хостинг або просто залишаються непрочитаними. Месенджер розв’язує це завдання простіше – повідомлення надходить туди, куди менеджер заглядає десятки разів на день. Нижче – огляд конкретного рішення: що FormCourier Form Submissions for Telegram робить на технічному рівні та як його налаштувати.

Що робить плагін і як працює доставлення

Інтеграція WordPress із Telegram складається з трьох незалежних рівнів, і плутанина між ними – головна причина хибних очікувань.

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

Шлях передавання даних має такий вигляд:

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

Важлива архітектурна деталь: запит надсилається безпосередньо з вашого сервера. Обліковий запис FormCourier не потрібен, проміжного сервісу доставлення в цій схемі немає, а дані форми не проходять через сервер автора плагіна. На практиці це має два наслідки. З одного боку, менше посередників – менше точок відмови та питань щодо обробки персональних даних. З іншого – доставлення повністю залежить від того, чи може ваш хостинг виконувати вихідні HTTP-запити до зовнішніх API; якщо такі з’єднання заблоковані, надсилання не працюватиме.

Другий наслідок – надсилання виконується синхронно, під час обробки заявки. Власної фонової черги й автоматичних повторних спроб у плагіні немає: якщо 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 кожна інтеграція вмикається окремим прапорцем, причому інтерфейс визначає, чи встановлений і чи активний відповідний плагін на сайті. Можна ввімкнути одразу кілька інтеграцій – наприклад, одночасно отримувати в Telegram сповіщення з Contact Form 7 і WPForms на одному сайті.

Ключове обмеження поточної версії: доставлення вмикається на рівні конструктора форм, а не окремим налаштуванням для кожної форми. Якщо інтеграція з 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 після того, як боту надіслано хоча б одне повідомлення.

На практиці інтеграція WordPress із Telegram-ботом найчастіше не працює з трьох причин:

  • користувач не написав боту першим (бот не може розпочати особистий діалог);
  • бота не додали до групи або не надали йому права публікувати повідомлення в каналі;
  • в ідентифікаторі групи або каналу пропустили мінус – значення на зразок -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Перевіряє доставлення за допомогою тестової заявкиПеревіряє з’єднання, а не конкретну форму
Журнал доставленняЗберігає останні 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-заголовка Referer. Для звичайного надсилання форми зі сторінки сайту це працює, але гарантувати заповнення в усіх випадках не можна.

Форматування та довгі заявки

Повідомлення надсилаються з параметром 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 не передає ідентифікатор запису в цей обробник, тому для нього такий захист не застосовується.

Корисно розуміти й термінологію: описана схема не є інтеграцією через вебхук. Плагін сам ініціює запит із сайту WordPress до Telegram API в момент надсилання форми. Вебхук працює у зворотному напрямку – коли месенджер звертається до вашого сервера в разі подій у чаті. Приймання команд, передавання відповідей назад у WordPress і двосторонньої синхронізації тут немає, як немає й надсилання файлів, зображень або голосових повідомлень: використовується один метод надсилання тексту.

Безпека, конфіденційність і розширення можливостей

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

З погляду обробки даних усе просто. Заявки не надсилаються автору плагіна, натомість надходять у Telegram – зовнішній сторонній сервіс із власними умовами. Адміністратору сайту варто зазначити це в політиці конфіденційності, якщо цього вимагають застосовні правила та характер даних, що збираються. Жоден плагін інтеграції WordPress із Telegram сам собою не забезпечує автоматичної відповідності GDPR.

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

Для розробників доступні три точки розширення: фільтр 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.