Блог
Альтернатива Netlify Forms: бэкенд форм, который работает где угодно
· 4 мин чтения
Netlify Forms - действительно удобная функция, если оставаться на Netlify. Она встроена в пайплайн сборки платформы, поэтому форма «просто работает» без какого-либо внешнего сервиса. Загвоздка кроется в первой части этой фразы: она работает только потому, что всю работу выполняет шаг сборки Netlify, а значит, форма незаметно оказывается привязана к хостингу. Перенесите сайт - и форма перестанет работать вместе с ним.
Что на самом деле требует Netlify Forms
Netlify Forms - не универсальная HTML-функция, она определяется на этапе сборки. Вы добавляете data-netlify="true" к тегу <form>, шаг сборки Netlify сканирует развёрнутый HTML в поисках этого атрибута, регистрирует поля формы, и только после этого появляется endpoint, способный принимать отправки. Отсюда следуют три вещи:
- Сайт должен быть размещён и собран на Netlify - обнаружение происходит в их пайплайне сборки, а не в браузере.
- Фреймворкам, которые рендерят формы динамически на клиенте (вместо того чтобы выдавать статическую разметку с уже присутствующим в HTML атрибутом), часто требуются дополнительные обходные пути, потому что сканеру на этапе сборки попросту нечего найти.
- Существование формы зависит от успешной сборки на Netlify, а не от самой разметки.
Привязка, которую это создаёт
Ничто из этого нельзя назвать изъяном как таковым - это разумное решение для платформы, которая хочет предложить встроенную функцию. Но это означает, что ваша контактная форма на самом деле не часть вашего сайта - она часть вашего договора о хостинге. Переезжайте на Vercel, Cloudflare Pages, обычный VPS или куда-то ещё - и форму придётся пересобирать под другой механизм. Оцениваете второй хостинг по стоимости, производительности или edge-функциям - и форма становится пунктом, который нужно заново решить, прежде чем вы сможете мигрировать. Странно, что контактная форма обладает таким рычагом влияния на инфраструктурное решение.
Хостинг-независимая альтернатива
Хостинговый бэкенд форм устраняет эту привязку, потому что ему всё равно, откуда отдаётся HTML. Здесь нет ни сканирования на этапе сборки, ни интеграции с платформой, от которой нужно зависеть - просто обычная форма, чей action указывает на endpoint:
<form action="https://formhook.app/f/fh_your-key" method="POST">
<label>Email <input type="email" name="email" required></label>
<label>Message <textarea name="message" required></textarea></label>
<button type="submit">Send</button>
</form>Эта разметка работает одинаково на Netlify, Vercel, Cloudflare Pages, GitHub Pages или самостоятельно настроенном VPS - браузер отправляет POST-запрос напрямую на endpoint, так что не имеет значения ни хостинг, ни инструмент сборки, ни фреймворк. Отправки попадают в панель управления, вызывают push-уведомление и пересылаются на webhook (Formhook автоматически распознаёт URL-адреса Discord, Slack и Microsoft Teams и форматирует полезную нагрузку под каждый из них; во всех остальных случаях отправляется обычный JSON POST-запрос с подписью HMAC). Смените хостинг в следующем году - форма этого даже не заметит: URL в action - единственное, что её с чем-либо связывает, и он никак не привязан к хостингу.
Спам обрабатывается одинаково независимо от хостинга
Поскольку endpoint ни в чём не полагается на хостинг, ему приходится справляться со спамом самостоятельно, а не заимствовать фильтрацию у платформы: honeypot-поле ловит ботов, заполняющих каждое поле ввода, ограничение частоты запросов сдерживает злоупотребляющих отправителей, а опциональная проверка Cloudflare Turnstile (заботится о приватности, это не Google reCAPTCHA) может быть добавлена для каждой формы там, где это нужно. Ничто из этого не зависит от того, какая платформа отдаёт страницу.
Переход занимает один атрибут
Если вы уже на Netlify и вам там хорошо, Netlify Forms вполне подходит - это законное удобство для сайтов, которые никогда не планируют уходить. Но если вы переезжаете на другой хостинг, сравниваете платформы, или просто не хотите, чтобы контактная форма стала причиной, по которой вы не можете этого сделать, хостинг-независимый бэкенд полностью снимает это ограничение. Бесплатный тариф Formhook обрабатывает 250 отправок в месяц без привязки карты, подключение формы занимает минуту, а вся история отправок - включая загруженные файлы - экспортируется в ZIP в любой момент. Полную настройку смотрите в документации, или начните бесплатно и направьте свою существующую форму на него уже сегодня.
Рабочая форма в одну строку
Размещение в ЕС, отправки хранятся вечно, push-уведомления на любом тарифе.
Начать бесплатноБез банковской карты · читайте документацию
Читать дальше
- Миграция с Formspree на Formhook: руководство на десять минутСмена бэкенда для форм - правка одной строки. Миграция с Formspree на Formhook за десять минут: экспорт данных, эндпоинт, защита от спама, тестирование.
- Что такое бэкенд форм? (И когда он вам нужен)Бэкенд форм принимает, хранит и пересылает отправки форм вашего сайта, чтобы вам не пришлось запускать сервер. Вот как это работает и когда он вам нужен.
- Как добавить контактную форму на Cloudflare PagesУ Cloudflare Pages нет встроенного сервиса обработки форм, как у Netlify. Рассказываем почему - и как быстрее всего получить работающую контактную форму.