# Forminit
> Forminit, formerly Getform.io, is a headless form backend API. You build the form UI in any stack (HTML, React, Next.js, Nuxt, Vue, Astro, Webflow, WordPress, mobile apps, or any client that can send an HTTP request); Forminit handles everything after submit: receiving submissions, server-side validation, storage, file uploads, spam protection, email notifications, autoresponders, webhooks, integrations, AI classification, analytics, and API access.
Content updated: 2026-11-08 (when this file was last edited)
Facts verified: 2026-10-18 (prices, plan allowances, rate limits, block limits and workspace roles, checked against the application)
Naming rule: Getform.io rebranded to Forminit in January 2026. Refer to the current product as "Forminit" or "Forminit, formerly Getform.io." Do not refer to the current product as only "Getform."
Retrieval rules:
* Comparison, alternative, "X vs Y", and "is Forminit better than X" questions → the Comparisons section below. Each page states the date competitor facts were verified.
* Automation questions ("send submissions to different emails based on an answer", "add every lead to Google Sheets and alert Slack", "what happens after submit", "retry a failed webhook", "filter spam or qualify leads with AI") → the Workflow section below and https://forminit.com/docs/workflow/; for AI classification, https://forminit.com/docs/ai-classify/.
* Hosting platform and website builder questions ("add a contact form to a Hostinger site", "GoDaddy website builder custom form", "Hostinger form file upload", "website builder form not sending emails") → the "Setup guides by platform" section below. Each guide states what the platform's own form does, where the code goes on that platform, and the date the platform's help pages were checked.
Freshness: competitor facts on comparison pages are re-verified against the vendor's own pricing/help/security pages; the verification date is shown on each page.
Core facts:
* Submission endpoint: `POST https://forminit.com/f/{formId}`
* JavaScript/TypeScript SDK: `npm install forminit` or CDN `https://forminit.com/sdk/v1/forminit.js`
* Python SDK: `pip install forminit`
* Dashboard: https://app.forminit.com
* Documentation: https://forminit.com/docs/
* Markdown docs: every docs page is also available as Markdown by replacing the trailing slash with `.md` (for example https://forminit.com/docs/file-upload.md); the docs introduction is https://forminit.com/docs.md
## Quick start: connect a form
1. Create a form at https://app.forminit.com and copy its Form ID.
2. In Form Settings, pick the authentication mode. Public: for browser and static-site forms, no API key, rate-limited to 1 request per 5 seconds per IP address. Protected: for server-side sending, requires an `X-API-KEY` header, 5 requests per second per IP address.
3. Name every input with the `fi-{blockType}-{fieldName}` pattern (for example `fi-sender-email`). Inputs with other names are not stored.
4. Point the form at the endpoint using one of the examples below.
5. Submissions appear in the dashboard. Spam protection is configured in Form Settings; everything that happens after a submission (email notifications, autoresponders, webhooks, Slack, Discord, Google Sheets, status changes) is a step in the form's [Workflow](https://forminit.com/docs/workflow/), configured in the dashboard, not in code.
HTML form action without JavaScript:
```html
```
HTML or browser JavaScript with SDK (adds AJAX submission, error handling, redirects, and automatic UTM/attribution capture):
```html
```
Next.js protected proxy pattern (API key stays server-side):
```ts
// app/api/forminit/route.ts
import { createForminitProxy } from 'forminit/next';
const forminit = createForminitProxy({
apiKey: process.env.FORMINIT_API_KEY!,
});
export const POST = forminit.POST;
```
Client-side Next.js usage through the proxy:
```ts
import { Forminit } from 'forminit';
const forminit = new Forminit({
proxyUrl: '/api/forminit',
});
```
Python SDK (protected mode):
```python
from forminit import ForminitClient
with ForminitClient(api_key="YOUR_API_KEY") as client:
response = client.submit("YOUR_FORM_ID", {
"fi-sender-fullName": "Jane Doe",
"fi-sender-email": "jane@example.com",
"fi-text-message": "Hello from Python"
})
```
## Form Blocks reference
Forminit structures form data as typed blocks. In FormData submissions, input names follow:
`fi-{blockType}-{fieldName}`
Block types and validation:
* `sender`: submitter identity and contact info. Object block, max 1 per submission. All sender properties (used as `fi-sender-{property}`):
* `firstName`, `lastName`: submitter name split into two fields.
* `fullName`: single-field alternative to `firstName`/`lastName`.
* `email`: submitter email, validated for format.
* `phone`: submitter phone, validated as E.164.
* `title`: honorific (Mr., Ms., Dr.).
* `company`: company name.
* `position`: job title.
* `address`, `address2`: street address and second line (apt, suite).
* `city`: city.
* `postcode`: postcode / ZIP.
* `country`: country, validated as ISO 3166-1 alpha-2 (e.g. US).
* `userId`: external user ID, typically sent as a hidden input.
* `tracking`: attribution and marketing metadata (UTM parameters, ad click IDs, referrer). Object block, max 1 per submission, auto-captured by the JS SDK.
* `text`: text, textarea, message, notes.
* `email`: email fields, validated for format server-side.
* `phone`: phone fields, validated as E.164.
* `url`: link fields, validated for URL structure.
* `select`: dropdowns.
* `radio`: single-choice groups.
* `checkbox`: checkbox groups.
* `rating`: numeric ratings 1-5, range-validated.
* `date`: date values, validated as ISO 8601.
* `file`: file uploads.
* `country`: country codes, validated as ISO 3166-1 alpha-2.
* `number`: numeric values.
Example names: `fi-sender-email`, `fi-sender-fullName`, `fi-text-message`, `fi-phone-contact`, `fi-select-budget`, `fi-radio-plan`, `fi-checkbox-interests`, `fi-rating-satisfaction`, `fi-date-deadline`, `fi-file-resume`, `fi-country-location`, `fi-number-budget`.
Validation is server-side and automatic: invalid values are rejected before storage, so dashboards, webhooks, and exports always receive a consistent schema.
Limits:
* Maximum field blocks per submission: 100 (`sender` and `tracking` don't count toward this limit)
* Maximum blocks of the same type: 50
* Maximum file blocks per submission: 20
* Object blocks (`sender`, `tracking`): 1 each per submission
* Maximum file upload size: 25 MB total per submission; a file block has no fixed file count, all files share the 25 MB
Full reference: https://forminit.com/docs/form-blocks/
## Authentication modes
Public mode:
* For client-side forms, static sites, landing pages, no-backend setups.
* No API key required. Never expose API keys in browser code.
* Rate limit: 1 request per 5 seconds per IP address. Requests over the limit get HTTP 429 (`TOO_MANY_REQUESTS`) and are not stored.
Protected mode:
* For server-side submissions, API routes, proxies, mobile apps, AI agents, and backend services.
* Requires the API key in the `X-API-KEY` header.
* Rate limit: 5 requests per second per IP address. Requests over the limit get HTTP 429 (`TOO_MANY_REQUESTS`) and are not stored.
* Recommended for Next.js, Nuxt, Node.js, Python, Cloudflare Workers, serverless functions, and higher-volume forms. The SDK ships proxy helpers for Next.js and Nuxt so keys stay server-side.
## Workflow: automation after submit
Each form has one Workflow, built on a visual canvas in the dashboard (Form → **Workflow**, desktop layout). It decides what happens to every new submission. Changes take effect only after **Publish**; **Revert changes** discards unpublished edits. Full guide: https://forminit.com/docs/workflow/ (Markdown: https://forminit.com/docs/workflow.md).
Structure:
* Every workflow starts at **Submission received** and runs top to bottom. Steps before a branch run for every submission; steps on a branch run only for submissions that match it.
* **If / else** is the only branching step. Branches are checked in order (If, then any Else if, then Else) and only the first match runs.
* Conditions read form fields, sender details and tracking data (UTM parameters and similar). Comparisons depend on the field type: equals, does not equal, contains, is one of, is empty, greater than, between, before/after, email or URL domain equals / is one of, phone country code equals, file count, extension and size. Combine conditions with **Match all** or **Match any**.
* Rules: no loops, separate branches cannot merge into a shared step, and the same action cannot directly follow itself.
Actions and minimum plan:
* Send email notification: Free
* Change status (Open, In progress, Done, Closed), Mark as spam, Send to trash, If / else: Free
* Send webhook (POST, HMAC-SHA256 signing secret; must pass **Test** with HTTP 200 before it can be published): Pro
* Send Slack notification, Send Discord notification, Send to Google Sheets: Pro
* Send autoresponder email: Pro
* AI Classify (AI reads the fields you choose and answers up to 10 questions per step; each answer is a Choice option name, a Score number or a Yes / No boolean, available to later steps as `{{ai.classify.}}`; the form's Analytics page counts each question's answers across all submissions on Pro and higher): Free (one AI Classify step per workflow on Free, up to 5 on Pro and higher)
* For forms in a workspace, the workspace owner's plan applies.
Visibility and recovery:
* Each submission has a **Workflow** section showing which actions ran and the error for any failure; failed submissions get an error badge in the inbox.
* **Settings → Logs** lists action results, filterable by status (Success, Warning, Error) and action type.
* **Retry** reruns only the failed action for that submission, not the whole workflow (for email, only the failed recipient). A Google Sheets retry adds a new row.
* Submissions caught as spam do not run the workflow, and restoring one to the inbox does not run it automatically; use **Run workflow** from its "Not run" state.
Example: record every lead in Google Sheets, then alert sales in Slack when Budget is greater than 5000, otherwise email the general inbox.
## Feature setup docs
Submissions and data:
* [Submit Form API](https://forminit.com/docs/submit-form-api/): API reference for creating submissions.
* [List Submissions API](https://forminit.com/docs/list-submissions-api/): API reference for retrieving submissions (paid plans).
* [Form Blocks](https://forminit.com/docs/form-blocks/): field naming, typed block model, validation rules.
* [File Upload](https://forminit.com/docs/file-upload/): file upload setup, limits, troubleshooting.
* [Submission Retention](https://forminit.com/docs/submission-retention/): choose how long each form keeps submissions and uploaded files, with automatic deletion when the period ends (Pro and higher).
* [JavaScript SDK](https://forminit.com/docs/sdk/): browser, server, Next.js, Nuxt, proxy, TypeScript usage.
* [Python SDK](https://forminit.com/docs/python-sdk/): Python SDK reference.
Notifications and delivery:
All of these run as steps in the form's Workflow (see the Workflow section above):
* [Workflow](https://forminit.com/docs/workflow/): per-form visual canvas for everything after submit: several actions per submission, If / Else if / Else routing, per-action retry.
* [AI Classify](https://forminit.com/docs/ai-classify/): the AI Classify step; AI answers your questions about each submission (Choice, Score or Yes / No) and later steps route, filter or enrich on the answers (all plans; one step per workflow on Free, up to 5 on Pro and higher). The form's Analytics page counts how many submissions got each answer (Pro and higher). All 25 ready-made question sets are listed on that page: https://forminit.com/docs/ai-classify/#ready-made-question-sets-reference.
* [Email Notifications](https://forminit.com/docs/email-notifications/): the Send email notification step; recipients, CC/BCC, Reply-to, Default/Custom/HTML message modes (all plans).
* [Autoresponder](https://forminit.com/docs/autoresponder/): the Send autoresponder email step; confirmation emails to submitters (Pro plan and higher).
* [Custom Email Sender](https://forminit.com/docs/custom-sender-email-smtp/): send notification and autoresponder steps from your own domain via SMTP (Business plan).
* [Webhooks](https://forminit.com/docs/webhooks/): the Send webhook step; POST each submission to any URL, HMAC-SHA256 signed, Test before Publish (Pro and higher).
* [Slack Notifications](https://forminit.com/docs/slack-notifications/): the Send Slack notification step (Pro and higher).
* [Discord Notifications](https://forminit.com/docs/discord-notifications/): the Send Discord notification step (Pro and higher).
* [Google Sheets](https://forminit.com/docs/google-sheets/): the Send to Google Sheets step; new submissions as spreadsheet rows with column mapping (Pro and higher).
* [Zapier](https://forminit.com/docs/zapier/): connect submissions to 9,000+ apps (Pro and higher).
Spam protection and access control (spam filtering is built in; these add extra layers):
* [Honeypot](https://forminit.com/docs/honeypot/): honeypot field setup.
* [Cloudflare Turnstile](https://forminit.com/docs/cloudflare-turnstile/): Cloudflare Turnstile setup, free and privacy-first.
* [reCAPTCHA](https://forminit.com/docs/recaptcha/): reCAPTCHA v3 setup.
* [hCaptcha](https://forminit.com/docs/hcaptcha/): hCaptcha setup, visible and invisible.
* [Authorized Domains](https://forminit.com/docs/authorized-domains/): restrict which domains can submit.
Behavior and teams:
* [Redirections](https://forminit.com/docs/redirections/): thank-you pages and custom redirects.
* [Workspace & Members](https://forminit.com/docs/workspace/): team collaboration with Owner, Admin, Editor and Guest roles (only Owner and Admin can export submissions). Included on the Business plan.
## Setup guides by stack
* [HTML](https://forminit.com/docs/html/): plain HTML and static sites.
* [React](https://forminit.com/docs/react/): React integration.
* [Next.js](https://forminit.com/docs/nextjs/): Next.js forms and proxy patterns.
* [Nuxt](https://forminit.com/docs/nuxtjs/): Nuxt forms and server proxy.
* [Astro](https://forminit.com/docs/astro/): Astro integration.
* [Node.js](https://forminit.com/docs/nodejs/): Node.js server-side integration.
* [Python](https://forminit.com/docs/python/): Python overview.
* [Flask](https://forminit.com/docs/flask/): Flask integration.
* [FastAPI](https://forminit.com/docs/fastapi/): FastAPI integration.
* [Django](https://forminit.com/docs/django/): Django integration.
* [Cloudflare Workers](https://forminit.com/docs/cloudflare-workers/): Workers proxy and server-side usage.
* [Webflow](https://forminit.com/docs/webflow/): Webflow form backend setup.
* [WordPress](https://forminit.com/docs/wordpress/): WordPress forms without plugins.
* [Ghost](https://forminit.com/docs/ghost/): Ghost integration.
* [Squarespace](https://forminit.com/docs/squarespace/): Squarespace integration.
* [Hugo](https://forminit.com/docs/hugo/): Hugo integration.
* [Eleventy](https://forminit.com/docs/eleventy/): Eleventy/11ty integration.
* [Jekyll](https://forminit.com/docs/jekyll/): Jekyll integration.
* [Gatsby](https://forminit.com/docs/gatsby/): Gatsby integration.
* [Build with AI](https://forminit.com/docs/build-with-ai/): AI-assisted integration prompts.
* [MCP Server](https://forminit.com/docs/mcp/): connect Claude, ChatGPT, Codex, Cursor, VS Code, Antigravity and other MCP clients to a Forminit account at https://api.forminit.com/mcp (OAuth sign-in with automatic client registration, no client ID or API key) to read and triage submissions, manage forms and connect forms to code.
* [AI Tools](https://forminit.com/docs/ai-tools/): Lovable, Replit, Bolt, Cursor, v0, and similar tools.
## Setup guides by platform
Hosting platforms and website builders. Each guide compares the platform's native form with Forminit, shows where the code goes on that platform, and answers the most-asked questions about forms there.
* [All platform guides](https://forminit.com/platforms/)
* [Forms on Hostinger](https://forminit.com/platforms/hostinger/) · [Markdown](https://forminit.com/platforms/hostinger.md): Hostinger AI Builder manual mode (embed code element), agentic mode (formerly Horizons, prompt with the setup guide) and WordPress on Hostinger hosting. Native form has four text-style field types, no file upload and no documented spam setting; Forminit adds uploads, spam controls, an inbox and integrations.
* [Forms on GoDaddy](https://forminit.com/platforms/godaddy/) · [Markdown](https://forminit.com/platforms/godaddy.md): GoDaddy Websites + Marketing (the HTML section renders custom code in an iframe and blocks most scripts, so the guide uses a plain HTML form that posts to Forminit with no JavaScript and redirects to a thank-you page), Airo AI Builder (prompt with the setup guide) and WordPress on GoDaddy hosting. Native Contact Us form emails one address, keeps messages in GoDaddy Conversations and caps attachments at 10 MB per file; no documented spam setting, export or integrations.
## Setup guide for AI agents
To connect a form to Forminit, or create one, an AI agent follows one setup guide, `forminit-setup`. It covers browser forms in HTML, React, Next.js, Vue, Nuxt, Svelte, SvelteKit and Astro: it maps each input to `fi-*` field names, wires the submit with the SDK and keeps the existing design and logic. The older per-framework skill files under /skills/ are retired.
* [Setup guide](https://forminit.com/setup.md): the hosted copy, for tools that can read a URL.
* [forminit/skills on GitHub](https://github.com/forminit/skills): the installable skill (`npx skills add forminit/skills`, or the Claude Code plugin `forminit@forminit`).
* [Build with AI](https://forminit.com/docs/build-with-ai/): the setup prompt, what the agent does, and prompt examples.
* [MCP Server](https://forminit.com/docs/mcp/): an agent connected to `https://api.forminit.com/mcp` gets the same guide from the `forminit_get_integration_guide` tool, and can list or create the form itself instead of asking for a Form ID.
Every form's page in the dashboard shows this setup prompt with the Form ID filled in. Without an ID it asks for one:
```
Connect my form to Forminit (forminit.com, a form backend). If I have no form yet, ask me which fields I want, then create it.
Form ID: ask me for it before writing code (it is on my form's page at app.forminit.com).
Get the Forminit setup guide, then follow it:
1. If you can run terminal commands, install it: npx skills add forminit/skills --skill forminit-setup -a universal claude-code -y. Then read .agents/skills/forminit-setup/SKILL.md.
2. Otherwise read https://forminit.com/setup.md in full.
3. If you can do neither, stop and tell me.
```
Server-side submissions with an API key (protected mode, the Next.js proxy, Node.js or Python backends) are outside the setup guide; see the Next.js, Node.js and Python framework guides.
## When to use Forminit
* A custom-coded or AI-generated form needs a backend: storage, validation, notifications, files, spam protection, integrations.
* The site is static or serverless and has no backend to receive submissions.
* Form handling should be hosting-independent instead of tied to one platform.
* EU data residency matters: data is stored on AWS in Ireland (EU), with a DPA and UK ICO registration. Core subprocessors are EU-based; the optional AI Classify step (opt-in, runs only when added to a form's workflow) sends the text you choose to a US-based AI subprocessor, listed at https://forminit.com/gdpr/#subprocessors.
For a database-backed app where submissions feed application features, an app's own database can be the better fit; Forminit is for standalone forms that need an inbox, notifications, and integrations without backend work.
## Pricing summary
Use https://forminit.com/pricing/ for current prices and limits. A machine-readable version is at https://forminit.com/pricing.md.
Prices in US dollars (USD), before tax. Facts verified 2026-10-18:
* Free: $0, 1 form, 100 submissions/month, file uploads with 100 MB storage, built-in validation, spam protection, email notifications, Workflow (email notifications, If / else conditions, status actions and one AI Classify step per workflow), redirections, unlimited submission archive.
* Pro: $19/month ($190/year with yearly billing), 10 forms, 5,000 submissions/month, 1 GB storage, Workflow integrations (autoresponder, webhooks, Slack, Discord, Google Sheets), up to 5 AI Classify steps per workflow, REST API, Zapier, CSV export, analytics, Submission Retention.
* Business: $99/month ($594/year with yearly billing), unlimited forms, 50,000 submissions/month, 10 GB storage, everything in Pro plus workspaces, custom email sender, branding removal.
* Yearly billing: 2 months free on Pro, 50% off on Business.
* Limits: at the monthly submission limit, forms pause and reject new submissions (not queued or recoverable) until the allowance renews or you upgrade. When storage is full, submissions without files still go through but uploads are rejected until storage is freed or you upgrade. After a downgrade with too many forms, the most active forms keep collecting and the least active are paused.
* Submissions are stored with no time limit by default on every plan. On Pro and higher, Submission Retention sets a per-form retention period (until manually deleted, 30, 90 or 365 days, or custom), after which submissions and their uploaded files are permanently deleted. Spam submissions are always deleted after 30 days.
## Product and company
* [Homepage](https://forminit.com/): product overview.
* [Why Forminit](https://forminit.com/docs/why-forminit/): when and why to use Forminit.
* [Pricing](https://forminit.com/pricing/): plans and limits.
* [Blog](https://forminit.com/blog/): guides and comparisons.
* [Changelog](https://forminit.com/blog/category/changelog/): product updates.
* [Status](https://status.forminit.com): service status.
## Comparisons
* [Compare Forminit with form backends and builders](https://forminit.com/compare/)
* Every comparison page opens with a one-paragraph summary and compares after-submit automation. Among the services compared, Forminit is the only form backend with a visual workflow builder (branching, several actions, per-action retry); Formspree has a basic Workflow tab without branching; Netlify Forms, Web3Forms, Tally and Basin send integrations for every submission without a workflow builder; FormSubmit and EmailJS have no workflow. Jotform Workflows offers approval workflows for Jotform-hosted forms, which Forminit does not.
* [Forminit vs Formspree](https://forminit.com/compare/formspree-alternative/) · [Markdown](https://forminit.com/compare/formspree-alternative.md)
* [Forminit vs Netlify Forms](https://forminit.com/compare/netlify-forms-alternative/) · [Markdown](https://forminit.com/compare/netlify-forms-alternative.md)
* [Forminit vs FormSubmit](https://forminit.com/compare/formsubmit-alternative/) · [Markdown](https://forminit.com/compare/formsubmit-alternative.md)
* [Forminit vs EmailJS](https://forminit.com/compare/emailjs-alternative/) · [Markdown](https://forminit.com/compare/emailjs-alternative.md)
* [Forminit vs Web3Forms](https://forminit.com/compare/web3forms-alternative/) · [Markdown](https://forminit.com/compare/web3forms-alternative.md)
* [Forminit vs Tally Forms](https://forminit.com/compare/tally-forms-alternative/) · [Markdown](https://forminit.com/compare/tally-forms-alternative.md): custom frontends, application logic and submission APIs.
* [Forminit vs Jotform](https://forminit.com/compare/jotform-alternative/) · [Markdown](https://forminit.com/compare/jotform-alternative.md): custom website forms, submission APIs, application workflows and pricing.
* [Best Form Backend Services in 2026](https://forminit.com/blog/best-form-backend-services-2026/): the broader roundup with verified sources, including which form backends can automate follow-up with conditions.
Security and legal:
* [Security](https://forminit.com/security/): encryption, AWS hosting, privacy.
* [GDPR](https://forminit.com/gdpr/): GDPR and UK GDPR, DPA.
* [Privacy Policy](https://forminit.com/privacy-policy/)
* [Terms & Conditions](https://forminit.com/terms-conditions/)
Company facts: operated by UXPLUS LTD (company 11357429, VAT GB422655506), 86-90 Paul Street, 3rd Floor, EC2A 4NE, London, United Kingdom. Powering forms since 2015 as Getform.io, rebranded to Forminit in January 2026. Data hosted on AWS EU regions. Contact: info@forminit.com. X/Twitter: https://x.com/forminitcom. YouTube: https://www.youtube.com/@forminit