Text & contact
texttextareaemailnumberphoneurlpassword
FormFlow turns Strapi into a complete form backend — visual building, validated submissions, spam protection, email, webhooks, and exports — served over one clean REST API. Every submission lands in your own database; your frontend renders it with your own markup.
A live form, rendered straight from its Strapi schema.
01The lifecycle
From a schema in Strapi to a delivered, governed submission, one plugin handles the whole path. No glue code, no stitched-together services — just the pipeline below.
A visual builder with 20+ field types, layout blocks, conditional visibility, and multi-step wizards. Live preview, duplicate, reorder — no code.
Per-field rules with custom messages. The SDKs validate client-side against the same schema the server enforces, so nothing lands half-checked.
Honeypot, rate limiting, and reCAPTCHA v2 ship free. Pro adds reCAPTCHA v3, Turnstile, hCaptcha, and IP blocklists.
Email notifications and autoresponders, HMAC-signed webhooks with retries, and pre-built integrations — fired the moment a row is saved.
A submission inbox with statuses and bulk actions, exports to CSV/JSON/Excel/PDF, analytics, plus GDPR retention, audit logs, and approvals.
02Inside the admin
Design forms, dial in spam and delivery, and triage submissions — all without leaving your CMS. These are real captures from a live FormFlow install.




03Field registry
Free covers the inputs every form needs. Advanced fields unlock on Pro and Business — the builder shows exactly which is which.
texttextareaemailnumberphoneurlpasswordselectradiocheckboxbooleandatetimedatetimefilehiddenheadingparagraphdividersignaturerating / NPSaddress + maprich textcalculatedpaymentFreePro
04Frontend SDKs
The SDKs fetch the schema, render the fields, validate, and submit — and ship no CSS. Hand them a slug; style every element yourself with Tailwind, shadcn, MUI, or plain CSS.
import {
FormFlowProvider, FormFlowField, useFormFlow,
} from '@formflowjs/react';
function Fields() {
const f = useFormFlow();
return (
<form {...f.getFormProps()}>
{f.fields.map((field) => (
<FormFlowField key={field.name} name={field.name}
render={(api) => (
<label {...api.getLabelProps()}>
{api.field.label}
<input {...api.getInputProps()} />
{api.invalid && <span>{api.error}</span>}
</label>
)} />
))}
<button disabled={f.isSubmitting}>
{f.schema.settings.submitButtonText}
</button>
</form>
);
}Renderless fields hand you value, errors, and ARIA-complete prop getters. Full guides for Next.js, Astro, Nuxt, and Vite live in the SDK repo.
05Quick start
Add the plugin and switch it on. FormFlow creates its own content types on startup.
npm install @formflowjs/strapi-plugin-formflow// config/plugins.ts
export default {
formflow: {
enabled: true,
},
};Design a form in the admin, note its slug, then read the sanitized public schema.
curl https://cms.example.com/api/formflow/forms/contactSecrets such as the reCAPTCHA secret key are stripped server-side — the public schema is safe to ship to the browser.
Post a flat map of field names to values. Validation failures return a per-field error map.
curl -X POST \
https://cms.example.com/api/formflow/forms/contact/submit \
-H 'Content-Type: application/json' \
-d '{ "name": "Ada Lovelace",
"email": "ada@example.com",
"message": "Hello from FormFlow!" }'06Pricing
The free core is genuinely production-ready — not a trial. Pro and Business are gated at runtime by a license key; remove it and FormFlow keeps capturing submissions as the free tier.
A production-ready form builder. Not a trial.
Everything to ship serious forms.
For compliance-bound teams.
07The open-core line
| Capability | Free | Pro | Business |
|---|---|---|---|
| Unlimited forms & submissions | |||
| Core field types, validation, inbox | |||
| File upload field | |||
| CSV / JSON export | |||
| Spam basics (honeypot, rate limit, v2) | |||
| One admin email notification | |||
| Conditional logic, multi-step, advanced fields | — | ||
| Advanced email, webhooks, integrations | — | ||
| Advanced spam (v3, Turnstile, hCaptcha, blocklist) | — | ||
| Analytics, Excel/PDF export, save & resume, white-label | — | ||
| GDPR toolkit, audit log, approvals, multi-language | — | — | |
| Priority support / SLA | — | — |
08Ship it
Requires Strapi v5. The plugin creates its own content types automatically — no migration. A Pro or Business key is read server-side from one env var and degrades safely to Free with zero data loss.
npm install @formflowjs/strapi-plugin-formflow// config/plugins.ts
export default {
formflow: {
enabled: true,
},
};# .env — optional, unlocks Pro / Business
FORMFLOW_LICENSE_KEY=your_key_here