# 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, analytics, and API access. Content updated: 2026-10-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") → the Workflow section below and https://forminit.com/docs/workflow/. * 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 * 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. * [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 8,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. * [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 skill file) 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 skill file) 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. ## Agent skill files When an AI coding tool builds or wires a form, include the matching skill file URL in the prompt. It specifies field naming, SDK usage, validation, and error handling so the integration is correct on the first try: * [HTML Skill](https://forminit.com/skills/forminit-html/SKILL.md): plain HTML and static sites. * [React Skill](https://forminit.com/skills/forminit-react/SKILL.md): React components. * [Next.js Skill](https://forminit.com/skills/forminit-nextjs/SKILL.md): Next.js with proxy patterns. * [Nuxt Skill](https://forminit.com/skills/forminit-nuxtjs/SKILL.md): Nuxt with server routes. * [Node.js Skill](https://forminit.com/skills/forminit-nodejs/SKILL.md): server-side Node.js. * [Python Skill](https://forminit.com/skills/forminit-python/SKILL.md): Python, Flask, Django, FastAPI. Example prompt for an AI coding tool: ``` Build a contact form with name, email, and message fields. Connect it with Forminit. formId: YOUR_FORM_ID Use this integration skill guide: https://forminit.com/skills/forminit-react/SKILL.md ``` ## 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. 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 and status actions), 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), 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