
Сделали лендинг или сайт-визитку на чистом HTML, всё красиво, всё работает — кроме формы заявки. Чтобы посетитель отправил сообщение и оно реально пришло вам на почту или в Telegram, нужен обработчик: код на сервере, который примет данные из формы и отправит их. Но если у вас нет ни PHP, ни Node.js, ни знаний программирования — это не приговор. В этой статье разберём пять способов сделать рабочую форму на чисто статичном HTML-сайте без своего бэкенда.
Содержание
- В чём проблема формы на статичном сайте
- Способ 1. Formspree
- Способ 2. Getform
- Способ 3. mailto: ссылка
- Способ 4. Прямая отправка в Telegram
- Способ 5. Google Forms / Yandex Forms
- Сравнение всех способов
- Валидация формы на стороне клиента
- Защита от спама
- Дизайн формы и UX
- FAQ
- Чек-лист рабочей формы
В чём проблема формы на статичном сайте
Стандартная HTML-форма выглядит так:
<form action="?" method="POST">
<input name="name" type="text">
<input name="email" type="email">
<button type="submit">Отправить</button>
</form>
Когда пользователь нажимает «Отправить», браузер отправляет данные на адрес, указанный в action=. И здесь — главная проблема статичного сайта: на сервере нет ничего, что могло бы принять и обработать эти данные. Только статичные файлы.
Чтобы форма заработала, нужен обработчик. Варианта три:
- Поднять свой бэкенд (PHP, Node.js, Python) — сложно и требует другого типа хостинга.
- Использовать сторонний сервис, который принимает данные форм и пересылает вам.
- Использовать обходные пути (mailto, прямой API Telegram).
Все варианты, кроме первого, разберём подробно.
Способ 1. Formspree
Самый популярный сервис для статичных сайтов. Регистрируетесь, получаете уникальный URL — указываете его в форме как action. Заявки приходят на ваш email.
Как настроить
- Регистрируетесь на formspree.io.
- Подтверждаете свой email.
- Создаёте новую форму (New Form), задаёте имя.
- Получаете URL вида
https://formspree.io/f/abcd1234. - Вставляете его в HTML-форму как
action.
Код формы
<form action="https://formspree.io/f/abcd1234" method="POST">
<label>
Ваше имя:
<input type="text" name="name" required>
</label>
<label>
Email:
<input type="email" name="email" required>
</label>
<label>
Сообщение:
<textarea name="message" required></textarea>
</label>
<button type="submit">Отправить</button>
</form>
Плюсы
- Бесплатный тариф: 50 заявок в месяц.
- Простая настройка — пять минут.
- Антиспам встроен.
- Можно настроить редирект на страницу благодарности.
- Поддерживает AJAX-отправку (без перезагрузки страницы).
Минусы
- 50 заявок/месяц на бесплатном — для активного лендинга мало.
- Платный тариф от $10/мес.
- Иностранный сервис, периодически могут быть проблемы с доступом.
Способ 2. Getform
Прямой аналог Formspree. Логика та же: регистрируетесь, получаете URL, указываете в форме.
Особенности
- Бесплатно: 50 заявок в месяц на одну форму.
- Антиспам через reCAPTCHA.
- Интеграции с Slack, Zapier, Google Sheets.
- Платный — от $12/мес.
Аналоги по этой же модели: Web3Forms (бесплатно без лимита, требует email-верификации), Basin, FormBackend.
Способ 3. mailto: ссылка
Самый простой и старый способ. Не требует ни сервиса, ни регистрации. Минус — открывает почтовый клиент пользователя, который не у всех настроен.
Простой вариант (просто ссылка)
<a href="mailto:info@yourdomain.ru">Написать нам</a>
С предзаполненной темой и текстом
<a href="mailto:info@yourdomain.ru?subject=Заявка%20с%20сайта&body=Здравствуйте%2C%20хочу%20заказать...">
Написать
</a>
Форма с отправкой через mailto
<form action="mailto:info@yourdomain.ru" method="POST" enctype="text/plain">
<input type="text" name="name">
<input type="email" name="email">
<textarea name="message"></textarea>
<button type="submit">Отправить</button>
</form>
Плюсы
- Никаких сервисов и регистраций.
- Бесплатно навсегда.
- Работает на 100% сайтов.
Минусы
- Открывает встроенный почтовый клиент пользователя.
- На большинстве компьютеров клиент не настроен — открывается Outlook без аккаунта или ничего.
- На мобильных работает лучше (открывается стандартное приложение Почты).
- Низкая конверсия — пользователи уходят с открытия mailto.
Подходит как запасной вариант или дополнение к основной форме («Не сработала форма? Напишите прямо на info@…»).
Способ 4. Прямая отправка в Telegram
Очень популярный в 2026 году подход. Заявка приходит сразу в Telegram-канал или личные сообщения. Чтобы видеть заявки мгновенно с уведомлениями.
Как настроить
- В Telegram пишете @BotFather, командой
/newbotсоздаёте бота. Получаете токен. - Создаёте канал или группу для заявок. Добавляете туда вашего бота.
- Узнаёте chat_id канала: пишете любое сообщение, переходите по URL
https://api.telegram.org/bot[ТОКЕН]/getUpdates— в ответе найдёте chat_id. - Делаете JS-код, который при отправке формы шлёт запрос в API Telegram.
Код
<form id="contactForm">
<input type="text" id="name" placeholder="Имя" required>
<input type="tel" id="phone" placeholder="Телефон" required>
<textarea id="message" placeholder="Сообщение"></textarea>
<button type="submit">Отправить</button>
</form>
<script>
const TOKEN = 'ВАШ_ТОКЕН_БОТА';
const CHAT_ID = 'ВАШ_CHAT_ID';
document.getElementById('contactForm').addEventListener('submit', async (e) => {
e.preventDefault();
const name = document.getElementById('name').value;
const phone = document.getElementById('phone').value;
const message = document.getElementById('message').value;
const text = `Новая заявка%0AИмя: ${name}%0AТелефон: ${phone}%0AСообщение: ${message}`;
const url = `https://api.telegram.org/bot${TOKEN}/sendMessage?chat_id=${CHAT_ID}&text=${text}`;
await fetch(url);
alert('Заявка отправлена!');
e.target.reset();
});
</script>
Плюсы
- Бесплатно навсегда.
- Заявки приходят мгновенно с пуш-уведомлениями.
- Можно подключить нескольких получателей через группу.
Минусы
- Токен бота виден в исходном коде — теоретически любой может им воспользоваться.
- В РФ Telegram временами замедлен — заявки могут приходить с задержкой.
- Нет встроенного антиспама.
Способ 5. Google Forms / Yandex Forms
Создаёте форму в Google Forms или Яндекс.Формах, встраиваете её на свой сайт через iframe.
Yandex Forms (рекомендую для РФ)
- Заходите на forms.yandex.ru, создаёте новую форму.
- Настраиваете поля.
- В разделе «Распространение» получаете код для встраивания.
- Вставляете iframe на свой сайт.
Ответы собираются в Яндекс.Таблицы, можно настроить уведомления на email.
Плюсы
- Полностью бесплатно.
- Удобный конструктор формы.
- Все ответы в таблице.
- Антиспам встроен (особенно у Яндекса).
Минусы
- Дизайн формы ограничен — не вписывается в стиль вашего сайта так же чисто, как кастомная.
- iframe тяжелее обычной формы — слегка замедляет загрузку.
- Уведомления приходят с задержкой.
Сравнение всех способов
| Способ | Сложность | Цена | Скорость уведомлений | Кастомизация | Лимиты |
|---|---|---|---|---|---|
| Formspree | Низкая | Бесплатно до 50/мес | Сразу на email | Полная | 50/мес бесплатно |
| Getform | Низкая | Бесплатно до 50/мес | Сразу на email | Полная | 50/мес бесплатно |
| mailto | Очень низкая | Бесплатно | Зависит от клиента | Полная | Нет |
| Telegram | Средняя | Бесплатно | Мгновенно | Полная | Нет |
| Yandex Forms | Низкая | Бесплатно | На email с задержкой | Ограниченная | Нет |
Валидация формы на стороне клиента
Базовая HTML5-валидация работает без JavaScript — нужно использовать правильные атрибуты:
required— поле обязательно для заполнения;type="email"— проверяет формат email;type="tel"— поле для телефона (без строгой валидации);type="url"— проверяет формат URL;pattern="..."— регулярное выражение для своих правил;minlength,maxlength— ограничения длины;min,max— для числовых полей.
Пример валидации российского телефона:
<input type="tel" name="phone"
pattern="\+?[0-9\s\-\(\)]{10,18}"
placeholder="+7 (999) 123-45-67"
required>
Защита от спама
Без защиты форма быстро начнёт получать сообщения от ботов. Способы защиты:
Honeypot
Скрытое поле, которое люди не заполнят, а боты заполнят. Простейший метод:
<input type="text" name="website" style="display:none" tabindex="-1">
В обработчике — если это поле заполнено, отбрасываем форму.
reCAPTCHA
Google reCAPTCHA v3 — работает в фоне, не требует от пользователя кликать на «Я не робот». Бесплатно. Требует регистрации сайта на recaptcha.google.com.
Smart Captcha от Яндекса
Российский аналог reCAPTCHA. Лучше работает в РФ, бесплатно.
Время заполнения
Если форма заполнена меньше чем за 3 секунды, скорее всего это бот. Используйте JS для замера времени.
Дизайн формы и UX
Несколько правил, повышающих конверсию.
- Минимум полей. Каждое лишнее поле снижает конверсию. Идеал — имя + телефон или имя + email.
- Понятные подписи (label). Не только placeholder — он исчезает при вводе.
- Чёткий CTA. «Получить расчёт» лучше «Отправить».
- Подтверждение отправки. Сообщение «Спасибо, мы свяжемся с вами в течение часа».
- Адаптивность. Большие поля и кнопки на мобильных — пальцем должно быть удобно.
- Автофокус на первое поле. Атрибут
autofocus. - Маска для телефона. Подсказывает формат: +7 (___) ___-__-__.
FAQ
Для большинства небольших лендингов — Telegram-бот: мгновенно, бесплатно, без лимитов. Для солидного бизнеса с почтой на домене — Formspree или Getform: заявки идут на корпоративный email. Для команд, которые любят таблицы — Yandex Forms.
Варианты: перейти на платный тариф ($10/мес), переключиться на другой сервис (Web3Forms бесплатен без лимита), дублировать форму в Telegram-бот, в крайнем случае поднять свой простой PHP-обработчик.
Риск минимальный — максимум, кто-то будет спамить ваш канал. Можно ограничить бота правами «только отправка», убрать его из других чатов. Если важна полная безопасность — используйте Formspree или поднимите минимальный обработчик на хостинге.
Да. Способ 1: в Formspree настраивается интеграция с Telegram (на платном тарифе). Способ 2: JS-код шлёт запросы и в Formspree, и в Telegram параллельно. Способ 3: используйте Zapier/Make для дублирования.
В Formspree/Getform есть настройка «redirect after submit» — указываете URL вашей страницы thank-you.html. Для Telegram — в JS после успешной отправки делаете window.location.href = '/thank-you.html'.
Formspree поддерживает загрузку файлов на платном тарифе. Getform — бесплатно до 100 МБ. Через Telegram — сложнее, нужен метод sendDocument с предварительной загрузкой файла на свой временный хостинг. Проще всего — Yandex Disk / Google Drive с открытой ссылкой на загрузку.
Сколько угодно. Каждая может вести в своё место — одна на info@, другая в Telegram, третья в Yandex Forms. На бесплатных тарифах лимит на каждую отдельную форму, а не на сайт целиком.
Чек-лист рабочей формы обратной связи
- ☐ Выбран сервис-обработчик (Formspree/Telegram/др.)
- ☐ Зарегистрирован аккаунт и получен endpoint/токен
- ☐ Форма имеет минимум обязательных полей (имя + контакт)
- ☐ Поля имеют корректные type (email, tel)
- ☐ Включена HTML5-валидация (required, pattern)
- ☐ Подключена защита от спама (honeypot, captcha)
- ☐ Настроен редирект на страницу благодарности
- ☐ Кнопка отправки имеет конверсионный текст
- ☐ Форма адаптивна (проверено на мобильном)
- ☐ Сделан тестовый отправ — заявка реально пришла
- ☐ Проверена работа в разных браузерах
- ☐ Уведомления о заявках включены
Заключение
Сделать рабочую форму обратной связи на чистом HTML — задача на час даже для новичка. Выбирайте инструмент под задачу: Telegram для мгновенных уведомлений, Formspree для корпоративной строгости, Yandex Forms для команд. И не забывайте про защиту от спама — без неё форма забьётся ботами за неделю.
Если ещё подбираете готовый HTML-шаблон с формой — посмотрите подборку шаблонов на Zettabyte: большинство уже идут с настроенной разметкой формы, остаётся только подключить обработчик. А чтобы залить готовый сайт куда-то — посмотрите рейтинг хостингов с фильтром по нужным функциям.