Вкажіть у action HTML-форми наше посилання — і збирайте заявки. Без сервера, без бекенд-коду.
Оплачуйте лише за використання — без підписок і щомісячних платежів.
Працює з будь-яким статичним сайтом або CMS.
<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>
Ніякого сервера або складного коду не потрібно.
Більшість сервісів для форм виставляють рахунок щомісяця — незалежно від того, користувалися ви формами чи ні. Цей — ні.
Немає щомісячної плати за те, щоб ваші форми просто працювали. Лендінг, на який у березні не було трафіку, не виставить вам рахунок за березень.
Поповнюєте баланс заявок і форм, і він витрачається в міру їх надходження. Нічого не треба прогнозувати, немає тарифу, з якого можна вирости, і немає пропозиції апгрейду в невдалий момент.
Змініть атрибут action вашої форми — і ви вже збираєте дані. Не треба встановлювати SDK, робити збірку чи деплой.
Немає ні договору, ні дати поновлення. Перестаєте користуватися — просто перестаєте витрачати, а вже зібрані заявки залишаються на місці.
Ендпоінт — це звичайний HTTP. Нічому з наведеного нижче не потрібен ні сервер, ні SDK, ні збірка.
<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-збірка поводяться ідентично.
Без прихованих платежів. Оплачуйте лише за використання.
Ні. Вкажіть в атрибуті action вашої форми посилання на ваш ендпоінт FormPost — і відправляйте. Ми збережемо заявку й покажемо її у вашій панелі. Нічого не треба розгортати й підтримувати.
Так. Ендпоінт — це звичайний HTTP, тож йому байдуже, що згенерувало сторінку. Використайте звичайну HTML-форму або надішліть запит через fetch з будь-якого фреймворку, генератора статичних сайтів чи CMS.
Так, і крос-доменні запити дозволені, тож це працює з будь-якого домену. Виклик через fetch або XHR отримує JSON у відповідь, зокрема й для помилок, тож ви можете показати власні стани успіху та збою. Звичайна відправка форми браузером натомість веде на сторінку підтвердження з посиланням назад на ваш сайт. Якщо хочете вказати формат явно — надішліть Accept: application/json.
Ви платите 100 UAH за 1 000 заявок і 200 UAH за 10 форм, мінімальна покупка — 50 UAH. Ви поповнюєте баланс, і він витрачається в міру надходження заявок.
Тарифних планів і щомісячної плати немає. Ви купуєте заявки та форми тоді, коли вони потрібні, а тихий місяць не коштує нічого.
У вашу панель, де можна переглянути й прочитати кожну заявку. Також кожну з них можна переслати на власний ендпоінт через вебхук — за потреби з авторизацією через bearer-токен.
Запити, чий user agent ідентифікує їх як бота, кравлера чи павука, а також запити взагалі без user agent, відхиляються ще до збереження заявки. Надіслані значення очищуються перед записом.
Створіть кінцевий пункт і почніть збирати дані вже сьогодні.
Спробувати безкоштовно