Add submissionEditToken to tighten submission editing requests.
Add missing Dutch translations for frontend JS strings.
Fixed
Fix sandboxed variable access for Formie object templates.
3.1.25 2026-05-14
Changed
Improve Payment handling for webhook-providers, and add extra logging.
Bump stripe/stripe-php.
Fixed
Fix GoCardless payments never completing the redirect flow or creating a mandate charge; the return URL now completes the flow, creates the payment, and polling/webhooks update status as before.
Add support for form submissions to be limited by IP address.
Add JS event modifyAjaxClient to modify the XHR client used for Ajax requests.
Add JS event modifyScriptUrl to modify the CDN scripts for Phone and Date Picker libraries.
Changed
Re-organise form builder field categories.
Rename Webhook integration to Web Request, and add more options for request settings.
Move Slack and Telegram to Messaging integrations.
Move Freshdesk, Gorgias and Zendesk to Help Desk integrations.
Webhook integrations are now Automation integrations.
Captcha integrations now no longer pre-select the first available type when editing.
Re-order Captcha integrations alphabetically.
Integrations can now control any required plugins.
Captchas can now opt to validate earlier in the submission process, and prevent submission saving (like a field would).
Form integration settings now no longer need to be saved when fetching new data/refreshing data.
Improve integration success/fail feedback in the form builder.
Integration settings pages have been re-worked with multiple tabs and an external docs link to instructions.
Update spam keywords rules to new definition syntax.
Update Phone field, no longer using CDN for utils and flag icons, updated look and feel.
Update the intl-tel-input package for Phone field validation and handling.
Change scroll-to-top behaviour to handle non-top level forms (in modal).
Allow Radio Buttons and Checkboxes field option labels to include HTML (safe) or Markdown.
Update Checkboxes and Radio Buttons fields to not show invalid label positions to select.
Hidden or Disabled fields now have a visual indicator in the form builder.
Google Sheets integration can now have their Spreadsheet ID set per-form.
Fixed
Fix NestedFieldRow elements not being garbage collected properly for deleted submissions.
Fix Date field Year Range offsets not using the current year.
Fix Phone field flag in the form builder.
Fix Address field’s Autocomplete integration setting not validating correctly.
Deprecated
Deprecated Automation::getWebhookUrl(). Use Automation::getEndpointUrl() instead.
Removed
Removed “Webhook URL” plugin setting from Webhook integration (still available per-form).
Integration docs are no longer provided within Formie, instead visit the docs.
3.0.32 2025-07-18
Added
Add the ability to set cssAttributes when rendering form CSS.
Add support for proper search index handling for submission fields.
Add support for Salesforce integration for Leads, for task creation on duplicate, to use the Lead ID by default.
Add warning text for File Upload fields, when uploading to a filesystem with public URLs.
Changed
Update English translations.
Improve error handling for Dynamics 365 with regards to entity permissions.
Update Recaptcha server-side verification to use recaptcha.net for better availability.
Fixed
Fix phone field value encryption.
Fix cosmetic fields in emails, improve Phone encrypted values in email, and improve sub-field email placeholder values.
Fix Submission search handling for cosmetic or long field handles.
Fix support for site-specific email settings for email notifications.
Fix cosmetic fields not showing in email notifications.
Fix typecast of Pipedrive “Owner ID” value.
Fix Form element fields using IDs for source settings.
Fix cosmetic fields not showing in email notifications.
Fix an error for empty encrypted Phone Number fields.
Fix an issue with Friendly Captcha for Ajax forms with Start Mode = Auto.
Fix Signature field output in emails for multi-site installs.
Fix incorrect type for “Submission Date” when mapping to integrations.
3.0.31 2025-07-03
Changed
Update front-end validation to show a error state of sub-fields correctly.
Fixed
Fix an error for Campaign integration when running via the queue.
Fix an error for the Calculations field, when formatting as a number and using non-numeric fields in the formula.
Fix an error when trying to determine a submissions status in some instances.
Fix some fields not working correctly with content encryption.
Fix an error for some fields that contained a supportsNested reference from Formie 2.
Fix GraphQL queries for submissions in Craft 5.8+.
Fix support for Craft 5.8.
3.0.30 2025-06-18
Added
Add “is empty” and “is not empty” to field and notification conditions.
Add “Site Name” and “Site Handle” to conditions builders.
Add multi-site support for form usage.
Changed
Update Google Places Address Provider to remove deprecated google.maps.places.Autocomplete component.
Update submission logging to use info rather than error category, to prevent error handlers from picking up form validation errors.
Improve performance of exporting submissions.
Submit buttons on the front-end for forms now get a data-loading attribute set when clicked.
Improve scroll-to-error behaviour for some browsers/front-end setups.
Fixed
Fix an error when running integrations with no Guzzle client.
Fix an error for variable tag rich text nodes in some instances.
Fix an error for Entry Element integrations and defaultAuthorId when set from a Stencil.
Fix Calculations field parsing Markdown content.
Fix Single and Multi Line field character/word limits server-side logic to better handle HTML.
Fix submission titles and special characters.
Fix element chips and quick-edit handling for Submission and Form elements in the control panel.
Fix limit and decimals missing from Number field GraphQL queries.
Fix an error for Feed Me feeds.
Fix legacy section/type for Entry element integration.
3.0.29 2025-06-05
Added
Add trace logging to element integration failures.
Fixed
Fix “back” button in some instances where session data tracking the current page of a form isn’t handled correctly.
Fix Recaptcha success logging.
Fix an error when running element integrations via the queue.
Fix a client-side validation error for required values when including whitespace characters.
Fix legacy section/type for Entry element integration.
Fix Integration::log() deprecation error notice.
Fix an error for Element integrations when mapping a Formie options field to a Craft options field.
3.0.28 2025-05-20
Added
Add support for Freeform 5 Group field in migration.
Add extra logging for reCaptcha failures.
Add more payload context for failed queue jobs.
Add endpoint and method to payload property for failed queue jobs for context.
Add German translation for Signature Field.
Add code to countryOptions property for Phone fields in GraphQL.
Fixed
Fix an error with some Payment field providers when resubmitting the form after payment.
Fix an issue for Payment fields when a client-side error occured.
Fix Date field handling of min/max dates on statically caches sites when using offsets.
Fix an error validating minimum words limit for Multi-Line and Single-Line text fields.
Fix Freeform 5 migration and Hidden fields.
Fix an error with Freeform/Sprout Forms migrations and submission statuses.
Fix an error for Element integrations when mapping a Formie options field to a Craft options field.
Fix new installs not having the default plugin data set.
Fix Checkboxes field missing limitOptions, min, max, toggleCheckbox and toggleCheckboxLabel properties in GraphQL queries.
Fix Freeform 5 migration for HTML and Rich Text fields.
Fix incorrect handling of serializing failed queue jobs.
Fix Calculations field parsing Markdown content.
Fix an error parsing Calculations fields’ formula containing decimals.
Fix an error with Pipedrive, when only enabling Leads.
3.0.27 2025-04-29
Changed
Update Salesforce CRM integration attachment handling.
Ensure full errors are logged for integrations. (thanks @boboldehampsink).
Fixed
Fix a timezone issue with Date fields when setting a min/max date relative to today.
Fix PDF handling for Craft Cloud.
Fix StringHelper::cleanString handling.
Fix JavaScript errors when managing theme config classes.
Fix an error for payment fields when removing alert classes via Theme Config.
Fix typo with RegisterDateTimeFormatOptionsEvent. (thanks @jamesmacwhite).
Fix an issue when using conditions to filter submissions.
Fix an error on Craft Cloud when a failed queue job’s payload couldn’t be updated on a queue job.
Fix Formie 2 migration where form titles could be null in some circumstances.
Fix an error with User element integration when activating users.
Fix issue with custom Lead fields in Copper. (thanks @antcooper).
Fix an error when upgrading to Craft 5 and the m250315_131608_unlimited_authors Craft migration.
3.0.26 2025-04-22
Fixed
Fix parsing of email notification content and HTML.
Fix 1CRM integration not querying existing data objects correctly.
Fix an error when viewing submissions in element fields for Craft 5.7+.
Fix an error with submissionsBehaviour.
3.0.25 2025-04-16
Added
Add craft.formie.setRenderVariables().
Changed
Update JavaScript Captcha to use render variables for script attributes.
Change “Default Submissions State” setting to accept multiple values for states.
Change “Recent Submissions” dashboard widget table layout to list for better visual layout.
Fixed
Fix lightswitch UI for Craft 5.7+
3.0.24 2025-04-11
Fixed
Fix support for Craft 5.7+.
3.0.23 2025-04-11
Added
Add extra logging to Opayo payment failures.
Add the ability to assign a Campaign to a Contact/Lead/Account in Salesforce.
Add support for filtering submissions by fields in the control panel.
Add the ability for HTML fields to reference render options via Twig in their content.
Add the ability to provide submission query arguments for fields, for GraphQL.
Add Field::EVENT_MODIFY_VALUE_FOR_VARIABLE.
Add the ability to set the permissions of newly-created forms for users that have limited form access.
Change
Improve performance of submission editing screen in the control panel.
Improve performance of submissions element index in the control panel.
Improve field layout error output for nested fields and failed validation, which now references the page handle, field handle and any parent field handle.
Update deprecated log() function.
Move Field::getValueForVariable to Field::defineValueForVariable.
Fixed
Fix submissionEndpoint GraphQL property.
Fix an error for Phone fields, when initializing the form’s JS multiple times.
Fix payment field race condition when initializing form JS multiple times with conditions.
Fix an error with Opayo and billing email.
Fix an XSS vulnerability for importing forms with manipulated field content.
Fix an XSS vulnerability for email notification content.
Fix support for Craft 5.7+.
Fix submission titles displaying incorrectly when referencing some fields in their content.
Fix Agree field not rendering its empty value correctly in email notifications.
Fix email notifications not rendering empty valued fields correctly.
Fix Pardot integration not working correctly. (thanks @mirego).
Fix sub-field fields not having their label correctly set in some instances when upgrading to Formie 3.
Fix an error with Summary and Section fields for Formie 3 upgrades.
Fix large field settings throwing an error (particularly for Formie 3 upgrades).
3.0.22 2025-03-27
Added
Add Submission Date to some field mapping controls.
Add support for Recipients field to set the “Email Notification Value”.
Add back Field::EVENT_MODIFY_VALUE_FOR_EMAIL events to modify the value used in Email Notifications.
Add SubmissionEvent::forceRedirect option for events to force a redirect on form submission.
Add Form::setRedirectEntry().
Add the ability to pass arguments to templateJs for GraphQL queries to control JS initialization.
Changed
Improve performance of form usage for large sites and content structures.
Improve Submission export performance, by removing eager-loading non Formie fields.
Update Field::defineValueForEmail to return the raw value for the field, rather than the string-representation of the value.
Updated Feed Me integration for submissions to list forms in alphabetical order.
Update GraphQL resolvers to use ElementCollection correctly.
Fixed
Fix some errors with Submissions widget for invalid dates and weekStartDay user settings.
Fix an error when importing a form, made from an export from the Forms element index.
Fix HubSpot GDPR processing when not enabled.
Fix an issue with Iterable integration field mapping.
Fix some fields not having their default values set correctly.
Fix an error when importing a Formie 2.x export.
Fix an issue where the row’s empty state wasn’t updated for nested or sub-fields using conditions.
Fix an error when trying to query Form Template fields for a form with GraphQL.
Fix Nested Fields not having their summary field values reporting correctly (value as string, json, exports, summary).
Fix Stripe dynamic amount not processing currency values.
Fix providerSettings when querying Payment fields in GraphQL.
Fix an error with Payment fields when viewing a submission in the control panel in some instances.
Fix a race condition for Repeater fields when set to use a minimum number of instances.
Fix Feed Me being able to map to cosmetic fields.
Fix an error for Feed Me when mapping to element fields.
Fix a display error when only “Fields” tab is available for editing, when editing a form.
Fix an issue where a form’s UID could be out of sync.
Fix redirect override when setting via the EVENT_AFTER_SUBMISSION_REQUEST event.
Fix an error where fields and rows were being incorrectly filtered when rendering a form multiple times.
Fix when new Forms are created from a Stencil, their enabled captchas not being respected.
Removed
Remove unused “Column Type” setting from Hidden fields.
3.0.21 2025-03-04
Added
Add “Message Type” to Iterable CRM integration.
Add the ability for IntegrationField’s to contain static data in their definitions.
Add support for Table field to use id or name values when defining a row schema.
Add “Attach File Uploads” for all data objects for Salesforce integration.
Changed
Improve Hubspot GDPR handling for marketing and processing options.
Update Monday integration instructions.
Fixed
Fix Agree field not allowing null value as an empty state indicator.
Fix Agree field markup to match correct accessibility guidelines.
Fix Hubspot GDPR handling.
Fix Monday integration connection requests.
Fix an error when applying Formie-related project config when uninstalled.
Fix Phone number fields flag icons in the form builder.
Fix form usage throwing errors in some instances.
Fix an error determining the default status for a submission, if none are set.
Fix an error with Email Notifications when no valid fields could be found to be included in the email content.
Fix Form Template setting not persisting for Stencils.
Fix an error for captchas not rendering if the captcha placeholder was visually obscured.
Fix Address and Multi-Name fields not working correctly when populating their field content.
Fix Calculations field variables not being set correctly, when referencing other fields.
Fix handling for some integrations where session data isn’t being persisted when connecting via OAuth.
Fix server-side error messages for Repeater fields.
Fix an error for File Upload fields with GraphQL, when min/max size limits were set.
Fix a display issue for forms with multiple payment fields with the same integration.
Fix payment summary display when editing a submission for Craft 5.6+.
Fix multiple Payment fields not validating correctly when re-initializing the fields’ JS.
Fix Phone Number server-side validation error.
Fix an error with Stripe payments for subscriptions when including a payment receipt.
3.0.20 2025-02-02
Added
Add Submission::getFormHandle().
Changed
Refactor queue jobs to provide better feedback on errors and logging data.
Improve queue job feedback on error to include the payload being sent.
Fixed
Fix an error with Group and Repeater fields with required File Upload fields on multi-page Ajax forms.
Fix Group and Repeater fields not respecting “Include in Email Notifications” setting and conditionally hidden fields in email notifications.
Remove incorrect Campaign = Kampagne German translation for the Campaign plugin.
Fix Single-Line text fields in the control panel not showing limit details correctly.
Fix Multi-Line text fields in the control panel not showing limit details correctly.
Fix new email notifications not having the conditions logic set correctly.
Fix email notification queue job causing an infinite loop in some scenarios, and provide better logging feedback.
Fix an error in Craft 5.6+ where fields’ queryCondition() function wasn’t being called.
Fix some sidebar elements not displaying correctly when editing submissions in the control panel on Craft 5.6+.
3.0.19 2025-01-24
Changed
The intl-tel-input for Phone number fields no longer lazy-loads it’s utilities script.
Update intl-tel-input for the latest number validation handling.
Fields in email notification content, when referenced via their variable tag now no longer show their “no response” placeholder text. These still exist for grouped content like “All Fields”.
Fixed
Fix incorrectly bundled intl-tel-input version.
Fix some string content not being escaped properly.
Fix Freeform 5 migration for success behaviour.
Fix default value for Date field not being set correctly.
Fix File Upload handling for some database engines (MariaDB).
Fix an error with Entry element integrations when updating values.
Fix email notifications table when columns contained long variable tags.
Fix incorrect logic when calling Notifications::getFormNotificationByHandle().
3.0.18 2025-01-17
Added
Add support for inline CSS for some string content (Multi-Line Rich Text content).
Add Variables::EVENT_PARSE_VARIABLES to allow you to parse custom registered variables.
Fixed
Fix reCAPTCHA Enterprise and score validation.
Fix Dropdown and Input Date fields not saving correctly.
Fix content errors with File Upload fields and MariaDB installs.
Fix TableInput Vue component not respecting initialValue values.
Fix a migration from Formie 2 for Email fields with Blocked Domains setting.
3.0.17 2025-01-13
Added
Add contentType to email attachments.
Add theme config options for Table field inner field inputs.
Add Element::EVENT_MODIFY_ELEMENT_MATCH event to control behaviour for Element integrations and matching an existing element.
Add filterIntegrationMapping plugin setting to opt out of automatic filtering of integration mapping values.
Changed
Table field column templates are now split into separate files for easier overriding.
Improve JS source map filesize.
Fixed
Fix signature field image matching on existing field, in some instances.
Fix email notifications not correctly saving conditional recipients.
Fix an error with migrating forms from Freeform 5.
Fix Freeform 5 migration for some invalid field handles.
Fix Freeform migration console commands.
Fix some special unicode characters being stripped out of some text values for text-based fields.
Fix Date fields and the “Available Days” setting not working correctly.
Fix Entry element integration “Update Element Mapping” values being blank.
Fix an error when setting a form template with required fields and validation handling.
Fix a Formie 2 migration error for Calculation fields.
Fix an error with some OAuth integrations and refresh token scopes..
Fix Stencils incorrectly saving nested field layout data for sub-fields.
Fix Entry element integration “Update Element Mapping” values.
Fix Date fields (Simple) not providing the correct variable picker token for email notifications.
Fix email notification “Send Test Email” button visual issue.
Fix an error with Entry element integrations.
Fix an issue with multi-page forms with session management in some browsers.
Fix Formie 2 > 3 migration not retaining Form Template custom field values for forms.
3.0.16 2024-12-27
Added
Add context property for integrations to record extra data at submission time.
Add support for Pardot tracking cookies for Form Handler.
Add support for field conditions to use non-field conditions such as status.
Fixed
Fix any serialized MissingField classes not being converted back when the field is no longer missing.
Fix an error importing forms and nested fields not retaining their submission content.
Fix Dropdown and Checkboxes not validating correctly when in a nested field.
Fix Db::prepareForJsonColumn deprecation and handling.
Fix an error with Usage tab when Formie forms are referenced in a Neo block.
Improve Integration form instructions translations to remove duplicate translation strings.
Improve Integration settings instructions translations to remove duplicate translation strings.
Update integration descriptions to be dynamic for better translation.
Days and Months predefined options now use Craft’s locale helpers for consistency.
Country and State predefined options now use commerceguys/addressing for consistency.
Fields now toggle a data-field-has-error attribute on inputs when client-side validation occurs.
Fixed
Fixed an error when creating forms where a default Form Template had required fields.
Fixed an error when fetching Signature field image.
Fixed an issue when using "Validate when typing” and resetting classes via Theme Config.
Fixed element fields not always populating the correct site-specific element when viewing a submission in the control panel.
Fixed querying submissions for nested field, via their nested field values.
Fixed Submission queries not working correctly for custom fields.
Removed
Removed FieldInterface::subFieldLabelPosition for GraphQL (use a proper field fragment).
3.0.6 2024-09-07
Added
Added “Start Mode” setting to Friendly Captcha.
Added the ability to set scriptAttributes and jsAttributes for <script> tags that Formie uses.
Added the ability for craft.formie.renderJs to set JS attributes for scripts.
Added onFormieCustomValidate JavaScript event.
Added renderOptions.customInputs to allow custom hidden input content to be inserted into a form.
Changed
Changed Phone input autocomplete from tel-national to tel to ensure valid autocomplete value.
Fixed
Fixed an issue for Stripe and Opayo 3DS handling in combination with captchas not working correctly.
Fixed an error for GraphQL when querying submissions with brand-new Group fields with no content.
Fixed an error with Freshdesk integration when handling duplicate contacts.
Fixed an error with Salesforce integration when handling duplicate leads.
Fixed an error when duplicating forms with nested fields.
Fixed integrations enabled indicator.
Fixed a JavaScript error when loading Formie’s JS in a module for a Repeater field.
Fixed an error validating Repeater sub-fields.
Fixed an error when email notifications contained references to field content, and didn’t convert special characters correctly.
3.0.5 2024-08-29
Fixed
Fixed an error when parsing variable tokens.
3.0.4 2024-08-29
Added
Added “Page URI” and “Page Name” to HubSpot integration for Forms.
Added support for Form Template custom field validation for forms.
Added compatibility with Craft Link field.
Changed
Klaviyo Email Marketing integration now orders lists alphabetically by name.
Klaviyo Email Marketing integration now loads more than 10 lists.
Improved HubSpot CRM integration for HubSpot Forms, where fields don’t have a label.
Dynamics365 system users now no longer include disabled user accounts.
Improve Dynamics365 CRM integration to filter system users that are non-application-specific.
Updated Dynamics365 CRM Integration and Lookup fields to automatically determine which entities to fetch field values for, rather than a static schema.
Payment fields now no longer process if they are set to visibility disabled.
Hidden or Disabled fields now have a visual indicator in the form builder.
Fixed
Fixed an edge-case with variables, where cached data matched against incorrect submission values.
Fixed an error when fetching Summary field HTML.
Fixed an error when fetching Signature field image.
Fixed an error with Klaviyo CRM integration.
Fixed being unable to select the top-level field for a Sub-Field in variable picker fields.
Fixed an error when viewing a Submission in the control panel for a Date field with “Calendar: Advanced”.
Fixed an error with Date field default value in some cases when saving a form.
Fixed Entries fields not being able to select Entry Types as sources.
Fixed Formie 2 migration for Sub-Field inner fields, not retaining their settings upon migration.
Fixed server-side empty validation for Phone fields.
Fixed an issue with Theme Config and disabling HTML elements from rendering not working.
Fixed Date field validation.
Fixed Dynamics365 CRM integration and lookup fields when referencing custom entities.
Fixed field validation for Sub, Group and Repeater fields and their inner fields.
Fixed an issue with Dynamics365 CRM integration and Picklist field options.
Fixed conditional logic not working correctly for Groups and Repeaters.
Ensure view permissions are enforced for “Recent Submissions” dashboard widget.
3.0.3 2024-08-14
Fixed
Fix a compatibility issue with nystudio107/craft-plugin-vite 5.0.2.
3.0.2 2024-08-14
Added
Added initSubmit JS API function to allow programmatic submissions.
Added “Tenant” setting to Microsoft Dynamics 365 CRM integration.
Fixed
Fixed an error when refreshing tokens on some installs.
Fixed an error when creating nested fields in some cases.
Fixed an error rendering element fields.
Fixed translations.
3.0.1 2024-08-11
Added
Added processSubmit JS API function to allow submission processing to continue if preventing submission via the onBeforeFormieSubmit JS event.
Added support for WEBP flag images for Phone fields. Add a .no-webp class in your form to opt-out of this behaviour to fallback to PNG flags.
Fixed
Fixed errors when attaching some files to support requests.
Fixed Date fields with a default value, or min/max date not having their values normalized correctly.
Fixed an error when refreshing tokens via JS, for a non-top-level webroot site.
Fixed an error when populating Element fields when also limiting field values.
Fixed an error when trying to order Submissions by their title in the control panel.
Fixed an error where conditional Email Notifications were being triggered twice for new submissions.
Fixed an issue where missing required field values for Nested or Sub-Field fields weren’t being marked as required during validation.
Fixed an error where conditional Email Notifications were being triggered twice for new submissions.
Fixed some modal button spacing issues.
Fixed an error viewing Submissions with Radio Button fields with numeric values in the control panel.
3.0.0 2024-08-06
Breaking Changes
Repeater and Group fields values now no longer use elements, just plain arrays. This brings several performance improvements and simplification to these fields.
OAuth-based integrations now use the Auth Module to handle authentication under the hood.
References to subfield is now subField for various classes.
Element fields (Categories, Entries, File Upload, Products, Tags, Users, Variants) now use their public URL in email notifications.
Options fields (Checkboxes, Dropdown, Radio) now use their option labels in email notifications.
Changed fieldInputContainer to fieldInputWrapper for Theme Config and .fui-input-container class to .fui-input-wrapper for fields.
Date fields now no longer use Flatpickr as a date-picker by default.
Changed the value returned for Address fields when queried via GraphQL.
Change Field’s name to label for GraphQL queries.
Change Page’s name to label for GraphQL queries.
Added
Added new user interface for sub-field (Address, Date, and Name).
Added the ability to re-order sub-fields.
Added the ability to edit the full settings of sub-field fields.
Added ability to send email notifications or trigger integrations when unmarking a submission as spam.
Added the ability to set the control panel or public URL for element fields (Categories, Entries, File Upload, Products, Tags, Users, Variants).
Added the ability to set the label or value for options fields (Checkboxes, Dropdown, Radio).
Added the ability to override “All Form Fields”, “All Non Empty Fields” and “All Visible Fields” variables with Email Notification templates.
Added “Calendar (Simple)” and “Calendar (Advanced)” to Date field display types, replacing “Use Date Picker”.
Added CSS Layers support for front-end CSS.
Fields moved in and out of Group fields now have their content moved as well.
Fields can now be moved to and from Group/Repeater fields.
Added “Required Field Indicator” for forms, to either show an asterisk for required fields (default) or show optional for non-required fields.
Added the form.setPageSettings() function to override page settings in your Twig templates.
Added support for Group and Repeater fields to be added as an existing field, or a synced field in the form builder.
Added support for Repeater fields to use conditions (within their own row of fields).
Added support for all CRM integrations to only fetch data objects for ones that are enabled in the form builder integration settings.
Added keyboard navigation to variable picker dropdown.
Added the ability to type { in variable picker components to autocomplete variables.
Added handle to Email Notifications that can be accessed directly, instead of by their ID.
Added isFinalPage in JSON response for Ajax-based forms.
Added “All Submissions Behaviour” plugin setting.
Added the ability to store custom data (customSettings) on a Notification, to store extra data against a Notification.
Added the ability to modify Notification tabs and field settings (schema) via Notifications::EVENT_MODIFY_NOTIFICATION_SCHEMA.
You can now get submission field values via dot-notation for nested values. e.g. submission.getFieldValue('group.text') or submission.getFieldValue('repeater.1.text')
You can now query submission field values via dot-notation for nested values. e.g. submission.field('group.text').one() or submission.field('repeater.1.text').one()
Integrations can now populate a $context property with arbitrary data that's stored before processing, and accessible in the queue job.
Allow craft.formie.renderJs to set JS attributes for scripts.
Added data-fui-alert-error and data-fui-alert-success attributes on front-end alerts.
Added data-field-label attribute to labels/legends for fields.
Added data-validation to fields, to denote what validators to use for the field.
Added initRow to Repeater field JS events.
Added client-side validation for min/max word/character limit for text fields.
Added the current rowId for the data-repeater-row attribute for Repeater fields.
Added onFormieLoaded JS event.
Added double-clicking a page in the form builder now opens the pages editor.
Added “Recipients” to the Email Notifications index table.
Added Table node to rich text editor settings (used for numerous form, field and notification settings).
Added the ability for Recipients fields to pre-populate the field via their option label.
Added verbb\formie\fields\subfields classes to better handle sub-field inner fields.
Added NestedField::EVENT_MODIFY_NESTED_FIELD_LAYOUT to modify the field layout of Nested or Sub-Fields.
Added verbb\formie\base\CosmeticField class.
Added verbb\formie\base\ElementField class.
Added verbb\formie\base\MultiNestedField class.
Added verbb\formie\base\OptionsField class.
Added verbb\formie\base\SingleNestedField class.
Added verbb\formie\base\SubField class.
Added Field::getValueForVariable() to allow fields to handle logic for variables.
Added Field::getValueForCondition() for handling serialization for condition evaluation.
Added Field::getValueForEmailPreview() for fields to define their own preview for email notifications.
Added Field::fieldKey to represent the handles of a field and any parent field. e.g. group.text or repeater.text.
Added Field:: lowerClassName().
Added Field::isDisabled.
Added Field::enabled to allow you to disable a field.
Added Submission::hasStatusChanged() and Submission::hasSpamChanged().
Changed
Now requires PHP 8.2.0+.
Now requires Craft 5.0.0+.
Updated Vue, Vite, Formkit and all JS dependencies to their latest versions.
Updated Feed Me integration support for Feed Me 6+.
Updated Freeform migration to support Freeform 5+.
Submission content no longer have their own content tables. Content is now in a single content column, in your formie_submissions database table.
Submissions now have Create/Save/Delete user permissions.
Submissions now have separate view and manage user permissions.
Sent Notifications now have “All” or per-form user permissions for View/Resend/Delete.
Formie::log() is now Formie::info().
Integration::log() is now Integration::info().
Updated form builder modals and implement better modal accessibility.
Switched Stripe payments to use “Payment Web Element”, adding the ability to use non-credit card payments like Apple Pay, AfterPay, etc
Revamped front-end validation and removed bouncer.js.
Submissions now send any email notifications that have status conditions when a completed submission is saved.
Field errors now only show their first error when validation fails.
Re-organise validator rules and add client-side match field validator.
data-field-handle for fields now includes the full dot-notation “fieldKey” of the field, including any parent. So name.firstName, group.text or repeater.new1.text.
Captchas for GraphQL mutations now don’t require a mandatory variables parameter to be named the same as their input type.
Querying fields and rows via GraphQL now default to only returned enabled fields.
Front-end form JavaScript now waits until the form has entered the viewable area on the page to be initialized.
The onFormieInit now fires on every initialization of a form, when it’s visible on the page.
Captchas now smartly load whenever they have entered the viewable area on the page. This greatly improves page-load performance when the form is initially hidden (in a modal for example).
Sub-fields now extend from the verbb\formie\base\SingleNestedField and inherit many behaviours from Group fields.
Phone fields are no longer verbb\formie\base\SubField fields.
Sub-field fields now store their field config in their own row in the formie_fields database table, under their own layout (page, row, field).
Update GraphQL interfaces for all fields to explicitly define fields to query. Previously these were automatically done via Reflection.
Integration field mapping now uses field:fieldHandle syntax for fields.
Integration field mapping now uses dot-notation (field:group.text) syntax for nested fields.
Conditions (fields, pages, notifications) now uses field:fieldHandle syntax for fields.
Conditions (fields, pages, notifications) now uses dot-notation (field:group.text) syntax for nested fields.
Submissions element index now show incomplete and spam submissions alongside completed submissions.
Changed form Title references to form Name.
Changed fieldErrors and fieldError elements from ul and li respectively to div.
HubSpot CRM integration now automatically saves the hubspotutk cookie at the time of submission, to be sent with API requests. This means you now no longer need to map a form field to ensure the hubspotutk tracking cookie is sent.
nextPageIndex in JSON response for Ajax-based forms now returns null when submitting on the final page to match nextPageId.
Update Date field’s availableDaysOfWeek to return an array of strings as opposed to a JSON-encoded array for GraphQL.
Email Notification field templates now no longer output a paragraph tag and the field label.
Recipients fields values are now included in Email Notification content.
Updated the intl-tel-input package for Phone field validation and handling.
Date fields now show the required state on the outer label for Calendar and Date Picker display types.
Name field values now return the full name including prefix and middle name (if provided).
Address Country and Name Prefix fields now use their respective label values for string representations of their value.
Adjusted dropzone size for form builder.
Update Payment fields to provide a more client-friendly error message when a payment fails.
Payment integrations can now have their field templates overridden in Form Templates.
Updated email notifications index to show Name and Subject variable previews when used.
Remove Section and Summary fields from rich text editor and variable picker options.
Changed craft\fields\data\MultiOptionsFieldData to verbb\formie\fields\data\MultiOptionsFieldData.
Changed craft\fields\data\OptionData to verbb\formie\fields\data\OptionData.
Changed craft\fields\data\SingleOptionFieldData to verbb\formie\fields\data\SingleOptionFieldData.
Changed craft\fields\data\ColorData to verbb\formie\fields\data\ColorData.
Fixed
Fixed multiple Tippy.js instances in the form builder when field settings contained multiple “info” elements.
Fixed alerts on front-end not respecting theme config.
Fixed Commerce fields initializing when Commerce wasn’t installed or classes exist.
Fixed text-limit character check for emojis on the front-end.
Fixed lack of validation for Date fields and their Default Value when setting to a specific date.
Fixed behaviour of field variable tags in Email Notifications, where referencing a single field produced different output compared to when used in consolidated variables (e.g. “All Form Fields”).
Fixed lack of client-side validation for min/max Number fields.
Fixed lack of server-side validation for min/max Number fields.
Removed
Removed currentPageId from JSON response for Ajax-based forms, as it’s no longer necessary.