FormCourier Form Submissions for 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. Усі ввімкнені інтеграції використовують її спільно, тому сценарій «контактна форма в один чат, форма замовлення в інший» стандартними налаштуваннями реалізувати не можна.
Як створити Telegram-бота для WordPress
Щоб надсилати заявки з форм WordPress у Telegram, спочатку створіть бота через @BotFather. Бот працюватиме як зв’язок між вашим сайтом WordPress і Telegram-чатом, куди надходитимуть сповіщення про нові відправлення форми.
- Відкрийте @BotFather у Telegram і надішліть команду
/newbot. - Вкажіть ім’я бота, а потім виберіть унікальне ім’я користувача, яке закінчується на
bot. - Скопіюйте Bot Token, який надасть BotFather.
- У WordPress відкрийте налаштування FormCourier Telegram і вставте токен у поле Bot Token.
- Відкрийте створеного бота в Telegram і натисніть Start.
- Отримайте Chat ID потрібного чату та додайте його до налаштувань FormCourier.
- Використайте 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. Порядок дій:
- Встановити й активувати плагін.
- Відкрити вкладку Telegram, вставити Bot Token і Chat ID.
- Увімкнути інтеграцію та зберегти налаштування.
- На вкладці Forms позначити потрібні конструктори.
- За потреби відредагувати шаблон на вкладці Message.
- Натиснути Send Test Message.
- Надіслати реальну заявку через форму та перевірити результат у чаті й у розділі 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 – другий отримує результат запиту та зручний для ведення власного журналу. Візуального конструктора правил у плагіні немає; це саме програмні хуки.
FAQ
