Минимальная схема: сайт → сервер → Telegram Bot API

Frontend передаёт форму вашему backend. Backend сохраняет заявку и уже после этого отправляет уведомление в Telegram. Если Telegram временно недоступен, заявка не должна потеряться.

Отправить текст через Bot API

PHP
$token = getenv('TELEGRAM_BOT_TOKEN');
$chatId = getenv('TELEGRAM_CHAT_ID');

$payload = [
    'chat_id' => $chatId,
    'text' => "Новая заявка #123\nИмя: Иван\nТелефон: +79990000000",
];

$ch = curl_init(
    'https://api.telegram.org/bot' . rawurlencode($token) . '/sendMessage'
);

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT => 15,
]);

$response = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);

Что хранить в уведомлении

ПолеРекомендация
ID заявкиобязательно
Имя/контакттолько нужный минимум
URL страницыполезно для контекста
UTM/sourceполезно для маркетинга
Полный текст формы
Пароли/токеныникогда
Платёжные реквизитыникогда

Bot token — только на сервере

Если вставить token в JavaScript, любой посетитель сможет его увидеть. Храните секрет в env/config вне public web root.

Если нужна двусторонняя работа

Для команд оператора или обработки входящих сообщений используйте webhook Telegram. Его endpoint должен проверять ожидаемый секрет/маршрут и быстро отвечать, а тяжёлую логику выполнять отдельно.

Что делать при ошибке Telegram

Локальная заявка уже должна быть сохранена. Зафиксируйте status/error уведомления и повторите отправку позже, а не просите пользователя заново заполнять форму.

Скачать примеры для веб-разработки

RuJul Web Development Examples — один ZIP

Связанные материалы