Формы
Как принимать заявки с HTML-формы без собственного backend
Разметка формы, которую Deploya обнаруживает в статическом проекте, и обработка успешной или ошибочной отправки.
Статический сайт не исполняет серверный обработчик `send.php` или маршрут `/api/contact`. Формы Deploya принимают POST-запрос на стороне платформы, сохраняют заявку в проекте и возвращают браузеру результат.
## Минимальная разметка
Форма должна иметь уникальное имя, метод POST и атрибут `data-deploya="true"`. У каждого отправляемого поля нужен `name`.
```html
<form name="contact" method="POST" data-deploya="true">
<label>
Имя
<input name="name" autocomplete="name" required>
</label>
<label>
Телефон
<input name="phone" type="tel" autocomplete="tel" required>
</label>
<button type="submit">Отправить</button>
</form>
```
После публикации Deploya сканирует HTML и показывает найденную форму в разделе проекта. Если форма не найдена, проверяются настоящий тег `form`, атрибут `name` и опубликованная версия. Разметка, которая создаётся JavaScript только после загрузки, может не попасть в статический анализ.
## Отправка без перезагрузки
Обычная HTML-форма перезагружает страницу. Для контролируемого сообщения об успехе запрос отправляется через JavaScript:
```js
const form = document.querySelector('form[data-deploya="true"]');
form.addEventListener('submit', async (event) => {
event.preventDefault();
const response = await fetch(form.action || location.href, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams(new FormData(form))
});
if (!response.ok) throw new Error('Заявка не отправлена');
form.reset();
});
```
Кнопку стоит блокировать на время запроса, иначе двойной клик создаст две заявки. Ошибку нужно показывать рядом с формой, сохраняя введённые данные.
> Место для скриншота: раздел «Формы» с выбранным проектом, найденной формой contact и тестовой заявкой.
## Персональные данные
Поля имени, телефона и email относятся к данным посетителя. На странице указывается цель сбора, ссылка на политику обработки и согласие, когда оно требуется для выбранного сценария. Не нужно собирать паспортные данные или медицинскую информацию через универсальную форму без отдельной правовой и технической модели.
## Защита от спама
После подключения откройте **Формы → Антиспам**. Базовые неагрессивные проверки уже включены: Deploya проверяет подписанный токен, скрытую ловушку, соответствие полей опубликованной форме, повторы и частоту запросов. Строгие правила для кириллицы, ссылок, браузерных признаков и собственных стоп-слов включаются отдельно и сохраняются автоматически.
Отфильтрованные сообщения остаются в папке «Спам» 30 дней и не отправляются в интеграции. Ошибочно заблокированную заявку можно вернуть кнопкой «Не спам». Подробнее о выборе правил — в статье [«Как защитить форму от спама без CAPTCHA»](https://blog.deploya.ru/antispam-dlya-form-bez-captcha).
Точная схема подключения и ограничения поддерживаются в [документации форм](https://docs.deploya.ru/forms). После изменения разметки проект публикуется заново, затем в панели запускается проверка подключения.