github verbb/formie 4.0.0-beta.10

pre-release4 hours ago

Added

  • Add Form Statuses to label form lifecycle states in the control panel (active, draft, archived), with form builder assignment, index status menu filtering, bulk actions, and project config support. Rename existing submission workflow labels to Submission Statuses, with backward-compatible class aliases. (#1471)
  • Add existing and synced fields to Group fields from the form builder, so reusable field definitions can be placed inside independent group wrappers with namespaced handles. (#2069)
  • Show field handles in the form builder when the Craft user preference Show field handles in edit forms is enabled (admin users only), with a copy-to-clipboard control on hover. (#2279)
  • Show an Encrypted padlock badge on fields in the form builder when Enable Content Encryption is turned on. (#2332)
  • Add an optional Other choice for Radio fields, with a configurable label and free-text input on the front-end. (#1875)
  • Add csrfInput render option to control Craft CSRF hidden input output (true default, false to omit, or an options array such as { async: true } for statically cached pages). (#2121)
  • Add Enable Multi-Page Forms plugin setting to disable multi-page forms in the form builder. When disabled, authors cannot add pages and existing multi-page forms cannot be saved until reduced to a single page. (#2483)
  • Add password validation settings to the Password field: minimum length, and requirements for uppercase, lowercase, and special characters. (#1880)
  • Add a Unique User Email setting to Email Address fields, to reject email addresses already associated with a Craft user account. (#1151)
  • Add registered Custom Provider option sources for Dropdown, Radio, Checkboxes, and Recipients fields. Modules can register lightweight OptionSourceProviderInterface classes via OptionSources::EVENT_REGISTER_OPTION_SOURCE_PROVIDERS for local Craft data without building a full integration. See Custom option source providers. (#1421)
  • Add dynamic Brevo list assignment via field mapping. Map a form field to the Brevo List integration field to subscribe contacts to a submission-specific list, with fallback to the form’s configured list. (#2849)
  • Add Merge Multi-Option Fields setting to the Pipedrive integration. When updating an existing person (matched by email), mapped multi-option field values such as labels can be appended to existing values instead of replacing them.
  • Add global Allowed domains email rules under Settings → Spam Protection → Email Rules. Allowlisted domains or full email addresses skip global blocked-domain and free-provider checks only; other spam screening still applies. (#2335)
  • Add a Last Edited By column to submission sources, tracking the Craft user who last saved a submission in the control panel. (#1403)
  • Add craft.formie.ref() and craft.formie.refField() for building variable-picker-compatible reference tokens from Twig when overriding settings such as submitActionMessage. See Reference tokens. (#2838)
  • Add a persisted metadata JSON column on submissions for submit-time request context (referrer, user agent, tracking cookies) and developer-defined custom data via form.setSubmissionMetadata(). Reference tokens such as {metadata:custom.campaignId} and {metadata:request.referrer} are supported in notifications, integrations, and PDFs. (#1379)
  • Add formie_field_site_overrides storage for per-site field definition overrides keyed by fieldId, separate from form-level formie_form_site_overrides payloads.

Changed

  • Freeform 4/5 plugin migrations now process submissions in batches (default 100) to avoid memory exhaustion on large forms. Use php craft formie/migrate/freeform4 (or freeform5) with --batch-size, --submission-offset, --submission-limit, --submissions-only, and --skip-submissions for large migrations. (#2513)
  • Rework multi-site propagation and translation to use each form’s source site (where it was created) instead of Craft’s global primary site. “Same language” and “Same site group” propagation modes now filter from the source site. Forms store a persisted sourceSiteId. (#84)
  • Rename the submission statuses database table from formie_statuses to formie_submission_statuses, aligning with formie_form_statuses. The Table::FORMIE_STATUSES constant remains as a deprecated alias.
  • Stop routing user-authored form content (labels, placeholders, messages, options) through the formie translation category. Form copy is output from the database after site overrides are merged; formie.php is for Formie-owned UI strings only (#2907).
  • Remove front-end sourceLanguage mutation in the plugin constructor that existed to work around the above behaviour.
  • Improve multi-site submission and notification handling by loading forms with site translation overrides applied for the submission’s site.
  • Store field translation overrides in formie_field_site_overrides instead of nested fields entries in form site override JSON.
  • Include multi-site translation overrides in form import/export (siteOverrides, fieldSiteOverrides, and sourceSiteHandle), keyed by site handle and field reference for portability across environments. Form exports now use export version v4.

Fixed

  • Fix form import with Update existing form not removing notifications deleted before export. Empty notifications arrays in the import payload now replace the form’s notifications instead of being ignored. (#1941)
  • Fix plugin uninstall via project-config/apply failing when Formie stencil project config is removed after the formie_stencils table has already been dropped. (#1710)
  • Fix queued integrations losing submit-time context (referrer, IP address, HubSpot/Pardot tracking cookies) by persisting request metadata on the submission at submit time and hydrating integration context from it in queue workers. (#1379)
  • Fix plugin migrations failing on production when allowAdminChanges is disabled because migrations attempted to write plugin settings to project config. (#2615)
  • Fix phone country dropdown flags not appearing on Craft Cloud. Flag sprites are inlined in the front-end bundle instead of loading from relative CSS asset paths. (#2529)
  • Fix date dropdown fields rejecting year-only values with “Year cannot be blank” when other date parts are disabled. Partial date parts are stored via DateFieldValue without requiring a full calendar date. (#2261)
  • Fix Stripe payments failing with “Invalid email address” when Payment Receipt is enabled but the mapped receipt email resolves empty (for example legacy {field.email} tokens or User Email while logged out). (#2262)
  • Fix Google Maps API script conflicts when Address field autocomplete and the Google Maps Craft plugin are used on the same page. Formie reuses an existing window.google instance instead of injecting a second Maps script. (#2041)
  • Fix captcha provider credentials saved in the control panel being wiped when project config syncs on deploy. Site-scoped captcha settings are now preserved across deployments. (#2407)
  • Fix notification email preview and send failing when both From Name and From Email are set. (#2698)
  • Fix Phone field country selector labels not respecting the field’s Country Language setting. (#2042)

Don't miss a new formie release

NewReleases is sending notifications on new releases.