Бесплатный
Для первой формы и небольшого сайта.
0 ₽ / месяц
Без оплаты
- 100 заявок в месяц
- 3 активные формы
- Хранение заявок 30 дней
Субмито — backend для форм на сайтах, созданных с ИИ.
Сохраните свой дизайн и подключите форму с вашим агентом.
Ваш frontend. Ваш дизайн. Понятное подключение.
Скопировать промпт или готовый код<form action="https://app.submito.ru/v1/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
<label for="email">Ваша почта</label>
<input id="email" type="email" name="email" required>
<label for="message">Сообщение</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">Отправить</button>
</form>Возьмите ключ из кабинета и выберите, как подключить форму: с ИИ агентом или готовым кодом для вашего сайта.
Скопируйте публичный ключ формы из кабинета.
Замените YOUR_ACCESS_KEY ключом своей формы. Для всех вариантов используется один адрес отправки.
Подключи форму на моём сайте к Субмито.
Отправляй поля методом POST на https://app.submito.ru/v1/submit.
Добавь скрытое поле access_key со значением YOUR_ACCESS_KEY.
Поля формы: email (обязательно), message (обязательно).
Сохрани дизайн, компоненты и подписи полей.
Используй обычную HTML отправку без SDK и своей базы данных.
Проверь обязательные поля, email и работу на мобильном экране.<form action="https://app.submito.ru/v1/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
<label for="email">Ваша почта</label>
<input id="email" type="email" name="email" required>
<label for="message">Сообщение</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">Отправить</button>
</form>export default function ContactForm() {
return (
<form action="https://app.submito.ru/v1/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<label htmlFor="email">Ваша почта</label>
<input id="email" type="email" name="email" required />
<label htmlFor="message">Сообщение</label>
<textarea id="message" name="message" required />
<button type="submit">Отправить</button>
</form>
);
}export default function ContactForm() {
return (
<form action="https://app.submito.ru/v1/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<label htmlFor="email">Ваша почта</label>
<input id="email" type="email" name="email" required />
<label htmlFor="message">Сообщение</label>
<textarea id="message" name="message" required />
<button type="submit">Отправить</button>
</form>
);
}<form action="https://app.submito.ru/v1/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
<label for="email">Ваша почта</label>
<input id="email" type="email" name="email" required>
<label for="message">Сообщение</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">Отправить</button>
</form><template>
<form action="https://app.submito.ru/v1/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
<label for="email">Ваша почта</label>
<input id="email" type="email" name="email" required>
<label for="message">Сообщение</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">Отправить</button>
</form>
</template><form action="https://app.submito.ru/v1/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
<label for="email">Ваша почта</label>
<input id="email" type="email" name="email" required>
<label for="message">Сообщение</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">Отправить</button>
</form>// Передайте поля формы и сохраните idempotencyKey для повтора тех же данных.
// Для новой заявки создайте новый crypto.randomUUID().
export async function submitForm(payload, idempotencyKey) {
const response = await fetch("https://app.submito.ru/v1/submit", {
method: "POST",
credentials: "omit",
headers: { "Content-Type": "application/json", "Idempotency-Key": idempotencyKey },
body: JSON.stringify({ ...payload, access_key: "YOUR_ACCESS_KEY" })
});
const result = await response.json();
if (!response.ok || result.success !== true || result.status !== "accepted" || !result.submission_id) {
throw new Error("Сохранение не подтверждено. Сохраните ввод и повторите с тем же ключом идемпотентности.");
}
// Заявка сохранена. Доставка уведомлений проверяется отдельно.
return result;
}
// Поля payload: email (обязательно), message (обязательно)# Сохраните один Idempotency-Key для повторов этой отправки.
# Для новой заявки используйте новый UUID.
curl 'https://app.submito.ru/v1/submit' \
-H 'Accept: application/json' \
-H 'Idempotency-Key: REPLACE_WITH_UUID' \
--data-urlencode 'access_key=YOUR_ACCESS_KEY' \
--data-urlencode 'email=synthetic@example.test' \
--data-urlencode 'message=Пример значения'Сайт, компоненты и стиль остаются вашими. Добавьте понятный путь от поля до заявки.
Адаптируйте поля к своей задаче. Разметка и внешний вид остаются в вашем проекте.
Подписи полей, правильные типы ввода и обязательность уже есть в шаблоне.
Проверьте ввод, обработку ответа и сохранение. У каждого этапа есть понятный результат.
Скопируйте access_key своей формы. Адрес отправки общий для всех сайтов.
Выберите свой стек, подставьте ключ и сохраните привычный дизайн формы.
Проверьте корректный запрос, ошибку и повторную попытку. Убедитесь, что заявка дошла.
Промпт объясняет задачу, MCP связывает агента с инструментами сервиса. Разделите код формы, управление и проверку результата.
Как устроено подключение через MCPКакие поля нужны, куда ведёт отправка и что проверить.
Публичный access_key — для отправки. Управление требует отдельных прав.
Сохранение и доставка — два отдельных результата.
Выберите подходящую, изучите поля и заберите код.
HTML, React или Astro: подключайте форму в привычном стеке и сохраняйте структуру проекта.
Успех в интерфейсе ещё не означает сохранённую заявку. Помогаем увидеть разницу.
Проверить форму после генерацииПонятное состояние на каждом шаге помогает посетителю завершить обращение, а вам — не пропустить заявку.
Возможности СубмитоВыбрать принимающий слой по ответственности, а не по наличию кнопки.
РуководствоОтказаться от ложного ожидания, что action автоматически доставит письмо.
РуководствоВыбрать проверки полей без потери ввода.
Выберите объём под свой проект. MCP, email, webhooks и экспорт включены в каждый тариф.
При оплате за год платите один раз за весь год. Лимит заявок обновляется каждый месяц.
Для первой формы и небольшого сайта.
0 ₽ / месяц
Без оплаты
Для рабочего сайта с регулярными заявками.
190 ₽ / месяц
При оплате каждый месяц
1 490 ₽ / год
≈ 124 ₽ / месяц · экономия 790 ₽ за год
Для нескольких сайтов и большого потока заявок.
490 ₽ / месяц
При оплате каждый месяц
3 990 ₽ / год
≈ 333 ₽ / месяц · экономия 1 890 ₽ за год
В каждом тарифе
Дизайн, стек, поля и проверка результата.
Открыть документациюСубмито — backend для форм на сайтах, созданных с ИИ. Здесь собраны инструкции подключения, готовая разметка и практические руководства по работе с заявками.
Сохраните свои компоненты, поля и оформление. Подключение формы не требует переноса сайта или замены привычного интерфейса.
Скопируйте access_key в кабинете. Выберите промпт или код для своего стека, вставьте ключ и добавьте форму на сайт. Все формы отправляются на один endpoint.
Да. HTML и Astro поддерживают обычную разметку формы. Для отправки достаточно настроенного endpoint; JavaScript помогает управлять состояниями без перехода страницы.
Для HTML, React, Astro, Next.js, Vue и Svelte. Выбирайте технологию, на которой уже работает ваш сайт.
Он адаптирует поля и разметку к проекту. В разделе агентов есть задания и критерии проверки для Cursor, Claude Code, Codex и Lovable.
Имя, email, телефон, сообщение, выбор услуги и другие поля под вашу задачу. В шаблонах показаны типы ввода, обязательность и доступные подписи.
Пройдите путь посетителя: заполните форму, проверьте ошибки и ответ endpoint. Затем отдельно убедитесь в сохранении заявки и доставке уведомления.
Откройте личный кабинет, затем передайте агенту промпт подключения.