Changelog
4.1.232024-11-19
Added
- Verified support for Craft 4.13.x.
Changed
- Updated the
phpoffice/phpspreadsheet
dependency to include^2.0
and^3.0
.
4.1.222024-09-06
Added
- Verified support for Craft 4.12.x.
Fixed
- Fixed a bug where uploading assets to submissions in the control panel would incorrectly mark them as unfinalized assets to be deleted.
- Fixed a bug where an error could occur when creating new forms on some MySQL installs.
Security
- Updated
axios
dependencies to address potential security vulnerabilities.
4.1.212024-08-14
Fixed
- Fixed a bug where the
layoutJson
column change migration in 4.1.20 would fail on PostgreSQL.
4.1.202024-07-30
Changed
- Updated Diagnostics page to verify compatibility for Craft 4.10.x.
- Updated the Website field validation to allow longer domain extensions.
- Changed the
layoutJson
column in thefreeform_forms
database table tolongtext
to handle larger forms.
Fixed
- Fixed a bug where the Bypass All Spam Checks for Logged in Users setting did not correctly bypass all spam checks for logged-in users when a form is cached.
4.1.192024-05-31
Changed
- Updated Diagnostics page to verify compatibility for PHP 8.2 and Craft 4.9.x.
- Removed the Resources subnav link.
Fixed
- Fixed a bug where en and em dash characters were not saving in submission data on Radio, Select, and Opinion Scale field types.
4.1.182024-05-08
Fixed
- Fixed a bug where setting
allowedGraphqlOrigins
tofalse
in general.php would cause form submissions to crash.
4.1.172024-04-29
Added
- Added Craft element search support for submissions. You may need to run
./craft freeform/submissions/resave --update-search-index
once for this to work. - Added
freeform/submissions/resave
CLI command to resave all existing submissions.
Changed
- Updated GraphQL to include HTML and Rich Text field types.
Fixed
- Fixed a bug where setting a Calendar Event to be All Day in the Calendar Events integration was not working.
- Fixed a bug where submission saving in the console could fail.
4.1.162024-04-04
Changed
- Updated the CSRF input to send
nocache
headers when rendering.
Fixed
- Fixed a bug where Freeform was opening unnecessary sessions.
4.1.15.12024-03-01
Fixed
- Fixed a bug where Automatic Spam Purge Craft queue jobs would fail when using a database prefix.
4.1.152024-03-01
Added
- Added support for Automatic Spam Purging in the Lite edition of Freeform.
Changed
- Refactored the Submission Purge functionality to use the Craft queue.
Fixed
- Fixed a bug where the Fill Form Values from the GET Query String setting was not being respected.
4.1.142024-02-09
Fixed
- Fixed a bug where Dynamic Recipients fields were not correctly selecting the option chosen when viewing submissions in the CP detail page.
- Fixed a bug where the Field Manager would force
camelCase
without exceptions for field handles.
4.1.132023-11-23
Changed
- Updated all references to field names in the control panel and exported files to use the default field label as a fallback if the field label is blank in the form settings. To preserve legacy functionality, rendering forms on the front end will continue showing the field label blank.
4.1.12.12023-11-15
Fixed
- Fixed a bug where some Freeform widgets would error in the Craft dashboard due to a change in the previous version (4.1.12).
4.1.122023-11-09
Changed
- Updated GraphQL mutations to support multiple email marketing mailing list fields.
Fixed
- Fixed an issue where submission purge logic was not always working reliably.
- Fixed a bug where form heading Success and Error messages were not being escaped.
- Fixed a bug where removing a field from a form was not automatically removing it from any configured export profiles for that form.
4.1.112023-10-24
Changed
- Updated the GraphQL submission mutation to no longer require the custom header.
Fixed
- Fixed a bug where locales were not working correctly when using more than one Date & Time field in the same form.
4.1.102023-10-05
Changed
- Updated File Upload fields to be realigned with Craft's file kind/extensions defaults. Removed the custom Freeform MIME type checks.
- Updated existing feature announcement integrations to be visible to Admins only.
4.1.92023-09-29
Changed
- Updated the Salesforce integration to allow mapping to encrypted fields in Salesforce.
- Updated the Craft compatibility check in the Diagnostics page to include Craft 4.5.x.
Fixed
- Fixed a bug where hCaptcha was not working correctly.
4.1.82023-09-15
Changed
- Updated
stripe/stripe-php
dependency to align with Craft Commerce. - Updated the Stripe Payments integration to support mapping Phone field types.
4.1.72023-09-08
Added
- Added support for
.stl
files in the Freeform file helper validation.
Changed
- Updated the Pipedrive Leads integration to use the new Notes endpoint.
Fixed
- Fixed a bug where not all Stripe validation errors were accounted for and could cause the form to break.
- Fixed a bug where CRM integration errors were sometimes too long to be logged in Freeform. Updated the column size to resolve this.
4.1.62023-07-20
Added
- Exposed all remaining form settings/properties for GraphQL queries, including
successMessage
anderrorMessage
.
Changed
- Refactored the Freeform lock service to use Yii's cache to prevent performance issues.
Fixed
- Fixed issues with reCAPTCHA when querying forms via GraphQL.
4.1.52023-07-11
Added
- Added conditional rule logic for form fields in GraphQL.
4.1.42023-07-05
Added
- Added support for mapping to multiple groups/interests in the Mailchimp integration.
Fixed
- Fixed a bug where the element query was being executed before Craft was fully initialized.
4.1.32023-06-28
Fixed
- Fixed a bug where server-side field validation error messages were replaced with a GraphQL query error in production mode.
4.1.22023-06-26
Fixed
- Fixed a bug where forms using reCAPTCHA v2 Checkbox or hCaptcha Checkbox could behave incorrectly.
4.1.12023-06-22
Changed
- Updated the Diagnostics page to still show when the
allowAdminChanges
setting is set tofalse
.
Fixed
- Fixed a bug where the Submission Purge console commands were not working correctly.
- Fixed a bug where the Submission Purge feature was not removing associated Asset files as well.
- Fixed a bug where an error would occur when dynamically creating a sub-directory for file uploads upon submission of form.
4.1.02023-06-13
If currently using GraphQL and/or headless javascript frameworks such as Vue.js, Next.js, React JS, etc, please proceed carefully and test your forms thoroughly after updating.
Added
- Added support for GraphQL Mutations.
- Added interactive demos for Vue.js, React JS, and Next.js frameworks.
Changed
- Changed the way reCAPTCHA is handled in headless setups.
Deprecated
- Deprecated
FormInterface
for GraphQL. Please useFreeformFormInterface
instead. - Deprecated
FieldInterface
for GraphQL. Please useFreeformFieldInterface
instead. - Deprecated
PageInterface
for GraphQL. Please useFreeformPageInterface
instead. - Deprecated
RowInterface
for GraphQL. Please useFreeformRowInterface
instead. - Deprecated
OptionsInterface
for GraphQL. Please useFreeformOptionInterface
instead. - Deprecated
ScalesInterface
for GraphQL. Please useFreeformOpinionScaleInterface
instead. - Deprecated
KeyValueMapInterface
for GraphQL. Please useFreeformAttributeInterface
instead. - Deprecated
hash
andtimestamp
inFreeformHoneypotInterface
for GraphQL. Please do not use.
4.0.262023-06-12
Fixed
- Fixed a bug that could cause issues when using the JS Honeypot enhancement.
- Fixed a bug where an error would sometimes occur when opening the Diagnostics page.
4.0.252023-06-05
Fixed
- Fixed a bug where the Field Values Chart widget would error when attempting to add to the dashboard.
4.0.24.12023-05-18
Fixed
- Fixed a bug where an error would occur when attempting to submit a form that has the "Store Submission Data" setting disabled on sites using the Freeform 4.0.24 version.
4.0.242023-05-16
Added
- Added the ability to limit forms to be submitted once per email address only.
- Added a setting to the Mailchimp integration to allow choosing between appending existing Contact Tags with new ones when updating an existing contact.
Fixed
- Fixed a bug where attempting to Allow a spam submission for a Payment form would result in an error.
4.0.232023-04-28
Added
- Added the ability to map submission data to
postDate
andexpiryDate
for Craft Entries. - Added the ability to preparse Twig for the "Predefined Assets" setting in email notification templates. This allows for things like dynamically attaching an asset to the email notification based on a user's selection, etc.
Changed
- Updated Freeform template path settings to now include template folder autosuggestions.
Fixed
- Fixed a bug where the hidden input for File Upload Drag & Drop fields was not getting an ID attribute applied to it.
- Fixed some minor issues with demo templates.
4.0.222023-04-14
Added
- Added a "Floating Labels" basic formatting template. Ready-to-go and does not require any frameworks or toolkits.
- Added support for
dwg
,dxf
,stp
,step
,sia
mime types in Freeform's internal file validation helper.
Changed
- Overhauled and refreshed demo templates area. Easily try on a wide range of sample formatting templates for your forms, view submission data, check out advanced setups, etc.
Fixed
- Fixed a bug where the Submission and Spam Purge features were not always working correctly.
- Fixed a few minor styling issues in most of the sample formatting templates.
4.0.212023-03-29
Fixed
- Fixed a bug where the Honeypot could trigger an unserialization error in some cases.
4.0.202023-03-23
Changed
- Updated the JS Honeypot Enhancement feature to use the encrypted payload instead of PHP sessions when the 'Form Session Context' setting is 'Encrypted Payload'.
- Various improvements and adjustments to the Basic Light and Dark example formatting template examples.
Fixed
- Fixed a bug where the Constant Contact integration could timeout when connecting if there were too many lists.
4.0.192023-03-21
Added
- Added two basic formatting template examples (dark and light modes) that are self-contained and complete to be added to any page. Does not require any frameworks or toolkits.
- Added setup guides directly into API integration settings pages.
Changed
- Updated the
form_posted
cookie to only be created for users if a form uses a cookie check for limiting how many times a user can submit the form.
4.0.182023-03-10
Changed
- Addressed some minor Craft 4.4 compatibility issues in the control panel.
- Made some minor adjustments to the CP Submission detail view.
- Improved Dutch (NL) language translations.
Fixed
- Fixed a bug where the "Email Template" dropdowns in the form builder displayed both Database and File groups even if just one was selected.
4.0.172023-03-01
Added
- Added support for
.eps
files in the Freeform file helper validation. - Added support for
.webp
files in the Freeform file helper validation.
Changed
- Updated English and Dutch (NL) translations to include all missing items.
- Updated default Freeform formatting templates to no longer include
lineHeight
for Stripe fields. - Updated Signature field data to be included in exports.
Fixed
- Fixed a bug where many items were not translatable in the Freeform control panel.
- Fixed a bug where using "Database Tables" for session storage context would result in an error when submitting forms.
- Fixed a bug where some migrations and integrations could error when using Guzzle JSON calls.
4.0.162023-02-23
Fixed
- Fixed a bug where an erroneous database index existed for email marketing integrations that would sometimes cause an error.
4.0.152023-02-14
Added
- Added an example Conversational style formatting template that displays one field at a time and smoothly scrolls down to the next question until complete.
Fixed
- Fixed a bug where AJAX errors were not displaying correctly for Opinion Scale and Table fields.
4.0.142023-02-08
Fixed
- Fixed a bug where unfinalized files were not immediately being cleared upon successful submit of forms that are set not to store submission data.
- Fixed a bug where POST Forwarding was not being triggered when approving submissions in the Spam Folder.
- Fixed a bug where the
initHoneypot
function was triggering error warnings about premature initiation. - Fixed a bug where Multi-Select fields were missing some styles inside the form builder.
4.0.132023-01-26
Fixed
- Fixed a bug where single checkboxes were always being checked by default (as of 4.0.11).
- Fixed a bug where custom table attributes were firing on all element types.
4.0.122023-01-25
Added
- Added additional data to the AJAX submit response payload for multi-page forms.
- Added an example Bootstrap 5 formatting template that includes a preview/review of all fields across all pages.
4.0.112023-01-19
Fixed
- Fixed a bug where the opt-in data storage checkbox was not saving submission data when checked.
- Fixed a bug where Dynamic Recipient fields would not export with labels when the "Use Option Labels when Exporting" setting was enabled.
4.0.102023-01-17
Fixed
- Fixed a bug where the "Once per logged in Users only" option for duplicate checking wasn't preventing guests from submitting the form.
- Fixed a bug where extra returns were being inserted above H2s inside Rich Text fields (in the builder) when they were clicked on.
- Fixed a bug where deleting a spam submission from the CP detail view was not working.
4.0.92022-12-09
Added
- Added back Excel support for exporting submissions.
- Added
submissionLimitReached
to the Form object, allowing you to check if the user has already submitted the form when using the Limit Form Submission Rate setting (hide form and/or display an error message to the user instead of waiting until they attempt to submit the form).
Changed
- Updated to only load reCAPTCHA scripts when form(s) have reCAPTCHA enabled.
- Updated to support Craft's
sameSiteCookieValue
.
Fixed
- Fixed a bug where the Submissions/Spam CP index includes an "Edit Submission" option that isn't usable.
4.0.82022-11-21
Changed
- Refactored the submission delete process to use batching.
Fixed
- Fixed a bug where links to view/edit individual submissions in the CP disappeared in Craft 4.3.2+.
- Fixed a bug where the Freeform Form element field type was not sorting form options alphabetically.
- Fixed a bug where email notifications were sometimes not being fetched when fetched by handle.
- Fixed a bug where two sets of "set status" actions would appear in CP submissions index.
- Fixed a bug where fetching existing tags for the ActiveCampaign integration was not working correctly.
4.0.72022-10-25
Added
- Verified compatibility with Craft 4.3.
Fixed
- Fixed a bug where database notification templates were not being loaded properly in the form builder.
- Fixed a bug where a warning was output in the Craft logs when loading dashboard widgets.
- Fixed a bug where the "All Submissions" filter in Submissions and Spam Folder CP indexes would crash when there were more than 60 forms present.
4.0.62022-10-12
Added
- Added a "Floating Labels" version of the Bootstrap 5 example formatting template.
Fixed
- Fixed a bug where garbage collection was not working on Freeform submissions.
- Fixed a bug where the "Send Additional Notification" feature was not working correctly.
- Fixed a bug where searching
freeform.submissions
across multiple forms was not working correctly.
4.0.52022-10-05
Added
- Added success events for AJAX forms with
redirect-to-url
behavior.
Fixed
- Fixed a bug that would prevent some integrations with OAuth 2.0 from being able to authorize.
- Fixed a bug where the Email Template dropdown select in the form builder would not show all templates if using a mix of database and file templates.
- Fixed a bug where users could create file-based email notification templates in the form builder when the setting for it is disabled.
- Fixed a bug where using the
back
button in multi-page forms could potentially cause issues when using default browser validation.
4.0.42022-09-28
Added
- Added a setting to disable the creating and editing of File-based email notification templates.
Changed
- Updated the AJAX response payload to include posted values.
Fixed
- Fixed a bug where attempting to create a new status would not work.
- Fixed a bug where some field types would not correctly store updates with empty values in multi-page forms.
- Fixed a bug where users without permissions to Freeform could add Freeform widgets to the Craft dashboard.
- Fixed a bug where the
form
reserved keyword was being allowed for field handles.
4.0.32022-09-12
Changed
- Updated the Google Tag Manager event to include the AJAX response.
Fixed
- Fixed a race condition issue where loading values when editing an element would sometimes not work.
- Fixed a bug where duplicating forms could cause an error when more than one user group has permission to manage it.
- Fixed a bug where the Tailwind 3 sample formatting template was not including custom input attributes when rendering Select fields.
4.0.22022-08-24
Fixed
- Fixed a bug where non-latin characters were being allowed in field handles in the field manager area.
- Fixed a bug where predefined assets in email notifications showed a full file path instead of just the filename.
- Fixed a bug where multiple instances of the same form are added when moving the form instance around the DOM.
4.0.12022-08-23
Added
- Added a v3 version of the Tailwind example formatting template.
- Added a new version of the HubSpot API integration to address new Private App token requirement. This is a required change for any existing HubSpot users.
Changed
- Updated the Campaign third party plugin email marketing integration to use new
FormsService::createAndSubscribeContact
method.
Fixed
- Fixed a bug where attempting to sort submissions in the CP submissions index page was not working.
- Fixed a bug where non-latin characters were being allowed in field and form handles.
- Fixed a bug where attempting to view a related Freeform submission element in the slideout in another element could error.
- Fixed a bug where attempting to attach a Predefined Asset to an email notification template would give an Internal server error.
4.0.02022-08-05
This is a larger and more complex update than usual, and there's a higher chance of a failed update attempt happening. Please ensure you have a recent database backup, and we recommend you test the update on a local/staging environment before updating your production server. Please follow the Upgrading from Freeform 3.x guide.
Added
- Added compatibility with Craft 4.x.
- Added Export Email Notifications feature. Allows you to send exports as email notifications automatically.
- Added more information to email notification error logging. It now includes the email notification approach and the Email field name (if applicable) to track down where the issue is coming from.
- Added setting to have CSV exports use field handles for headings instead of field labels.
- Added support for permanently deleting soft-deleted submissions.
- Added
data-skip-html-reload
form attribute option to bypass HTML reload for AJAX forms (when not using render method). - Added
EVENT_GET_CUSTOM_PROPERTY
developer event, which lets you inject your own properties on forms to expand their application. - Added
EVENT_CONFIGURE_CORS
developer event, which lets you modify the CORS headers that will be sent with the request. - Added a check in the diagnostics, install welcome screen, and settings pages to alert users if the "Freeform Script Insert Type" setting will not work as Static URLs (and needs to be switched to Files).
- Added the ability to map Mailchimp Interests to a form field. Limited to finding and passing a single Interest based on first match within Interest names part of a List.
- Added support for date fields in the Campaign Monitor integration.
Changed
- Changed all existing forms with the Success Behavior setting set to No Effect to now be Reload Form with Success Message. This will behave somewhat similarly to old behavior, but will no longer automatically redirect to a different URL upon success. Please review all forms and set the desired behavior for each in the Success Behavior setting. If you wish to continue to override the behavior at template level, you can do that as well.
- Changed all sample formatting templates to include a library version number on them and also end with the
.twig
extension (e.g.foundation.html
is nowfoundation-6.twig
). Freeform 4 will automatically migrate all existing forms using sample formatting templates to use the new file names. You shouldn't need to change anything. Where this might become an issue is if you are using theformattingTemplate: 'template-name.html'
parameter at template level and relying on an older version of the sample template name. - Changed all sample formatting templates use
|t('freeform')
only (instead of a mix of|t
and|t('freeform')
). If you're using static translations on sample formatting templates, you'll need to movesite.php
translations over tofreeform.php
. - Changed the rendering of single checkboxes to now use the value set inside the form builder. No action should be necessary here. If you have a custom module in place to override this behavior, you can likely undo that now.
- Changed Email fields to no longer store data as an array. The migration will comb through your database and convert all values of Email field types (e.g.
["test@x.x"]
will becometest@x.x
). If you were relying on this feature to collect more than one email address, only the first email address will be kept (e.g.["a@x.x","b@x.x"]
will becomea@x.x
). No action is necessary here, but if you relied on this functionality, it is a breaking change with no alternative option currently (aside from adding multiple Email fields to your forms, one for each email address). If you have a custom module that is working around this in any way, you should be able to disable it now. - Updated newly created email notification templates' "From" email address and name to default to the newer way (via Project Config), e.g.
craft.app.projectConfig.get('email.fromEmail')
). If you are using the older approach in existing email notification templates, be sure to update them. - Changed the way form submission data is stored. A new table for each form is now created and updated rather than storing all forms' submission data in a single shared database table. This solves several issues, including running out of fields and paves the way for more exciting future improvements to the form builder. Fields are still global and available to every form. No action should be necessary by the admin, as Freeform includes a migration script that automatically converts the data to be split into multiple database tables. This process may take a little longer if you have a very large site.
- All Freeform fields are now stored as the
TEXT
MySQL type instead of a combination ofTEXT
,VARCHAR(100)
andVARCHAR(255)
. This is a change that is applied to all existing fields as well since they are recreated in the migration. No action should be necessary here. In the rare case where your site has some kind of customization that relies on a MySQL type other thanTEXT
, you may have to adjust the database manually. - Updated Dashboard, Forms listing and Survey & Polls dashboard to hide forms for users that do not have any form or submission access permissions to them.
- Switched over CP scripts to use local copies of external scripts.
- Upgraded the GraphQL interface calls to use the new Craft GraphQL API.
- Updated the "Use Return URL" success behavior to skip reloading the form (briefly) when using AJAX.
- Updated the sample formatting templates to include
ff-fieldtype-FIELDTYPE
classes to field-surrounding divs. - Updated
league/flysystem
,symfony/property-access
,symfony/finder
andsymfony/filesystem
dependency version requirements to resolve some conflicts.
Fixed
- Fixed a bug where POST Forwarding would still send through spammy submissions.
- Fixed a bug where the form builder tutorial would show an error if the
allowAdminChanges
setting was disabled. - Fixed a bug where Drag & Drop File Upload fields would not respect all site URL setups.
- Fixed a bug where users with permissions to Create New Forms would encounter issues in the New Form wizard modal.
- Fixed a bug where users without Create New Forms permission would see the New Form button in the CP Forms page.
- Fixed a bug where Number fields with a minimum value above
0
would still allow0
as a valid value. - Fixed a bug where an error could sometimes occur on the Form Behavior settings page.
- Fixed a bug with conditional Post Forwarding options check.
- Fixed a bug where the Drag & Drop File Upload field type was requiring a file to be selected even when hidden by the Conditional Rules feature.
- Fixed a bug where the predefined "Yesterday" option for Export Profiles returned yesterday 0:00 until now instead of yesterday 0:00 to 23:59.
- Fixed a bug where the form builder would not show an error message when creating a new notification template if the email notification template directory path was not set.
- Fixed a bug where the Save & Continue Later field was not available in GraphQL schema.
- Fixed a bug where Dynamic Recipient fields would still send email notifications while hidden via Conditional Rules.
- Fixed a bug where uploaded file attachments in email notifications showed a full file path instead of just the filename.
- Fixed a bug where Stripe subscription plan names could possibly show up blank if no price plan description was provided. If so, Freeform will now autogenerate plan names.
- Fixed a bug where the form builder didn't warn that
author
is a reserved handle name. - Adjusted the NL translation word for
any
in the conditional rules feature. - Fixed a bug where incorrectly including a twig file in the Success Template Directory path would break settings and form builder.
- Fixed a bug where the Stripe Payments integration could be causing a customer as well as guest account in Stripe for the same transaction.
- Fixed a bug where credit card numbers were not showing up in Stripe's payment methods for customer accounts.
Security
- Addressed some potential XSS vulnerabilities.
Removed
- Removed the old Pardot CRM and Constant Contact email marketing API integrations. Please switch to the newer Pardot and Constant Contact integrations if you haven't already, and delete the old legacy ones before upgrading to Freeform 4.
- Removed the
phpoffice/phpspreadsheet
dependency to prevent install conflicts. Excel exporting inside Freeform is temporarily disabled until a new library is implemented. - Removed the
league/flysystem
dependency as it is not needed.