Статті

Заявки з сайту в Telegram: 3 способи налаштувати

Оновлено:

Заявки в Telegram надходять швидше, ніж на пошту, і їх одразу бачить уся команда. Налаштувати це можна трьома способами: увімкнути інтеграцію в налаштуваннях платформи сайту, написати невеликий скрипт із ботом або підключити готовий сервіс. Розберемо кожен — із робочим кодом і типовими помилками.

Який спосіб обрати

СпосібКому підходитьЩо потрібно
Налаштування платформиСайт на конструкторі або WordPressЗнайти інтеграцію в налаштуваннях форм або плагін
Власний скрипт із ботомЄ розробник і сервер із PHP, Node.js або PythonБот, chat id, серверний скрипт
Готовий сервісСайт на власному коді, а писати бекенд для форм не хочетьсяПідключити скрипт сервісу й бота

Крок для будь-якого способу: створіть бота

Заявки в Telegram надсилає бот. Створити його можна за кілька хвилин:

  1. Відкрийте в Telegram @BotFather і надішліть команду /newbot.
  2. Придумайте ім’я бота й адресу — вона має закінчуватися на bot, наприклад myshop_leads_bot.
  3. BotFather надішле токен — рядок вигляду 123456789:AA…. Це ключ до бота: не публікуйте його й не вставляйте в код сторінки.
  4. Знайдіть свого бота й натисніть «Почати». Бот у Telegram не може написати людині першим — без цього кроку повідомлення не надходитимуть.

Спосіб 1. Налаштування платформи сайту

У багатьох конструкторах сайтів і CRM підключення Telegram є просто в налаштуваннях приймання заявок: ви вставляєте токен бота або авторизуєте офіційного бота платформи. Для WordPress є плагіни, які надсилають у Telegram заявки з популярних плагінів форм. Шукайте в довідці своєї платформи розділ про «отримання даних із форм» або «сповіщення».

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

Спосіб 2. Власний скрипт із ботом

Якщо сайт зроблено на власному коді і є сервер, заявку можна надіслати в Telegram через Bot API — метод sendMessage. Потрібні токен бота і chat id одержувача.

Як дізнатися chat id

  1. Напишіть боту будь-яке повідомлення — або додайте бота в групу й напишіть у ній.
  2. Відкрийте в браузері https://api.telegram.org/bot<токен>/getUpdates, підставивши свій токен.
  3. У відповіді знайдіть "chat":{"id":…}. В особистого чату це додатне число, у групи — від’ємне (у великих груп починається з -100).

Якщо замість списку повідомлень прийшла помилка про webhook, у бота вже налаштовано webhook і getUpdates для нього не працює. Зніміть webhook методом deleteWebhook або створіть окремого бота для заявок.

Обробник на PHP

Скрипт приймає дані форми, перевіряє поле-пастку й надсилає повідомлення. Токен і chat id беруться зі змінних оточення сервера, а не зберігаються у файлі, який може потрапити в загальний доступ.

send.phpphp
<?php
// send.php — лежить на вашому сервері поруч із сайтом
$token  = getenv('TG_BOT_TOKEN');   // токен — у налаштуваннях сервера, не в коді сторінки
$chatId = getenv('TG_CHAT_ID');

// Приховане поле-пастка: людина його не бачить, бот заповнює
if (!empty($_POST['website'])) { exit; }

$name    = trim($_POST['name'] ?? '');
$phone   = trim($_POST['phone'] ?? '');
$message = trim($_POST['message'] ?? '');

if ($phone === '') {
    http_response_code(400);
    exit('Вкажіть телефон');
}

// Простий текст без parse_mode — не потрібно екранувати HTML
$text = "Заявка з сайту\nІм’я: $name\nТелефон: $phone\n\n" . mb_substr($message, 0, 3000);

$ch = curl_init("https://api.telegram.org/bot$token/sendMessage");
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => ['chat_id' => $chatId, 'text' => $text],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 10,
]);
$ok = json_decode((string) curl_exec($ch), true)['ok'] ?? false;

http_response_code($ok ? 200 : 502);
echo $ok ? 'Дякуємо! Ми скоро зв’яжемося з вами' : 'Не вдалося надіслати — зателефонуйте нам';
Форма на сторінціhtml
<form action="/send.php" method="post">
  <input name="name" placeholder="Ім’я">
  <input name="phone" type="tel" placeholder="Телефон" required>
  <textarea name="message" placeholder="Повідомлення"></textarea>
  <!-- пастка для ботів: прихована від людей -->
  <input name="website" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px">
  <button>Надіслати</button>
