- Added “User” column to submissions index.
- Added
EVENT_MODIFY_FORM
to Sprout Forms/Freeform migrations. - Added
EVENT_MODIFY_NOTIFICATION
to Sprout Forms/Freeform migrations. - Added
EVENT_MODIFY_SUBMISSION
to Sprout Forms/Freeform migrations. - Allow table field column headings to contain markdown.
- Allow table field column headings to be site-translated.
- Change behavior for multi-page ajax forms to reset to the first page on success (when showing a message).
- Update
EVENT_MODIFY_FIELD
for Sprout Forms/Freeform migrations. - For ajax-enabled forms, clicking on tabs (on the front-end) now navigates directly to that page.
- Allow text field-based field settings to have more height in the form builder.
- Update default “Contact Form” stencil to have instructions show “Above Input”.
- Update default instructions position to “Above Input”.
- Update
<th>
styles for front-end table fields.
- Fixed an error when trying to submit an ajax-enabled form again, without refreshing the page.
- Fixed editing an incomplete submission on the front-end, not completing after final submission.
- Fixed
includeInEmail
,enableContentEncryption
andenableConditions
GraphQL type definitions. - Fixed date and time fields within Table not working correctly.
- Fixed
formie_relations
db table not being removed on uninstall. - Fixed a potential PHP error when trying to find the current page index for a form.
- Fixed SproutForms migration not including field instructions.
- Fixed focus state borders for tabs in the control panel.
- Fixed layout issue for conditions builder with very long field names.
- Fixed current page not persisting when clicking on a tab for an ajax form.
- Fixed new rows for table fields not rendering correctly.
- Fixed some JS errors in the form builder when editing a table field.
- Fixed JS warning in form builder when editing field conditions.
- Fixed variable tag fields not displaying correctly when long text is provided.
- Fixed variable-picker not displaying options correctly if supplied with long field names.
- Fixed instructions showing multiple times for element fields.
- Fixed instructions showing multiple times for recipients field checkboxes.
- Fixed table field instructions position.
- Fixed not being able to search forms via their handle in the control panel.
- Fixed an error when sending a test notification, with for notifications with long subjects.
- Fixed an error with submissions widget when using custom date ranges.
- Fixed non-calendar date fields incorrectly storing timezone information.
- Fixed non-calendar date-only fields incorrectly storing current time information.
- Fixed showing a single row for table field preview in the form builder, when no defaults set.
- Fixed not showing minimum rows for table field preview in the form builder.
- Fixed table field containing invalid extra data, due to Vue3 compatibility change.
- Fixed repeater field containing invalid extra data, due to Vue3 compatibility change.
- Fixed date field email incorrectly using timezone information.
- Fixed non-calendar date fields not producing correct email content values.
- Fixed conditions builder not being able to pick values for certain fields (dropdown, radio, checkboxes) when they were in a Group field.
- Added
EVENT_BEFORE_SUBMISSION_REQUEST
.
- Updated Date field to show Time field for a calendar view, only if opting-in to Flatpickr (which includes it).
- Disabled autocomplete on Date fields in “Calendar” view, which obscures the date picker.
- Removed additional time field when “Calendar” is picked for a Date field.
- Updated Google Sheet instructions.
- Updated “Proxy Redirect URI” docs URL.
- Fixed plugin-disabled fields not working correctly, once they’ve been disabled (being unable to re-enable).
- Fixed Date field values not saving correctly when using “Calendar”.
- Fixed empty
formie.yaml
file being created on project config rebuild events.
- Added
mergeUserGroups
option for User element integrations to allow merging of existing user groups, if updating an existing user. - Added “Interest Categories” support for Mailchimp integration.
- Added
disabledFields
plugin setting to control any globally disabled fields for the form builder.
- Changed
limit
tolimitOptions
for element fields, to allow for both limiting the options available in fields, but also how many can be selected.
- Fixed being unable to fetch submission fields directly via
submission.fieldLayout.getField(fieldHandle)
. - Fixed multi-line text fields not showing its field label when using “All Fields” in email notifications.
- Fixed some errors thrown in Freeform migration due to unsupported fields.
- Added
includeInEmail
,enableConditions
,conditions
,enableContentEncryption
,visibility
to FieldInterface for GraphQL. - Added “Spam Reason” and “IP Address” to available columns when viewing submissions in the control panel.
- Fixed potentially fetching the incorrect form for a submission, in some cases.
- Fixed an error when saving a submission through the control panel.
- Fixed fatal errors when installing from a fresh install.
{warning} Please read through the Breaking Changes before updating.
- Added field conditions, to conditionally show/hide fields according to your logic.
- Added page button conditions, to conditionally show/hide next button according to your logic.
- Added page conditions, to conditionally show/hide page according to your logic.
- Added all-new page settings manager for form builder. Allows for more settings and flexibility going forward.
- Added “Min Date” and “Max Date” options for Date fields.
- Added “Enable Content Encryption” setting on Address, Email, Hidden, Multi-Line Text, Name, Phone, Recipients and Single-Line Text fields. This will encrypt submission content in the database, preventing human-readable data for sensitive fields.
- Added “Unique Value” to Email field, to control users filling out a form only once.
- Added “Visibility” setting to all fields. Allows you to set any field to hidden, or exclude from rendering. Visibly disabled fields can still have their content set through your templates with
craft.formie.populateFormValues()
, but the benefit is this content is not exposed in front-end templates. - Added “Predefined Options” to Checkboxes, Radio and Dropdown fields. Select from 25 predefined options, or provide your own through events.
- Added “Bulk Insert” to Checkboxes, Radio and Dropdown fields.
- Added “Recent Submissions” dashboard widget. Provides table, pie or line charts of recent submissions for a provided date range.
- Added
System Name
to available variables for variable picker.
- Formie now requires Craft 3.6+.
- Date fields can now use Flatpickr.js when rendered as a calendar.
- Date fields can now content-manage their date and time format.
- Rename
field->getIsVisible()
tofield->getIsHidden()
. - Change syntax for populating element fields, when using
populateFormValues()
. - Removed duplicate “Pre-populate” field settings for Hidden fields
- Fixed JS errors showing in form builder error alert.
- Fixed page errors not showing on page labels in the control panel form builder.
- Fixed page models being re-created after saving the form multiple times.
- Fixed form page and row IDs being stripped upon failed validation in the form builder.
- Fixed potential issue with table input in form builder, when rows don't have proper IDs.
- Fixed page settings getting re-created unnecessarily.
- Fixed clicking on page tabs on the front-end not working correctly.
- Fixed an incompatibility with PHP 8.
- Fixed reCAPTCHA v2 Checkbox working incorrectly for Ajax-based, multi-page forms with client-side validation enabled.
- Fixed escaping HTML in rich text field for email notifications.
- Fixed an error with empty Date fields, when formatted as inputs.
- Fixed an error with Hidden fields using “Query Parameter” and an empty string as a value.
- Fixed Checkboxes fields outputting all options in email notifications.
- Removed
craft.formie.getVisibleFields()
.
- If you use
craft.formie.populateFormValues()
in your templates to populate element fields, please note the changed syntax via the docs. This has changed fromentriesField: craft.entries.id(123)
toentriesField: [123]
.
- Added extra error-catching to send notification queue job.
- Added
resave/formie-submissions
andresave/formie-forms
console commands.
- Update translation strings.
- Fixed
completeSubmission
buttons not working correctly with client-side validation enabled. - Fixed an error when un-registering fieldtypes.
- Fixed lack of redirect support for Page Reload forms, when
completeSubmission
is used. - Fixed auto-handle generation for forms and fields producing incorrect values when starting with a number.
- Fixed missing
type
attribute on form fields. - Fixed form builder fields having their IDs stripped from requests, when validation fails, causing sync issues.
- Fixed Group or Repeater nested fields not getting unique handles.
- Fixed Rich rich text link editing not working.
- Fixed CC and BCC showing emails incorrectly for email notification previews.
- Fixed heading showing field label in edit submissions in control panel.
- Fixed Heading, HTML and Section fields appearing in exports as columns.
- Fixed being unable to select site-specific entries for “Redirect Entry”.
- Fixed Sendinblue email marketing integration throwing an error when only email address is mapped.
- Added
autocomplete
option to Address field, for use in GraphQL. - Added payload info to integration logging.
- Added
FormIntegrationsInterface
for GraphQL, to return information of integrations for a form. - Added
notification
andsubmission
properties toEmails::EVENT_AFTER_SEND_MAIL
. - Added
siteId
as a mappable attributes for entry element integrations. - Added support for entry element integrations to have the entry
siteId
attribute set to the same site the submission is made on, by default.
- Improve element integration error logging.
- Disable Section and HTML fields from being able to be used in integration mapping (they do nothing).
- Fixed incorrect validation message for Time field in Date field, complaining about 24-hour values.
- Fixed Time field for Date fields incorrectly converting time values to site timezone.
- Fixed multi-line fields with rich text set, not rendering raw HTML in email notifications.
- Fixed Phone field values potentially returning an invalid value, when no value provided.
- Fixed an error (not firing) for a failed submission through GraphQL mutations.
- Fixed GraphQL mutations permissions for submissions.
- Fixed entry element integration not working correctly for entry types with dynamic title.
- Fixed an error when trying to parse Checkboxes and Multi-Dropdown fields for spam-checks.
- Fixed error when trying to output Checkboxes and Multi-Dropdown fields in email notifications.
- Added “Ajax Submission Timeout” form setting to control the timeout for the XHR request, for Ajax-based forms, using the Theme JS.
- Fixed Agile CRM integration not updating existing contacts correctly.
- Fixed Sendinblue integration not subscribing users to the chosen list.
- Fixed an error when saving a submission in the control panel with a user with restricted permissions.
- Refactor JavaScript captcha for more error-handling, support for cached forms and removal of inline
<script>
tags.
- Fixed Date fields throwing an error when the default date set to "None" and rendering inputs or a dropdown.
- Fixed Date fields always selecting the first option in the list, when set to dropdown.
- Fixed JavaScript captcha outputting inline
<script>
tags. - Fixed JavaScript captcha throwing a "modified form" browser warning.
- Fixed form settings not updating when using Blitz caching.
- Fixed element fields restricting values to only the default value.
- Added
modifyPrefixOptions
event for name fields. - Added
Mx.
to name field prefixes. - Allow the
<form>
element to defined theaction
andmethod
settings of Ajax requests, and fix POST-ing to site roots with redirects configured.
- Fixed
redirectUrl
not working correctly when usingform.setSettings()
in your templates for Ajax forms. - Fixed the default template in the control panel (when clicking on “Formie” in the CP nav) throwing an error when trying to load a page the user doesn’t have access to.
- Fixed Sent Notification preview column throwing an error in the control panel.
- Fixed being unable to save a submission in the control panel, when specific form permissions were set.
- Fixed an error when rendering elements fields as checkboxes.
- Cleanup uninstall, fix an error during uninstall, fix not deleting submissions and forms on uninstall.
- Fixed Categories fields not populating their value correctly when
limit
was also set. - Fixed Entries fields not populating their value correctly when
limit
was also set. - Fixed Products fields not populating their value correctly when
limit
was also set. - Fixed Tags fields not populating their value correctly when
limit
was also set. - Fixed Users fields not populating their value correctly when
limit
was also set. - Fixed Variants fields not populating their value correctly when
limit
was also set.
- Added “ID” to available submissions index columns.
- Added “ID” to available forms index columns.
- Added “Submission ID” to the edit page for submissions.
- Added “Form Name” to integration mapping and email notification condition variable pickers.
- Added setting to Hidden field to include or exclude their content in email notifications.
- Added “All Visible Fields” options to email notifications, outputting field content only for fields that are visible.
- Added
EVENT_AFTER_SUBMISSION_REQUEST
. - Added support for querying and mutating Group and Repeater fields for GraphQL.
- Added support for updating entries for Entry integration.
- Added support for updating users for User integration.
- Added support for creating a new draft for Entry element integration.
- Update default submission titles to
D, d M Y H:i:s
(eg, “Thu, 04 Mar 2021 10:50:16”). - Date fields can now use Flatpickr.js when rendered as a calendar.
- Minor performance improvement when submitting submissions, when no custom title format is set.
- Rename
field->getIsVisible()
tofield->getIsHidden()
. - Change syntax for populating element fields, when using
populateFormValues()
.
- Fixed Number field not having the correct type for GraphQL queries.
- Fixed an error with HubSpot CRM, when mapping a field to the Tracking ID for forms.
- Fixed Date field not having the correct type for GraphQL queries.
- Fixed reCAPTCHA placeholders not being found for custom-templated forms that have no pages containers.
- Fixed custom submission titles not working correctly when using submission attributes (namely submission ID).
- Fixed Sent Notifications index not ordering by descending by default.
- Fixed multi-line text fields not having their content passed through
nl2br
in email notifications. - Fixed address fields not showing the correct preview in the control panel when “Auto-complete” was enabled.
- Fixed element integrations incorrectly mapping fields and attributes when no value supplied.
- Fixed fields not having their
formId
attribute set correctly. - Fixed GQL errors when querying subfields inside group/repeater fields.
- Fixed “Reply To” setting for email notifications not being properly parsed for environment variables.
- Fixed email parsing error for email notifications in rare circumstances (where an env variable contained spaces).
- Removed
craft.formie.getVisibleFields()
.
- Updated front-end JS to catch ajax-based forms network errors and timeouts.
- Fixed toggling checkboxes triggering required states, when the field wasn’t required at all.
- Removed
siteRootUrl
for included JS, causing issues with JS form submissions on some sites, where cross-domain issues arise. Rely onsiteId
param to determine current site.. - Fixed an error with HTML field when “HTML Content” was empty.
- Fixed Name, Address and Date fields not applying an
id
attribute of legends for accessibility. - Ensure all front-end field legends output, even when hidden (using
fui-sr-only
) for accessibility.
- Added logging to submit action, capturing form content immediately and saving to logs.
- Allow both 0.3.0 and 0.4.0 guzzlehttp/oauth-subscriber. (thanks @verbeeksteven).
- Fixed sub-fields (Name, Address, etc) not working for pre-populating values.
- Fixed value of checkbox fields for integrations when mapping to a plain text field. Field values are now sent as comma-separated.
- Fixed InfusionSoft sending incorrect Phone Number payload values. (thanks @dubcanada).
- Fixed submission error logs not saving log information for ajax forms.
- Fixed Salesforce duplicate leads throwing an error.
- Added
populateFormValues
GraphQL argument to pass options intotemplateHtml
render function. (thanks @jaydensmith). - Added
options
GraphQL argument to pass options intotemplateHtml
render function. (thanks @jaydensmith).
- Fixed validation error for new Email Address fields, introduced in 1.3.19.
- Added support for
populateFormValues
to Group fields. - Added support for
populateFormValues
to Repeater fields. - Added “Order By” setting for all element fields to control the order options are rendered by.
- Added Checkbox Toggle to Checkboxes fields, providing the ability to toggle all checkbox fields at once.
- Added “Usage Count” column to Forms, to show the number of elements relating to each form.
- Added “Validate Domain (DNS)” setting for email address fields.
- Added “Blocked Domains” setting for email address fields.
- Added tags to Agile CRM integration. (thanks @jaydensmith).
- Fixed element fields not rendering correctly in email notifications, when including a single field token.
- Fixed “Resend” button when editing a sent notification.
- Fixed provider errors for all integrations getting truncated text.
- Fixed potential issue with
siteRootUrl
on site setups with redirects setup to include trailing slashes in URLs. - Fixed a HubSpot integration form error when some context values (IP) isn’t always available.
- Fixed “Save as a new Form” not generating a nice, sequential handle.
- Fixed an issue where a failed “Save as new form” would retain the incorrect form settings.
- Fixed form errors not showing full error text in control panel.
- Fixed Repeater and Group field styling when editing a submission in the control panel.
- Fixed JavaScript captcha when using template caching not working.
- Added support for HubSpot form integration.
- Added opt-in field support to all CRM integrations.
- Added support for field options defined in HubSpot (for dropdown, select, etc).
- Added custom field support for Sendinblue integration.
- Added
Min File Size
setting for File Upload fields. - Added support for global variables in Spam Keywords.
- Update some email marketing integrations to fetch custom list fields more efficiently.
- Prevent email notifications sending 0kb file uploads. This can lead to spam filters marking the email as invalid.
- Fixed "minutes" to be given a retention length. (thanks @nickdunn).
- Fixed
endpoint
andmethod
properties missing fromSendIntegrationPayloadEvent
for Email Marketing and CRM integrations. - Fixed nested fields (Group, Repeater) not having inner field JS initialized properly.
- Fixed spam checks for some field types.
- Fixed tag fields throwing an error when set to “dropdown” and editing a submission.
- Fixed case insensitivity (not working) for spam keywords.
- Fixed multiple fields with JS config not initialising correctly.
- Fixed Group or Repeater nested fields not getting unqiue handles when cloning.
- Fixed Repeater fields not having their inner fields’ JS initialized properly.
- Fixed some fields (Element, Repeater, Group) not extracting content for spam keyword checks.
- Fixed submission success messages including submission content not working.
- Fixed existing fields not appearing for the form builder.
- Fixed some fields (plain text and other simple fields) not having their labels correctly translated for email notifications.
- Added better caching to
getParsedValue
, which fix a few rare issues with field rendering stale content. - Allow
formieInclude()
to allow multiple templates (array syntax) to be passed in to be resolve. - Added support for Integration settings for Stencils.
- Added support for paginated lists for Sendinblue integration.
- Added error logging for email delivery.
- Added ability to set the default value for all Element fields.
- Added checkboxes and radio button display types for Element fields.
- Added support to Element fields to customise the content used for labels, instead of just title.
- Added
submission
toSubmission::EVENT_DEFINE_RULES
event. - Added Tracking, Account and Campaign IDs to SharpSpring CRM integration.
- Added
configJson
andtemplateHtml
to FormInterface for GraphQL. - Added
ModifyFormRenderOptionsEvent
. (thanks @jaydensmith). - Added
getIsTextInput
method to Phone field. (thanks @jaydensmith). - Added
formConfig
to theinitForm()
JS function to provide an object with the form config, rather than rely on the DOM to set it (usingsetAttribute('data-config’)
).
- Changed
Field::getEmailHtml()
to require a notification model. - Any globally-enabled captchas will be automatically enabled on new forms.
- Any globally-enabled captchas will be automatically enabled on new stencils.
- Fixed an error for email notifications if its conditions contained an element field, set to
contains
as a condition. - Fixed Variant field not providing data to integrations correctly.
- Fixed Categories field not providing data to integrations correctly.
- Fixed Entries field not providing data to integrations correctly.
- Fixed File Upload field not providing data to integrations correctly.
- Fixed Products field not providing data to integrations correctly.
- Fixed Tags field not providing data to integrations correctly.
- Fixed Users field not providing data to integrations correctly.
- Fixed email notification conditions not properly testing against element field values (entries, categories, etc).
- Fixed checkbox and radio fields having JS validation checks bound multiple times in a form.
- Fixed checkbox fields producing multiple errors.
- Fixed some reCAPTCHA plugin settings not saving correctly.
- Fixed reCAPTCHA not initializing when the surrounding form was initially hidden (for example, in a modal).
- Fixed multiple forms on a single page not having their associated field JS initialized properly.
- Fixed migration error for Postgres.
- Fixed security warnings of using
eval()
in front-end JS, despite it being safe to call. - Fixed edit field button in control panel sizing being too small.
- Fixed assuming
TEMPLATE_MODE_SITE
when rendering templates for forms, pages and fields. - Fixed template conditional that could cause the form to be hidden if “Hide Form” was set, but “Action on Submit” was set to “Display a message”.
- Fixed a JS error with some fields (address auto-complete, multi-line) in some instances.
- Fixed minor
e.g.
typo for stencils. - Fixed
getValue
method on BaseOptionsField not returning correctly. (thanks @javangriff).
- Fix an error with
ModifyFieldValueForIntegrationEvent
.
- Added autocomplete value to Address field in email templates.
- Added
SubmissionExport::EVENT_MODIFY_FIELD_EXPORT
to allow modification of values for fields when exporting submissions. - Added
Submission::EVENT_MODIFY_FIELD_VALUE_FOR_INTEGRATION
to allow modification of submission field values before they’re used in Integrations. - Added
minutes
as an option for submission data retention. - Added more feedback for garbage-collection tasks when run directly from the CLI.
- Fixed an error when creating new email templates in an empty directory.
- Fixed email and form templates not retaining “Copy Templates” value after validation.
- Fixed Users field not setting “All users” as default sources when creating a new field.
- Fixed Variant field not exporting correctly.
- Fixed Users field not exporting correctly.
- Fixed Tags field not exporting correctly.
- Fixed Products field not exporting correctly.
- Fixed File Upload field not exporting correctly.
- Fixed Entries field not exporting correctly.
- Fixed Categories field not exporting correctly.
- Fixed Checkboxes field not exporting correctly.
- Fixed Agree field not exporting correctly.
- Fixed an error when trying to delete submissions from the CLI.
- Fixed an error when disconnecting an OAuth-based integration.
- Fixed Salesforce and Zoho CRM integrations not persisting values returned from provider authentication.
- Ensure error message is logged for failed pruning of submission tasks.
- Added more logging info for email notifications, when failed to send.
- Fixed an error when viewing sent notifications, when the submission was deleted.
- Fixed some errors for sent notifications for a deleted submission or form.
- Fixed Zoho integration where the authentication response didn’t contain the required
api_domain
. - Fixed Salesforce integration where the authentication response didn’t contain the required
instance_url
. - Fixed failed email notifications not showing the full error in the control panel, when running email notifications via queues.
- Add
completeSubmission
param to forms, to allow providing a full payload and complete the submission.
- Saving spam submissions is now enabled by default.
- Agree field description static translation is now defined in
site.php
.
- Fixed IE11 compatibility with some front-end fields (Address, Phone, Repeater).
- Fixed hidden fields not having input attributes setting.
- Fixed description for Agree field being translated twice.
- Fixed error in Craft 3.6+.
- Fixed submissions failing if
spamKeywords
setting was invalid. - Fixed error when querying form settings using GraphQL
- Added support to Mailchimp integration for tags.
- Fixed an error with Webhook integrations.
- Added support for selecting existing notifications from stencils, when adding a notification to a form.
- Added support for Webhook integration URLs to contain submission variables through shorthand Twig.
- Added support for Freeform and Sprout Form migrations to be run when
allowAdminChanges = false
.
- Fixed existing notifications not appearing when editing a stencil.
- Fixed some potential errors with Sprout Forms migration and address/name fields.
- Fixed Freeform migration not migrating fields correctly.
- Fixed Sprout Forms migration not migrating fields correctly.
- Fixed Sprout Forms migration for Agree field, where the message description would be blank.
- Fixed Sprout Forms migration for File Upload field, where the selected volume wasn’t migrated.
- Fixed Sprout Forms migration for Categories, Entries, Tags and User fields, not setting the
selectionLabel
to theplaceholder
value. - Fixed some potential errors with Sprout Forms migration and phone fields.
- Fixed “Save as Stencil” not saving data correctly, by not stripping out page, row and field IDs.
- Added a ‘pageIndex’ param to the submit action. (thanks @joshuabaker).
- Added pagination-helper for ActiveCampaign integrations. The integration will now automatically fetch greater-than 100 resources such as lists.
- Changed ActiveCampaign integrations to fetch at least 100 of each resource.
- Fixed deprecation notice for Repeater field. (thanks @danieladarve).
- Fixed ajax forms not redirecting correctly, when overriding
redirectUrl
in templates. - Fixed HTML field not parsing Twig content in some instances.
- Fixed Entry mapping throwing an error when setting the author to an Entry field.
- Fixed ActiveCampaign integration not showing connection status correctly.
- Fixed sub-fields (Name, Address, Phone) not having their values concatenated for integrations, when not selecting a sub-field.
- File Upload fields now show a summary of uploaded files for multi-page forms. When navigating back to a page with the field, you'll see this summary.
- Ajax-enabled multi-page forms now smooth-scrolls to the top of the loaded page when going to the previous or next pages.
- Front-end validation now adds a
fui-error
class on thefui-field
element, when a validation error occurs, instead of just on the input.
- Fixed an error when using checkboxes in email notification conditions.
- Fixed a potential error when viewing a submission in the control panel.
- Fixed Address field auto-complete value not persisting on front-end submissions.
- Fixed being unable to set the
siteId
of submissions through GraphQL. - Fixed submissions not being able to be mutated through GraphQL for non-public schemas.
- Fixed Group and Repeater fields not saving content correctly for non-primary sites.
- Fixed flicker in Safari for the form builder, when hovering over draggable elements.
- Fixed Phone field exporting not formatting international phone numbers correctly.
- Fixed Phone field not always remembering the country dial code selected.
- Fixed Phone field triggering content change warnings for country-enabled fields. This was due to numbers being formatted on-load..
- Added support for Gatsby Source Plugin and Form elements.
- Added support for Gatsby Source Plugin and Submission elements.
- Added support to set the
formId
for a form. This is used as the unique identifier for theid
attribute and connection JS to the form.
- User element integrations now clear any field content mapped to the password field, once the user element is created.
- Fixed name and address fields not showing content in columns, when editing a submission in the control panel.
- Fixed some fields (checkboxes) throwing errors in email notifications.
- Fixed non-multiple name field causing an error in email notifications.
- Fixed non-utf8 characters in email notification email values causing errors.
- Fixed email notification logging message to properly include the template it tried to resolve.
- Added “Country Code” to Phone model, allowing the raw country code (eg “+1”) to be used in email notifications and submissions for a Phone field
- Added
form.setFieldSettings()
function to provide render-time overrides to form fields and their settings.
- Change email notification variable output to only contain the value for the field, instead of including the field label/name.
- Fixed default stencil’s “To” and “Reply To” variable fields not being correct.
- Fixed email notification preview not working for stencils
- Fixed form templates with custom template path not saving correctly
- Fixed JavaScript captcha not working correctly for multiple instances of the same form on a page.
- Fixed an error with the HTML field
- Fixed server-side validation errors with Phone field
- Fixed phone numbers not being created as international numbers, when previewing an email notification
- Fixed Agile CRM mapping email, website and phone to contacts.
- Fixed deleting a submission via GraphQL not returning the correct success/fail state.
- Fixed deleting a submission via GraphQL not working for non-default sites.
- Fixed element integrations not having their error messages translated correctly (and not containing the required logging detail).
- Added ability to provide htmlpurifier config JSON files for HTML fields.
- Added
ModifyPurifierConfigEvent
. - Added Agile CRM integration.
- Added Copper CRM integration.
- Added Capsule CRM integration.
- Added all global sets into variable-enabled fields.
- Improve performance for very large forms and fields.
- Fixed an error when viewing a trashed submission, with custom fields selected in columns.
- Fixed no captchas appearing in plugin settings.
- Fixed potential error thrown, when trying to catch other errors during older updates.
- Fixed Oauth-based integrations not allowing connection when
'allowAdminChanges' => false
. - Fixed an error with the recipients field.
- Fixed form permissions not always being run for new forms.
- Fixed “Save as a new form” not working in some cases.
- Fixed multi-page form submissions incorrectly validating fields when going back to a previous page.
- Fixed some fields not displaying correctly in notification emails.
- Fixed sent notifications not always showing the HTML body content.
- Fixed form and email templates not resolving to single template files correctly.
- Fixed an error when trying to delete a submission using GraphQL.
- Added
formie.cp.submissions.edit
template hook. - Added
formie.cp.submissions.edit.content
template hook. - Added
formie.cp.submissions.edit.details
|template hook. - Added
formie.cp.sentNotifications.edit
template hook. - Added
formie.cp.sentNotifications.edit.content
template hook. - Added
formie.cp.sentNotifications.edit.details
template hook. - Update Autopilot integration to include more default fields and fix list-subscribing.
- Added ability to add soft line-breaks to email notifications and other rich-text enable fields.
- Pages now have a unique ID, inherited from the form’s
formId
.
- Fixed rendering the same form multiple times on a page not working correctly.
- Fixed “Unknown Integration” error message when trying to connect an integration with
allowAdminChanges = false
. - Fixed captcha settings resetting when saving plugin settings.
- Fixed the
siteRootUrl
to trim the trailing slash if present. This is an issue on some systems (Servd) where URLs with a trailing slash are redirected. - Fixed field/notification edit modals not getting properly reset when hidden.
- Fixed HTML field errors when the vendor folder didn’t have write permissions (such as Servd).
{warning} If you are overriding templates for
field.html
, you must update your template to includedata-field-config="{{ field.getConfigJson(form) | json_encode | raw }}"
. This is the new and improved method for fields to define their config settings, picked up by JavaScript classes. Without making this change, field JS will not work. Refer to this commit change.
- Added
defaultState
for GraphQL queries for Agree fields. This replacesdefaultValue
. - Added
defaultDate
for GraphQL queries for Date fields. This replacesdefaultValue
. - Added “Current URL” to hidden field default value options.
- Added
data-field-config
attribute to all fields that require JS. - Added
getConfigJson()
for all fields to define settings for JS modules.
- Formie now requires Craft 3.5+.
- Form queries via GraphQL are now no longer automatically included in the public schema.
- Submission queries via GraphQL are now no longer automatically included in the public schema.
- Submission mutations via GraphQL are now no longer automatically included in the public schema.
- When (soft) deleting a form, any submissions will also be (soft) deleted. These are also restored if the form is restored.
- Refactor JS behaviour for fields that require it. We now use a
data-field-config
attribute on the field to store JS module settings. This is then initialized once the JS has been lazy-loaded. This allows us to split configuration from initialization and may also help with custom JS. - Renamed
Field::getFrontEndJsVariables()
toField::getFrontEndJsModules()
. - Improve handling of multi-page non-ajax forms, where some fields required JS. Formie now detects what JS needs to be used for the current page for a page-reload form, or the entire form for an ajax form.
- Improve field JS to stop relying on IDs or classes to hook into field functionality. It now determines this through
data-field-config
attribute on the field wrapper element. This should allow for greater template flexibility. - Submissions now make use of the same JS/CSS code that the front-end does.
- Fixed errors when garbage collection is called for sent notifications.
- Fixed when deleting a form, the submissions for that form weren't also deleted.
- Fixed an error when trying to view a submission on a deleted form.
- Fixed some GraphQL attributes not being cast to the correct type.
- Fixed some GraphQL errors for some fields.
- Fixed an error when trying to permanently delete a form.
- Fixed an error with date field using a default value.
- Fixed console error for multi-page non-ajax forms containing a phone field.
- Fixed repeater and group fields not initializing their inner fields’ JS.
- Fixed JS module code for fields being loaded multiple times when initially loading the page.
- Fixed an error for address providers when used in a Repeater field.
- Fixed address providers not checking if their provider JS is loaded correctly, in some instances.
- Fixed multi-line rich text fields loading Font Awesome multiple times.
- Fixed checkbox/radio fields not validation correctly inside a Repeater field.
- Fixed warnings/errors for JS fields, where their inputs might not exist on a page.
- Fixed Algolia Places not working correctly.
- Fixed issue where multiple ajax-based forms on a single page would have validation triggered across all forms.
- Fixed incorrect error being shown when custom server-side errors for fields are defined.
- Fixed an error when an email notification's sender email wasn't properly filtered.
- Fixed incorrect output in email notifications when using date fields.
- Added support for using the submission ID, Title and Status in notification conditions.
- Fixed notification conditions not saving correctly when a field with options (dropdown, etc) was selected.
- Fixed “Submission Message” and “Error Message Position” form message parsing HTML incorrectly in some cases.
- Fixed agree field description parsing HTML incorrectly in some cases.
- Fix an error when editing stencils.
- Fix minor error handling for GQL mutations.
- Allow field type classes to provide their own GQL attribute mappings for attributes.
- Fixed Ajax submissions not resolving to the correct current site when using sub-directories for sites, causing translation issues.
- Fixed agree field description not translating correctly.
- Fixed error when querying
allowedKinds
as an attribute on a file upload field with GQL. - Fixed lack of server-side email validation for email fields.
- Added Sent Notifications section, providing information on sent email notifications. Each Sent Notification contains delivery information and the ability to preview what was sent.
- Added resend Sent Notifications, allowing you to either resend the notification to their original recipients or nominated new ones.
- Added bulk resend Sent Notifications, either to their original recipients or nominated new ones.
- Added support for default field values to contain variable tags for autofilling user info.
- Added pre-populate setting to fields, allowing you to specify a query string param to pre-populate the field with a value.
- Added conditions to notifications. Build complex conditional rules on when to send (or not send) email notifications.
- Added better support for countries in Phone fields, now with a nicer UI for the front-end.
- Added country flags and international/national validation to Phone fields.
- Added new MultiSelect Vue component, for use in custom field schema settings.
- Added ability to control whether form submissions are stored permanently or not.
- Added settings for form submission data retention for hours, days, weeks, months and years.
- Added indicator when editing a submission when it's associated with a user.
- Added
submission->getUser()
. - Added support for when deleted a user, any submissions associated to them can be transferred to another user, or deleted.
- Added when deleting a user, a summary of their submissions (if any) is shown in the prompt.
- Added support for when restoring a deleted user, we restore any associated submissions.
- Added settings for form submission data retention for uploaded files.
- Added
maxSentNotificationsAge
plugin setting to control sent notification pruning. - Added
formie/gc/delete-orphaned-fields
console command. - Added
formie/gc/prune-syncs
console command. - Added
formie/gc/prune-incomplete-submissions
console command. - Added
formie/gc/prune-data-retention-submissions
console command. - Added
formie/gc/prune-content-tables
console command. - Added variable tags to form “Submission Message” rich text field setting, allowing for the use of submission variables in the submission success message.
- Added ability to use submission attributes and fields in redirect URLs for Ajax forms.
- Refactored Phone fields to no longer use a separate dropdown for country code.
- When deleting a user, any form submissions related to that user will be deleted, or transferred to a user of your choice. This only applies if you use the "Collect User" setting for your forms.
- Lock
fakerphp/faker
at 1.9.1 due to PHP compatibility. Hopefully also fix some composer issues when updating with./craft update all
.
- Fixed critical errors when a fields' setting was removed before migration can take place (looking at you
descriptionHtml
attribute). - Fixed
registerFormieValidation
JS event not working correctly. - Fixed a potential error in
craft.formie.getParsedValue()
. - Fixed error with Postgres and viewing the forms index.
- Fixed error with Postgres and viewing the submissions index.
- Fixed agree field description not outputting line breaks.
- Fixed “Submission Message” and “Error Message Position” form messages not outputting line breaks.
- Fixed form messages not being translated correctly when the form is set as Ajax submit.
- Fixed submit message not showing correctly when set to show at the bottom of the form and the form is hidden on success.
- Fixed error with sending test email notifications in some instances.
- The following attributes on Phone fields have been removed:
showCountryCode
,validate
,validateType
,countryCollapsed
,countryLabel
,countryPlaceholder
,countryPrePopulate
,numberCollapsed
,numberLabel
,numberPlaceholder
,numberDefaultValue
,numberPrePopulate
.
- Added per-form form permissions for users.
- Added per-form submission permissions for users.
- Change
fzaninotto/faker
to non-abandonedfakerphp/faker
. - Increase stencil and form settings database column sizes, for large forms.
- Fixed error when submitting a form on a non-primary site, when it contained a group or repeater field.
- Fixed Agree field’s description not translating correctly when using special characters.
- Fixed HTML-based form settings not translating correctly when using special characters.
- Fixed Mercury CRM not mapping email and mobile fields correctly.
- Fixed email notifications incorrectly showing element queries, when trying to output an element field’s value.
- Ensure rich text fields don’t convert underscores to italics, when using as part of field handles.
- Fixed fatal error being thrown when viewing stencils, if a stencil had invalid data.
- Allow captchas to set a
spamReason
property, providing details on why a submission was marked as spam. - Added “Minimum Submit Time” to Javascript captcha.
- Remove table-padding in plugin settings.
- Fixed potential error when processing Monday integrations.
- Fixed front-end JS console error thrown for some fields (table, repeater) for multi-page non-ajax forms.
- Fixed Table and Repeater fields sometimes throwing an incorrect error for min/max rows when not set.
- Fixed checkbox and radio field instructions not working well when set to “Above Input” or “Below Input”.
- Fixed date fields incorrectly converting to the system timezone.
- Fixed potential issue with Name field being used in integrations.
- Fixed spam reason not showing when editing a submission in the control panel.
- Added
afterIncompleteSubmission
event.
- Allow incomplete submissions to be used in trigger integrations queue job
- Fixed error when saving a field in Postgres.
- Fixed multiple recaptchas on the same page not working correctly.
- Fixed Postgres error when deleting or restoring forms.
- Fixed date fields storing time incorrectly when a submission is saved in the control panel.
- Fixed date fields not showing the time field in the control panel when editing a submission.
- Fixed table field dropdown column options not saving.
- Added
getIsVisible()
to all field classes. - Added
craft.formie.getVisibleFields(row)
. For any given row, will return whether there are any visible fields. - Added
submitActionMessagePosition
to forms to control the position of success messages. - Added more base-field level attributes for GraphQL
FieldInterface
. No need to supply inline fragments for common attributes. - Added
redirectUrl
to JS variables, for consistency. - Added
redirectUrl
to form settings, allowing full override of the URL when redirecting on submission success. - Added “Badge” setting for ReCAPTCHA V3.
- Added support for element fields in integrations mapping to string-like fields.
- Added
parseMappedFieldValue
event for integrations, allowing modification of the form submission values from Formie to the integration provider. - Added remove row button for Table field's front-end templates.
- Ensure row classes aren’t outputted when there are no visible fields for a given row.
- Ensure eager-loaded fields have the correct content table set.
- Minimum table field rows now create rows when initially loading the form.
- Fixed incorrect submission error logging.
- Fixed Campaign integration and some custom fields (like checkboxes). Be sure to re-save your form's integration settings for this to take effect.
- Fixed checkboxes field validation not working correctly.
- Fixed GraphQL
containerAttributes
andinputAttributes
properties. - Fixed phone number sub-field label position not working correctly.
- Fixed address, date, name and phone sub-field labels not displaying correctly for left/right alignments.
- Fixed
onFormieSubmitError
JS event not firing for server-side errors. - Fixed submissions not showing preview of element field content for submission index columns.
- Fixed stencil notifications showing unsaved.
- Fixed error when saving a new stencil.
- Fixed error when saving a Table field in some cases.
- Fixed some min/max row checks with Table fields.
- Removed
redirectEntry
from JS variables. - Removed
submitActionUrl
from JS variables.
- Added
referrer
property to integrations, to provide the URL where the submission came from.
- Fixed Campaign integration and error thrown when the referrer was missing.
- Fixed
beforeSendNotification
andbeforeTriggerIntegration
events not working consistently across queue jobs and non-queue. - Fixed parsing
userIp
twice, when used in variable tags. - Fixed an error when sending notification emails via queue jobs.
- Fixed Integration settings for forms were wiped when an integrations was disabled.
- Fixed synced fields not saving correctly when moved immediately after being added.
- Fixed file upload files defaulting to a single file being allowed to be uploaded.
- Fixed file upload fields not being able to handle multiple files uploaded.
- Fix Agree field
descriptionHtml
error, introduced in 1.2.20.
- File upload fields now render links to their control-panel assets in email templates, in addition to being attachments.
- Fixed group fields displaying incorrectly in email previews.
- Fixed group fields not checking for nested field’s
hasLabel
attribute in email content. - Fixed repeater fields not checking for nested field’s
hasLabel
attribute in email content. - Fixed form settings now saving correctly when users with limited permissions save forms.
- Fixed an error with entry integrations and author.
- Element integrations now correctly translate Formie fields to Craft fields.
- Added
descriptionHtml
for GraphQL querying Agree fields’ description. - Table, Repeater and Rich Text JS now provide access to their JS classes on field DOM elements.
- Repeater field’s JS now triggers an
init
event.
- Fix integrations throwing errors when opting-out of the integration (through events or opt-in field).
- When
Validate When Typing
is set on a form, ensure that the global form error message is removed after errors are fixed (when typing). - Fix Agree fields’ description being incorrectly formatted when calling through GraphQL.
- Added
enableUnloadWarning
plugin setting, to control the “unload” warning for front-end forms. This warning is used to prompt users their form has changed for good UX. - Added
renderJs
andrenderCss
options torenderForm()
, to allow for enable/disable of resources on specific render calls.
- Fixed potential error with Agree field descriptions.
- Fixed incorrectly exporting all form submissions site-wide when a specific form’s submissions were selected.
- Fixed submission exports not resolving the content table correctly.
- Fixed submission element index not showing available custom fields to customise with.
- Added more logging for webhook integrations when troubleshooting.
- Added
siteId
to submissions. Now makes it possible to know which site a submission was made on. - Added multi-site support for submissions.
- Allow fields in submissions to be searchable.
- Added “Error Message Position” option for forms to control where form-wide errors are shown.
- Twig template code can now be included inside a HTML field.
- Setup template roots to allow for much easier template overrides.
- Allow form includes to be overridden individually.
- Allow field hooks to override field settings.
- Added
fui-next
to all forward-progressing submit buttons, except the final submit button, for multi-page forms. - Added
inputAttributes
andcontainerAttributes
for submit buttons. - Added
defaultLabelPosition
anddefaultInstructionsPosition
to plugin settings for site-wide defaults. - Added time label to date field.
- Address sub-fields can now be set to hidden. Assists with using only autocomplete field.
- Added User element integration.
- Integration settings can now be viewed read-only when
allowAdminChanges
is false. - Agree field’s description now uses HTML content.
- Re-organised front-end form includes.
- Extract submit button front-end template to its own include, to allow easier overriding.
- Recipients field label position is set to “Hidden” by default (because the default field is set to hidden).
- Address fields can now have only the autocomplete block enabled.
- Forms now no longer forces
novalidate
. HTML5 validation will trigger when Formie’s JS validation is not triggered.
- Fixed file upload fields in nested fields not attaching to email notifications.
- Fixed fields in nested fields showing in email notifications when their field settings don't allow it.
- Fixed an error with email notification preview, preventing CSS bleeding into the control panel.
- Fixed webhook integrations not always using the per-form defined Webhook URL.
- Fixed Formie's front-end templates, as Sass variables not being able to be overwritten. (thanks @leevigraham).
- Fixed submission field data not exporting, when exporting from “All Forms”.
- Fixed “Site Name” for variable picker reflect the site the submission was made on.
- Fixed attributes and custom fields for submissions not being able to be searched.
- Fixed rich text content not having access to all available fields in the variable picker.
- Fixed a few issues with Address field and auto-complete behaving inconsistently with other sub-fields.
- Fixed autocomplete field for Address fields not showing for submissions.
- Remove
<small>
HTML elements from instructions for front-end templates. Produced invalid HTML.
- Allow Redirect URL for a form's settings to contain Twig.
- Added Submission ID as an available variable to pick from in notifications.
- Fixed an error when an Ajax-enabled form's Redirect URL setting contained Twig.
- Fixed submission variables incorrectly caching when sending multiple notifications.
- Added
endpoint
andmethod
to payload events for integrations.
- Fixed serialization of phone fields for integrations.
- Fixed being unable to modify payload in
beforeSendPayload
event. - Fixed a number of fields (checkbox, radio, agree, date, phone) where the custom error message wasn't working.
- Fixed error when connecting with AutoPilot.
- Fixed image uploads not attaching to email notifications for non-local volumes.
- Ensure nested fields (group and repeater) respect MySQL table name limits. Prevents errors when saving a very long field name.
- Fixed an error when editing a form when a user doesn’t have permission for the primary site.
- Added support for group fields and subfield-enabled fields (name, address) to be used as variable tags.
- Added ability to override form settings, classes and attributes in templates.
- Fixed
isJsonObject
error for Craft 3.4.
- Fixed name field serializing non-multiple fields for integrations
- Fixed some fields (name, date, phone) always allowing mapping for their subfields for integrations.
- Fixed front-end submission editing not working for multi-page forms.
- Added
status
andstatusId
to be used in GQL mutations for submissions.
- Refactor field serialization for integrations. Provides better support for array-like data.
- Recipients field settings now no longer enforce unique values for options.
- Allow table fields in field settings to add new rows with spacebar (for accessibility).
- Switch reCAPTCHA verification servers to
recaptcha.net
. Hopefully to improve global reach, when access togoogle.com
isn't allowed.
- Fixed checkboxes fields not serializing correctly for integrations.
- Fixed table validation rules firing for all rules, instead of the specific defined ones per its field settings.
- Fixed initialising multiple forms manually, with the JS API on the same page.
- Fixed calling
destroyForm
in the JS API not destroying event listeners correctly. - Fixed integrations not saving when setting as disabled.
- Fixed custom fields not being registered correctly.
- Fixed submissions created via mutations in GraphQL not validating correctly.
- Fixed submissions created via mutations in GraphQL not sending email notifications.
- Fixed submissions created via mutations in GraphQL not triggering integrations.
- Added name/address support for GraphQL mutations.
- Added Mercury CRM integration.
- Rename
Submission URL
toSubmission CP URL
for better clarity for field variables in email notifications.
- Fixed Entry fields not rendering their values correctly in email notifications, when their section had no URL settings.
- Fixed Category fields not rendering their values correctly in email notifications, when their group had no URL settings.
- Fixed Product fields not rendering their values correctly in email notifications, when their product type had no URL settings.
- Fixed Tag fields not rendering their values correctly in email notifications.
- Fixed User fields not rendering their values correctly in email notifications.
- Fixed Variant fields not rendering their values correctly in email notifications, when their product type had no URL settings.
- Fixed incorrect validation when saving a recipients field with the display type set to hidden.
- Fixed error when trying to submit with multiple checkboxes, in some instances.
- Ensure existing project config data (if any) is applied when installing Formie for the first time.
- Fixed error when no statuses exist. Usually caused by a project config mishap, or an incorrect installation.
- Added recipients field. Display a field as a hidden/select/radio/checkboxes to allow dynamic recipient emails to be used in email notifications. Raw emails also aren't exposed in rendered templates.
- Added Freshsales CRM integration.
- Fixed error when deleting a form due to incorrect redirects.
- Fixed rare issue of being unable to create new pages if a form had zero pages.
- Fixed stencil never applying template.
- Fix email notifications being incorrectly deleted after saving the form as a new form.
- Added CSRF controller to allow static-cached sites to handle CSRF re-generation.
- Fixed captchas allowing payload-sending when they don't support it, causing errors on submissions.
- Fixed Entry fields not rendering their values correctly for multi-sites in email notifications.
- Fixed Category fields not rendering their values correctly for multi-sites in email notifications.
- Fixed Product fields not rendering their values correctly for multi-sites in email notifications.
- Fixed Tag fields not rendering their values correctly for multi-sites in email notifications.
- Fixed User fields not rendering their values correctly for multi-sites in email notifications.
- Fixed Variant fields not rendering their values correctly for multi-sites in email notifications.
- Added
EVENT_MODIFY_WEBHOOK_PAYLOAD
event for Webhook integrations. Allows modification of the payload sent to webhook URLs. - Added
EVENT_MODIFY_FIELD
event Freeform and Sprout Forms migrations. This can be used to modify the field-mapping of Freeform and Sprout Forms fields to Formie fields. Particularly useful for custom-built fields.
- Webhook integrations URL is now optional when creating the integration.
- File upload fields now serialize the entire asset element for webhook payloads.
- Fixed refreshing CSRF token field triggering a changed form notice on the front-end.
- Fixed tag fields triggering a changed form notice on the front-end.
- Integration settings now support
.env
variables. - Entry fields can now restrict their sources to entry types.
- Entry fields now restrict their element query to only include elements from the current site - for multi-sites.
- Category fields now restrict their element query to only include elements from the current site - for multi-sites.
- Product fields now restrict their element query to only include elements from the current site - for multi-sites.
- Variant fields now restrict their element query to only include elements from the current site - for multi-sites.
- Fixed composer autoload deprecations.
- Lower
league/oauth2-client
requirement to prevent incompatibility with other plugins. - Fixed Entry fields not restricting to its sources in some instances.
- Fixed Category fields not restricting to its sources in some instances.
- Fixed Product fields not restricting to its sources in some instances.
- Fixed User fields not restricting to its sources in some instances.
- Fixed Variant fields not restricting to its sources in some instances.
- Fix hidden field throwing errors in queue jobs, for emails and notifications.
- Fixed Entry fields not restricting correctly when selecting multiple sources.
- Fixed Product fields not restricting correctly when selecting multiple sources.
- Fixed User fields not restricting correctly when selecting multiple sources.
- Fixed a potential error when saving an integration.
- Fixed fields not always showing as available to be mapped for integrations.
- Added plugin setting to set the default form template for new forms.
- Added plugin setting to set the default email template for new email notifications.
- Added plugin setting to set the default volume for new file upload fields.
- Added plugin setting to set the display type for new date fields.
- Added plugin setting to set the default value for new date fields.
- Integration field mapping now supports repeater and group nested fields.
- Fixed stencils not showing validation errors for invalid fields.
- Fixed stencils not showing validation errors for notifications.
- Fixed email notifications preview error when viewed in a stencil.
- Fixed email notifications for stencils showing as unsaved.
- Fixed error with integrations event and
isNew
.
- Added SharpSpring CRM integration.
- Added Campaign Plugin email marketing integration.
- Added Font Awesome to front-end rich text field (multi-line), for much better consistency.
- Added align options to front-end rich text field (multi-line).
- Added clear formatting option to front-end rich text field (multi-line).
- Fixed minor JS issue for webhook integrations in the control panel.
- Improve Multi-line WYSIWYG front-end field styles, so they aren't overridden. Lists for example now show correctly in all circumstances.
- Fixed repeater and table fields duplicating new rows.
- Allow hidden fields to be used in email-only variable fields.
- Fixed users field not restricting to its chosen sources.
- Provide easier shortcuts for editing a submission on the front-end.
- Ensure all field attributes for email and form templates are translated for the front-end.
- Downgrade
guzzlehttp/oauth-subscriber
package to be compatible with Social Poster.
- Fixed rendering issue for category fields with children.
- Fixed rendering issue for tags fields.
- Fixed JS error when rendering a tag field.
- Fixed JS error when rendering a repeater field.
- Entry fields now support custom element sources when outputting their list of available elements.
- Category fields now support custom element sources when outputting their list of available elements.
- Product fields now support custom element sources when outputting their list of available elements.
- User fields now support custom element sources when outputting their list of available elements.
- Variant fields now support custom element sources when outputting their list of available elements.
- Added
EVENT_MODIFY_ELEMENT_QUERY
to allow modification of the query used by element fields.
- Update modal edit windows to show “Apply” instead of “Save” - as actions aren’t immediately saved until you save the form.
- Fixed a minor layout issue for the email notification preview with long text values.
- Fixed rich text-enabled multi-line text fields showing raw HTML in submission.
- Fixed rich text-enabled multi-line text fields not retaining their value after an error.
- Added Email Marketing integrations category.
- Added ActiveCampaign, Autopilot, AWeber, Benchmark, Campaign Monitor, Constant Contact, ConvertKit, Drip, GetResponse, iContact, Mailchimp, MailerLite, Moosend, Omnisend, Ontraport, Sender, Sendinblue Email Marketing integrations.
- Added CRM integrations category.
- Added ActiveCampaign, Avochato, Freshdesk, HubSpot, Infusionsoft, Insightly, Pipedrive, Pipeliner, Salesflare, Salesforce, Scoro, vCita, Zoho CRM integrations.
- Added Webhooks integrations category.
- Added Generic Webhook, Zapier Webhooks integrations.
- Added Miscellaneous integrations category.
- Added Google Sheets, Monday, Slack, Trello Miscellaneous integrations.
- Added
useQueueForNotifications
anduseQueueForIntegrations
plugin settings, to control if queue jobs should be used to send emails and trigger integrations.
- Element and Address Provider integrations can now have multiple instances created with different settings.
- Provide
onAfterFormieSubmit
event with content about each submission. - Added
fieldNamespace
render option for forms.
- Fixed freeform migration using an array for default value for email fields.
- Fixed potential issue that a submission could get “stuck” in a completed form.
- Added
form.settings
for GraphQL requests. - Added badge to new notifications to prompt the need to save the form.
- Fixed changed notifications not prompting for changed form when trying to navigate away.
- Fixed newly created notifications getting out of sync when continuing to edit the form.
- Added
craft.formie.populateFormValues()
. See docs. - Added translation strings for all translatable text.
- Added setting spam state element action for submissions.
- Allow spam state to be toggled when editing a submission.
- Fixed GQL mutations error in Craft 3.4.
- Fixed multi-line column limit not allowing for content greater than 255 characters. Please re-save any form that uses a multi-line text field to get this change.
- Fixed error introduced in Craft 3.5.5 when editing a form.
- Fixed repeater fields inner fields not using export-handling.
- Fixed submission exports not normalising columns for repeater/table fields across multiple submissions.
- Added GraphQL mutation support for submissions. See docs.
- Update exports to not split repeater/table into new rows.
- Fixed table field columns getting incorrect format when re-saving after a validation error.
- Added
form.formId
andform.configJson
shortcuts for templates.
- Fixed form outputting CSS and JS, even when disabled.
- Fixed repeater field minimum instances not pre-populating the defined number of blocks.
- Fixed repeater field allowing to go below the set minimum instances.
- Fixed repeater field add block button not disabling when min and max instances are the same.
- Fixed repeater field add block not toggling disabled state correctly.
- Fixed submission exporting providing all values.
- Fixed submission CSV exports not splitting sub-field-enabled fields (address, multi-name) into multiple columns for their sub-fields.
- Fixed submission CSV exports not splitting complicated fields (repeater, table) into new rows to convey collection of data. JSON/XML exports are unchanged and show collections as arrays.
- Fixed stencils not saving.
- Added
outputJsBase
option for form templates. - Added
outputJsTheme
option for form templates. - Added
outputCssLocation
option for form templates. - Added
outputJsLocation
option for form templates. - Form templates can now control where CSS and JS is outputted on the page.
- Added
craft.formie.renderFormCss()
to manually render a form's CSS in your templates. - Added
craft.formie.renderFormJs()
to manually render a form's JS in your templates. - Added JavaScript API's and documentation. Better handling with Vue.js/React.js and more.
- Allow Formie's JS to be imported into JavaScript modules.
- Improve JavaScript loading performance, by lazy-loading JS.
- Improve JavaScript by loading a single file -
formie.js
.
- Update form template select to show correct loading indicator.
- Fixed reCAPTCHA JS not loading in some circumstances.
- Slightly improve email testing error message.
- Fixed date field missing subfield classes and hooks.
- Fixed error when “Output JavaScript” is set to false for a custom form template.
- Fixed multiple form error messages appearing in some cases.
- Fixed phone number field not validating server-side.
- Fixed form JS not initialising when using Vue.js as an async module.
- Fixed incorrect
columnWidth
GraphQL type. - Fixed Form and Submission fields for GraphQL queries.
- Added email notification testing.
- Added email notification preview.
- Added support for email notification duplication.
- Added Rich Text front-end appearance option for multi-text fields.
- Added preset options to hidden field.
- Added Element integration support.
- Added Entry element integration support.
- Added Address Providers integrations.
- Added Google Places, Algolia and Address Finder Address Providers.
- Added email alerts for failed email notifications.
- Added warning to file upload field for server-set upload limit.
- Added Ability to set "Today" as the default date for Date/Time fields.
- HTML fields now have their content purified when output.
- Fixed HTML field showing ‘null’ or ‘undefined’ when no value set
- Fixed missing status when applying stencil from project config.
- Fixed incorrect email template crumb.
- Fixed issue where captchas weren't working.
- Ensure we return the current settings for failed plugin saving.
- Fix incorrect redirection when an error occurred saving the plugin settings.
- Fixed another instance where multiple forms on the same page weren't working.
- Added the ability to select existing notifications, made on other forms.
- Fixed JS error when multiple forms are on the same page.
- Fixed error messages showing for multiple forms on a single page.
- Fixed submission data not working correctly for multiple forms on a single page.
- Fixed issue where “Save form as” did not properly clone repeater subfields.
- Fixed default label position class on form.
- Fixed raw submit action message being rendered for non-ajax forms.
- Ensure query string in URL is preserved when showing a success message for a form.
- Fixed front-end field error messages being overwritten on subsequent checks.
- Remove unused
HtmlSanitizer
package. - Fixed installation issue on PHP 7.0.
- Allow deleting last stencil.
- Ensure form/email templates are processed in project config before stencils, preventing project config errors when applying stencils.
- Only allow “Save as a new stencil” if
allowAdminChanges
is enabled.
- Added Rich Text field configuration plugin-wide. Provide a config object for available buttons, like you might for Redactor. See docs.
- Added error message rich text field for form/stencil settings.
- Added GraphQL support for Submissions.
- Added support for “Save as new stencil” from a form.
- Form/stencil submission message now support rich text.
- Form/stencil submission message is now stored as a prosemirror-compatible object.
- Fixed IP Address not saving for submissions.
- Fixed form change warning when submitting an Ajax form and redirecting.
- Fixed submissions query and
form
parameter not working correctly. - Fixed “Save as new form” not redirecting to the newly created form.
- Fixed “Save as new stencil” new stencil generates a sequential handle, rather than a random handle.
- Fixed “Submission Message” error message not appearing.
- Fixed rich text fields not having their model values (resulting JSON) populated immediately.
- Added warning to form template if using custom template.
- Added page button hooks and docs.
- Added page index to page data attributes.
- Added
craft.formie.registerAssets
for template-cached forms. See docs.
- Moved template validation rule to base template so both email and form templates are validated.
- Fixed incorrect hooks on label-less fields (such as hidden field).
- Fixed missing button container classes.
- Fixed adding existing field always adding to first page.
- Fixed page spacing issue on multi-page Ajax forms.
- Fixed ajax-based multi-page forms validating entire form.
- Fixed CSS/JS issue with forms, when using the
{% cache %}
tag.
- Added GraphQL support. See docs.
- Added class to word and character limit text.
- Cleaned up form and email templates, changing minor text, fixing some translations, typos and better field feedback.
- Fixed minor CSS causing field edit modal not to show when when clicking on the field label.
- Fixed missing error messages on name and address fields.
- Fixed “Save as a new form” button not saving a new form.
- Fixed checkbox-select Vue component not working correctly.
- Added subfield hooks for name and date fields.
- Added missing style for left/right submit buttons.
- Fixed template theme CSS from being outputted when the layout is disabled.
- Added hooks to address and phone subfields.
- Move field errors outside of input containers.
- Hide required option for HTML field.
- Fixed db exception when saving form.
- Only send notifications for fully complete submissions.
- Fixed HTML field not wrapping in submissions edit page.
- Fixed bug where an empty repeater field with required subfields wouldn’t validate.
- Render email templates using
TEMPLATE_MODE_CP
.
- Initial release.