Simple Form
A form builder for Craft CMS 5 that stays out of your way. Build a form in the control panel, drop one tag in a template, and every submission lands as a native Craft element — searchable, exportable, and permission-controlled like everything else in your site.
The Solo edition is free. Unlimited forms, unlimited submissions, 22 field types, notifications, spam protection, and full multi-site translation. No trial, no submission cap, no watermark. Upgrade to Standard when you need the advanced stuff.
Built for Craft, not ported to it
- Submissions are real elements. They use Craft's element index — sources, filters, search, bulk actions, exporters, trash and restore. Not a bespoke table with a bolted-on UI.
- Genuinely translatable. Titles, descriptions, field labels, options, validation messages, notification bodies and confirmation messages all translate per site, with a configurable propagation method. The control panel itself ships in eight languages.
- Server-side authority. Every rule you set — required fields, conditional logic, option membership, availability windows, per-user limits — is enforced in PHP on submit. The client-side layer is a convenience, never the gate.
- A real developer surface. Twig and PHP APIs, a GraphQL schema with a committed SDL, lifecycle events for modifying or cancelling behaviour, front-end JavaScript hooks, console commands, and a documented public-API stability contract.
Features
Form building
Drag-and-drop builder with multi-column rows, a searchable field palette, and keyboard and touch reordering — no mouse required. Multi-step forms with progress and per-step validation. Conversational mode renders one question per screen. Save & continue later gives visitors a resumable link. Passive partial capture records abandoned attempts behind a consent gate. Start from a stencil, duplicate an existing form, or share a form at its own URL or as an embed.
33 field types
Text, email, URL, textarea, number, phone with dial-code validation, date, time, date & time, hidden with dynamic defaults, select, checkbox, radio, rating, opinion scale/NPS, GDPR consent with an auditable consent record, name and address (with optional autocomplete), file upload, signature, calculation, repeater, payment, entry/category/tag/user/asset relations, and heading/divider/HTML/text/callout layout blocks.
Conditional logic
Show, hide, or conditionally require any field based on what's already been answered. Logic jumps branch a multi-page form to a non-adjacent step. Conditional submit messages swap the confirmation text based on the submitted values. Delete a field and the builder tells you which rules depended on it, rather than silently dropping them.
Spam protection
Honeypot, per-IP rate limiting on by default, and your choice of reCAPTCHA, hCaptcha, or Cloudflare Turnstile. Add Akismet scoring and keyword/email/IP denylists, each set to either flag or block. Flagged submissions land in a review queue — approving a false positive re-fires the notification and integrations it was holding back.
Notifications
Any number of per-form emails, each with its own recipient, subject, reply-to, CC/BCC and body. Recipients can be a fixed address or a form field, which is all an autoresponder needs. Gate each one behind a send condition, translate bodies per site, attach a generated PDF of the submission or the visitor's uploaded files, and trial it with a test send. Every send is logged with its status, and any of them can be resent.
Integrations
Push submissions to Slack, Discord, Mailchimp, ActiveCampaign, HubSpot, Pipedrive, Google Sheets, any webhook, or straight into a Craft entry or user. Dispatch runs on the queue with retries, so a slow third party never delays or fails a visitor's submission. Every attempt is logged, and any dispatch can be resent by hand. Write your own connector against a documented interface.
Payments
Collect a fixed or field-driven amount on submit through Craft Commerce's embedded gateway form. Pay-to-submit means a declined card saves nothing. Notifications and integrations are held until the payment settles, then released automatically. Coupons support percentage or fixed discounts with usage limits and expiry.
Submissions and reporting
A dashboard showing activity over time, what needs attention, and per-form links. Analytics with status breakdowns and spam-versus-legitimate splits. Quiz scoring with grade bands, and per-question survey aggregates. A configurable approval workflow with your own stages and transitions. Immutable per-submission field snapshots, so renaming or deleting a field later never corrupts what older submissions show. CSV export with column selection, streamed in batches for large datasets.
Privacy
Three-state IP capture — full, anonymized, or off. Retention windows for submissions, spam, logs, drafts and partials, pruned on garbage collection, deleting or anonymizing in place. Console commands to export or erase everything tied to an email address, for subject-access and erasure requests.
Developer tooling
Version-controlled form definitions in config/, deployed with a single console command that updates forms in place without breaking existing submissions. Portable, secret-free JSON import and export. An MCP server so AI agents can inspect and manage forms over JSON-RPC. Scaffolding generators and copy-paste examples for custom field types, integrations, captcha providers and themes.
Solo vs Standard
| Solo (free) | Standard | |
|---|---|---|
| Forms and submissions | Unlimited | Unlimited |
| Field types | 22 | All 33 |
| Multi-site, per-site translation | ✅ | ✅ |
| Email notifications + autoresponders | ✅ | ✅ |
| Notification log with resend | ✅ | ✅ |
| Honeypot, rate limiting, CAPTCHA | ✅ | ✅ |
| Availability windows, quotas, per-user limits | ✅ | ✅ |
| CSV / JSON / XML export | ✅ | ✅ |
| Trash & restore, submission editing | ✅ | ✅ |
| Dashboard, analytics, survey reports | ✅ | ✅ |
| Attribution / UTM capture | ✅ | ✅ |
| Address autocomplete | ✅ | ✅ |
| Submission approval workflow | ✅ | ✅ |
| Webhook + Craft entry/user integrations | ✅ | ✅ |
| Import / export and forms-as-code | ✅ | ✅ |
| Advanced fields — signature, payment, rating, opinion scale, calculation, repeater, element relations | — | ✅ |
| Conditional logic | — | ✅ |
| Multi-page forms | — | ✅ |
| Save & continue later | — | ✅ |
| Conversational render mode | — | ✅ |
| Quiz scoring | — | ✅ |
| Passive partial capture | — | ✅ |
| Akismet + denylists | — | ✅ |
| Automated retention | — | ✅ |
| PDF attachments | — | ✅ |
| Audit log | — | ✅ |
| Commerce payments + coupons | — | ✅ |
| Slack, Discord, Mailchimp, ActiveCampaign, HubSpot, Pipedrive, Google Sheets | — | ✅ |
| MCP server | — | ✅ |
Upgrading and downgrading is safe
The edition gate governs authoring, never the visitor-facing runtime. A form built on Standard keeps rendering and accepting submissions after a downgrade to Solo — its conditional logic still evaluates, its pages still navigate, its advanced fields still validate. Visitors see no difference.
On Solo you simply can't add more: no new advanced fields, no turning on conditional logic where it wasn't on before. Everything already built is preserved when you save, and the editor tells you plainly which features are in use. Spam protection and retention keep running so data hygiene never regresses. Go back to Standard and everything resumes.
Upgrading from Solo costs the price difference, not a repurchase, and carries everything over untouched.
Requirements
Craft CMS 5.x and PHP 8.2 or later. Runs on MySQL 8 and PostgreSQL 16. Craft Commerce is an optional dependency, needed only for the Payment field.
Installation
composer require anvildev/craft-simple-form
php craft plugin/install simple-form
| Package | anvildev/craft-simple-form |
| Repository | https://github.com/anvildevxyz/craft-simple-form |
| Version | v1.1.0 |
| Edition handles | solo and standard (case-sensitive) |
| Pricing | Solo $0 · Standard $39 |
Standard
Pro
Plus $19/year after one year.
To install this plugin, copy the command above to your terminal.
This plugin doesn't have any reviews.