</form>

Часті помилки

  • Токен у JavaScript на сторінці. Його побачить будь-який відвідувач і зможе розсилати повідомлення від імені бота. Надсилання — лише із сервера.
  • Немає захисту від спаму. Форма, яка шле все підряд у Telegram, за тиждень почне надсилати рекламу. Мінімум — поле-пастка й обмеження кількості надсилань з однієї адреси.
  • Розмітка без екранування. З parse_mode=HTML символ < у повідомленні відвідувача ламає надсилання. Надсилайте простий текст або екрануйте дані.
  • Довге повідомлення. Telegram приймає до 4096 символів в одному повідомленні — обрізайте текст заявки.
  • Заявка лише в Telegram. Якщо надіслати не вдалося, заявку втрачено. Зберігайте її ще й у базі даних або дублюйте на пошту.

Спосіб 3. Готовий сервіс без бекенду

Якщо сайт на власному коді, а писати й підтримувати обробник не хочеться, приймання заявок можна доручити сервісу. Так працюють форми Sitecog: скрипт на сторінці перехоплює надсилання будь-якої форми, зберігає заявку в CRM і надсилає сповіщення вашому боту.

Достатньо атрибута на вашій форміhtml
<script src="https://widget.sitecog.com/widget.js" defer></script>

<form data-crm-lead="callback">
  <input name="name" placeholder="Ім’я">
  <input name="phone" type="tel" placeholder="Телефон">
  <textarea name="message" placeholder="Повідомлення"></textarea>
  <button>Надіслати</button>
</form>

Що бере на себе сервіс:

  • ім’я, телефон, пошту й повідомлення сервіс знаходить за назвами полів, решта полів зберігається в заявці;
  • захист від спаму без капчі: поле-пастка й одноразовий пропуск, сумнівні заявки надходять із позначкою, подвійний клік не створює дубль;
  • сповіщення в Telegram протягом хвилини: назва форми, контакти, початок повідомлення й посилання на заявку в CRM;
  • кілька одержувачів, особисті чати й групи, у кожного свої тихі години — нічні заявки прийдуть уранці;
  • заявка не губиться, навіть якщо Telegram недоступний: вона вже збережена в CRM, а за згоди відвідувача на статистику — з каналом і UTM-мітками;
  • працює з формами на HTML, у темах WordPress і в застосунках на React і Vue (window.crmLead()).

Одержувачів не треба шукати за chat id: кожен пише вашому боту /start, а ви натискаєте «Оновити список» у налаштуваннях заявок. Нові одержувачі додаються вимкненими — боту може написати будь-хто, і контакти клієнтів побачать лише ті, кого ви ввімкнули самі.

Як перевірити, що все працює

  1. Надішліть тестову заявку із сайту з телефона й з комп’ютера.
  2. Перевірте, що повідомлення прийшло всім одержувачам і в групу.
  3. Надішліть форму з порожнім телефоном — вона не має відправитися.
  4. Через тиждень загляньте в список заявок: чи немає спаму і втрачених надсилань.

Часті питання

Як дізнатися chat id для Telegram?

Напишіть своєму боту будь-яке повідомлення (або додайте бота в групу й напишіть там), потім відкрийте в браузері https://api.telegram.org/bot<токен>/getUpdates. У відповіді знайдіть "chat":{"id":…} — це і є chat id. У груп він від’ємний.

Чому бот не надсилає повідомлення?

Найчастіше — одержувач жодного разу не написав боту: бот у Telegram не може написати людині першим. Ще буває неправильний chat id, бота видалили з групи або токен перевипустили в @BotFather. Якщо getUpdates повертає помилку про webhook, у бота налаштовано webhook — його треба зняти або використати іншого бота.

Чи можна надсилати заявки в Telegram просто з JavaScript на сторінці?

Технічно так, але робити цього не можна: токен бота опиниться в коді сторінки, і будь-який відвідувач зможе ним скористатися — читати повідомлення бота й розсилати спам від його імені. Токен має зберігатися лише на сервері.

Як надсилати заявки одразу кільком співробітникам?

Найпростіше — створити групу в Telegram, додати туди бота й співробітників і надсилати повідомлення в групу. У своєму скрипті можна також перебрати кілька chat id. У Sitecog одержувачів обирають галочками, і в кожного свої тихі години.

Скільки це коштує?

Telegram Bot API безкоштовний. Власний скрипт коштує часу розробника й хостингу з PHP або іншою серверною мовою. У Sitecog заявки з форм входять у тариф Pro ($79 за 30 днів), кількість заявок не обмежена.