Приймайте заявки з HTML-форми без бекенду
Вставте одне посилання в action — і заявки з вашого сайту вже в панелі та на вашому вебхуку. Без сервера, без SDK і без щомісячної підписки.
- Запуск в один рядок коду
- Оплата лише за заявки
- 100 заявок безкоштовно
<form action="https://formpost.org/f/3QQPFnq8" method="POST"> <input type="email" name="email" /> <textarea name="message"></textarea> <button>Надіслати</button> </form>
- HTML
- React
- Vue
- Next.js
- Astro
- Hugo
- Jekyll
- WordPress
Три кроки від верстки до першої заявки
Нічого не треба розгортати, збирати чи підтримувати. Якщо вмієте вставити посилання — впораєтесь.
-
01
Створіть форму в панелі
Зареєструйтесь і отримайте унікальне посилання-ендпоінт для своєї форми.
formpost.org/f/3QQPFnq8 -
02
Вставте посилання в action
Звичайна HTML-форма або запит через fetch — ендпоінту байдуже, чим згенерована сторінка.
<form action="…" method="POST"> -
03
Отримуйте заявки
Кожна заявка зберігається у вашій панелі й за бажанням пересилається на ваш вебхук.
+1 нова заявка
Платіть за заявки, а не за календар
Більшість сервісів для форм виставляють рахунок щомісяця — користувалися ви формами чи ні. FormPost — ні.
100 заявок безкоштовно
Зареєструйтесь і перевірте сервіс на справжній формі зі свого сайту. Платити почнете, лише коли безкоштовні заявки закінчаться.
Запуск в один рядок
Змініть action — і ви вже збираєте дані. Без SDK, збірки та деплою.
Купуєте те, що використовуєте
Поповнили баланс — він витрачається в міру надходження заявок. Жодних тарифів, з яких можна вирости.
Вебхуки на ваш сервіс
Пересилайте кожну заявку на власний ендпоінт — за потреби з bearer-токеном.
Фільтр ботів
Запити від ботів і кравлерів відхиляються ще до збереження — ви не платите за сміття.
Додайте до стека, яким уже користуєтесь
Ендпоінт — це звичайний HTTP. Крос-доменні запити дозволені, а fetch отримує JSON у відповідь — тож стани успіху й помилки ви малюєте самі.
- CORS увімкнено — працює з будь-якого домену
- JSON-відповіді, зокрема для помилок
- Сторінка підтвердження для звичайних форм
<form action="https://formpost.org/f/3QQPFnq8qVtVnfW" method="POST">
<label>Your Email</label>
<input type="email" name="email" required />
<label>Message</label>
<textarea name="message" required></textarea>
<button type="submit">Send</button>
</form>
Звичайна відправка форми. Браузер надсилає поля й отримує сторінку підтвердження з посиланням назад на ваш сайт.
const form = document.querySelector('#contact')
form.addEventListener('submit', async (event) => {
event.preventDefault()
const response = await fetch('https://formpost.org/f/3QQPFnq8qVtVnfW', {
method: 'POST',
body: new FormData(form),
headers: { 'Accept': 'application/json' },
})
const result = await response.json()
if (response.ok) {
form.reset()
showMessage(result.message)
} else {
// Errors come back as JSON too, e.g. submission_limit_reached
showError(result.text)
}
})
Відправка без переходу зі сторінки. І успіх, і помилка повертаються у JSON, тож ви малюєте власні стани.
export default function ContactForm() {
const [status, setStatus] = useState(null)
async function handleSubmit(event) {
event.preventDefault()
const response = await fetch('https://formpost.org/f/3QQPFnq8qVtVnfW', {
method: 'POST',
body: new FormData(event.target),
headers: { 'Accept': 'application/json' },
})
const result = await response.json()
setStatus(response.ok ? { sent: true } : { error: result.text })
}
if (status?.sent) return <p>Thanks!</p>
return (
<form onSubmit={handleSubmit}>
{status?.error && <p>{status.error}</p>}
<input name="email" type="email" required />
<textarea name="message" required />
<button>Send</button>
</form>
)
}
Той самий виклик із React-компонента. У Next.js працює без змін.
<script setup>
import { ref } from 'vue'
const sent = ref(false)
const error = ref(null)
async function submit(event) {
const response = await fetch('https://formpost.org/f/3QQPFnq8qVtVnfW', {
method: 'POST',
body: new FormData(event.target),
headers: { 'Accept': 'application/json' },
})
const result = await response.json()
if (response.ok) sent.value = true
else error.value = result.text
}
</script>
<template>
<p v-if="sent">Thanks!</p>
<form v-else @submit.prevent="submit">
<p v-if="error">{{ error }}</p>
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<button>Send</button>
</form>
</template>
Та сама ідея у Vue. Nuxt і будь-яка інша SFC-збірка поводяться ідентично.
Жодних тарифних планів. Лише дві ціни
Поповнюєте баланс — він витрачається в міру надходження заявок. Без договору, дати поновлення та прихованих платежів.
- Перші 100 заявок
- 0 ₴
- 1 000 заявок
- 100 ₴
- 10 форм
- 200 ₴
- Мінімальне поповнення
- 50 ₴
- Абонплата за місяць
- 0 ₴
Порахуйте свої витрати
Невикористаний баланс не згорає наприкінці місяця.
Усі заявки — в одному місці
Переглядайте кожну заявку, стежте за динамікою, керуйте формами, вебхуками та балансом.
Часті запитання
Чи потрібен мені сервер або бекенд-код?
Ні. Вкажіть в атрибуті action вашої форми посилання на ваш ендпоінт FormPost — і відправляйте. Ми збережемо заявку й покажемо її у вашій панелі. Нічого не треба розгортати й підтримувати.
Чи працює це з React, Vue, Next.js або генератором статичних сайтів?
Так. Ендпоінт — це звичайний HTTP, тож йому байдуже, що згенерувало сторінку. Використайте звичайну HTML-форму або надішліть запит через fetch з будь-якого фреймворку, генератора статичних сайтів чи CMS.
Чи можна відправляти форму через fetch або AJAX?
Так, і крос-доменні запити дозволені, тож це працює з будь-якого домену. Виклик через fetch або XHR отримує JSON у відповідь, зокрема й для помилок. Звичайна відправка форми браузером веде на сторінку підтвердження з посиланням назад на ваш сайт.
Як розраховується ціна?
Ви платите 100 UAH за 1 000 заявок і 200 UAH за 10 форм, мінімальна покупка — 50 UAH. Ви поповнюєте баланс, і він витрачається в міру надходження заявок.
Чи є тарифні плани або щомісячна плата?
Ні. Ви купуєте заявки та форми тоді, коли вони потрібні, а перші 100 заявок — безкоштовні.
Куди потрапляють зібрані дані?
У вашу панель, де можна переглянути й прочитати кожну заявку. Також кожну з них можна переслати на власний ендпоінт через вебхук — за потреби з авторизацією через bearer-токен.
Що заважає ботам заповнювати мою форму?
Запити, чий user agent ідентифікує їх як бота, кравлера чи павука, а також запити без user agent, відхиляються ще до збереження заявки. Надіслані значення очищуються перед записом.
Ваша форма може приймати заявки вже сьогодні
Створіть ендпоінт, вставте посилання в action — і перша заявка вже у вашій панелі.
Спробувати безкоштовно 100 заявок безкоштовно · Без підписки · Без договору