Plugin screenshot thumbnail 1/6
Plugin screenshot thumbnail 2/6
Plugin screenshot thumbnail 3/6
Plugin screenshot thumbnail 4/6
Plugin screenshot thumbnail 5/6
Plugin screenshot thumbnail 6/6

Easy Form is a forms and submissions plugin for Craft CMS 5, built around three things most form plugins trade away: high submission volume, easy translations, and developer freedom.

Built for volume

  • Non-element storage — forms and submissions live in their own database tables, skipping Craft's element and content-table overhead, so a contact form and a 100,000-entry campaign run in the same plugin without slowing down.
  • Promoted columns — common fields are promoted to real, indexed columns for fast filtering and search.
  • Field snapshots — a snapshot of the form is stored with each submission, so old entries stay readable after the form changes.
  • Background, batched exports — CSV exports run off the request cycle and read in batches, so large datasets never exhaust memory.

Multilingual, client-managed

  • Per-site content — labels, success and error messages, the submit button, and the notification subject all translate per Craft site, with the default as a fallback.
  • Translated validation, automatically — frontend validation and UI messages follow the current site's language out of the box, shipped in English, French, German, Spanish, Italian, and Dutch.
  • No developer round-trip — editors adjust wording in every language from the control panel; you never touch a template to fix a typo.

Developer freedom

  • One-line render — output a whole form with {{ easyForm('contact') }}, validation and AJAX submit included.
  • Bring your own markup — get the layout model with easyFormLayout(), or render field by field with easyFormField().
  • Custom frontend fields — declare a field on the form and populate it however you like (a select from live entries, a computed value, a custom payload); choose how strict unknown fields are: strict, allow-listed, or open.
  • Front-end events — hook the JavaScript submit lifecycle (easyform:success, and more) for analytics or custom behaviour.
  • Server-side events — PHP events around submission save, validation, email notifications (before/after send, cancelable), webhooks, and form save/delete.

Fields

Single-line text, Textarea, Email, Phone, URL, Number, Date, Date & time, Time, Dropdown, Radio buttons, Checkboxes, Agree/consent, File upload, and Hidden — plus Heading, Paragraph, Divider, and Callout content blocks.

  • Conditional visibility — show or hide any page, row, or field based on another field's value.
  • Multi-page forms — with a step indicator and custom navigation labels.
  • URL pre-fill — populate fields from query-string parameters.
  • Per-field validation — required, min/max length, min/max value, decimal places, and email/URL/phone formats, with custom (and per-site) messages.

Spam protection

  • Honeypot — hardened against browser autofill and password managers.
  • Blocked keywords & email domains — reject or silently file matching submissions.
  • Per-IP rate limiting.
  • Cloudflare Turnstile, reCAPTCHA v2 & v3 — v3 with a configurable score threshold, action verification, and a choice of Google's badge or an inline disclosure notice.
  • Silent spam handling — file spam quietly (so bots can't probe your rules) or reject it with an error, per form.
  • Spam reason — every block records why (honeypot, blocked domain, blocked keyword, or CAPTCHA), shown in the control panel and available as an export column.
  • Every check is enforced server-side, not just in the browser.

Email notifications

  • Multiple notifications per form, each configured independently.
  • Conditional sending — send only when a submission matches your rules.
  • Dynamic recipients — send to an address submitted in the form.
  • CC / BCC and attachments — attach the submission's uploaded files.
  • Per-site subject and content, with optional Twig email templates.
  • Localized dates — date and time values render in the submission's site language.
  • Queued — sent in the background; re-send manually from the submission view.
  • Before/after send events — rewrite, redirect, or cancel a notification in code.

Webhooks

  • Queued and HMAC-signed — verify authenticity at the receiver.
  • Before-send event to modify or authenticate the request.
  • SSRF-aware — private hosts are blocked by default.

Submissions & exports

  • Submissions list — search; filter by form, status, site, and date; bulk status changes and deletes; per-submission statuses (pending, approved, spam, archived).
  • Advanced CSV export — pick your columns; filter by site, status, date, and search; choose how file fields render (full path, file name, or Craft asset ID); optionally localize dates; run in the background; UTF-8 BOM for Excel; save copies for re-download; spreadsheet-formula values neutralized.
  • Portable forms — duplicate a form in one click, or export and import form definitions as JSON to move them between sites and environments.

File uploads

  • Store uploads as Craft assets (in a volume) or on the filesystem.
  • Limit by max file size, max total size, max file count, and allowed types; dangerous executable and script extensions are always blocked.
  • Per-form overrides for every upload setting.

Privacy & GDPR

  • Optional IP storage, with full or anonymized modes.
  • Per-email export and erasure console commands (right of access / right to be forgotten).
  • Scheduled retention pruning, with a dry-run mode.

Requirements

Craft CMS 5.8+ and PHP 8.2+.

Standard

Plus $29/year after one year.

Installation Instructions

To install this plugin, copy the command above to your terminal.

Reviews

This plugin doesn't have any reviews.

Active Installs
0
Version
1.1.0
License
Craft
Compatibility
Craft 5
Last release
July 5, 2026
Categories
Activity (30 days)
0
Closed Issues
0
Open Issues
0
Merged PRs
0
Open PRs