github verbb/formie 4.0.7

4 hours ago

Added

  • Keep synced fields linked when importing forms, with a choice when a synced field’s settings differ on the destination. (#3098)
  • Add an Export… button to the submissions index. It opens a dialog filled in from your current form, filters and search, where you can adjust the forms, submission types, statuses, dates and columns, and see how many submissions you’ll get, before exporting in any report format. No saved report is needed. (#3082)
  • Add the logSubmissionValues config setting to keep submitted values out of Formie’s log files, while still writing every log entry.
  • Add an option to leave log files out of support requests.
  • Add a documentation example for dynamically loaded forms, including shared asset loading and automatic initialisation.

Changed

  • Use a database index for File Upload reference checks, with queued indexing of existing submissions. (#3069, #3096)
  • Allow all failed integration and notification deliveries to be retried using current submission values and settings.
  • Rename the “View delivery diagnostics” permission to “View queue delivery diagnostics”.
  • Allow submission exports without Reports access using “Export submissions” under “Access submissions”. Existing report export permissions continue to work. (#3082)
  • Move Mailchimp and Campaign Monitor API error-handling choices to standard dropdowns under Advanced on each integration connection. Existing global choices remain fallbacks until the connection saves its own.
  • Default Mailchimp and Campaign Monitor API rate limits to failed deliveries, while skipping recognised subscriber rejections with a warning. Preserve configured actions and include form, submission and provider details in policy logs. (#2172, #2276)
  • Store reports and schedules in the database instead of project config, allowing reports to be managed on production. (#3082)
  • Show a warning on reports that point at forms that no longer exist.
  • Keep encrypted field values out of Formie’s log files, including integration payloads for forms with encrypted fields.
  • Update the @verbb/formie-* npm packages to use the same version number as the plugin. Version ranges such as ^1.0.16 need updating once. (#3081)
  • Update the Pardot guide for External Client Apps, OAuth security settings, and separate API and Form Handler delivery.
  • Clarify terminology throughout the documentation, including synced fields, stencils, saved values and client events.
  • Simplify control panel labels and help text for integration order, notification timing, test data, field settings and analytics events.

Fixed

  • Fixed slow submissions with File Upload fields on sites with large submission histories. (#3096)
  • Fixed useCssLayers being ignored. Front-end CSS, including dynamically loaded field styles, is unlayered by default. Set useCssLayers to true to retain the layered styling used by earlier Formie 4 releases.
  • Fixed legacy notification tokens in stencils not being upgraded, preventing emails from forms created from those stencils from rendering.
  • Fixed file pickers in Repeater fields failing to open or opening multiple dialogs when editing submissions.
  • Fixed queued exports and scheduled reports omitting answer columns when using automatic field selection.
  • Fixed GoCardless Payment fields not rendering their payment input and redirect instructions.
  • Fixed submission payment summaries missing for GoCardless, Moneris, Paddle and Square.
  • Fixed PlaceKit throwing an error when its API key is unset or empty.
  • Fixed forms using page reloads not showing a link to continue later after saving progress.
  • Fixed File Upload fields retaining completed attachments after AJAX form resets, and duplicate advanced upload rows after Back navigation. (#3097)
  • Fixed users with permission to import forms being sent to an inaccessible page after a successful import.
  • Fixed importing a form creating a new form when an existing form had the same handle and no action was selected.
  • Fixed queued integrations and notifications being discarded after their worker stopped unexpectedly, while preserving the site's queue retry settings.
  • Fixed upgrades from Formie 2 and 3 failing on PostgreSQL for sites with payments, and sites already upgraded rejecting newer payment statuses, because of an old database constraint.
  • Fixed upgrades stopping on payments saved with more decimals than their currency has, such as a failed payment of 25.015 USD. The amount is rounded, and the original stays on the payment and in its history.
  • Fixed notifications from Formie 3 failing or losing values when they used plain tokens such as {email} or {group.field}. These now convert automatically where they match a field on the form, including on sites that have already upgraded. Tokens with filters or Twig still need converting by hand.
  • Fixed Categories fields losing their All or multiple source selection. The Sources setting is back in the form builder, and fields upgraded from Formie 2 or 3 offer their saved sources again.
  • Fixed Group and Repeater answers being lost when upgrading from Formie 2 if their child fields held an outdated parent reference.
  • Fixed per-form permissions from Formie 2 and 3 being removed the next time a user or user group was saved. Forms with existing grants now use Use Dedicated Permissions. Grants already removed on an upgraded site need to be granted again.
  • Fixed Slack, Telegram, Zapier, Web Request, Freshdesk, Gorgias and Zendesk connections saved under their older class names being unavailable after upgrading, and their form integrations not being sent. Web Request URLs saved under the older webhook setting are also kept. A Calendar Event connection saved in Formie 3 also no longer stops every integration on the site from loading.
  • Fixed Product element integrations saving products without their mapped variant, SKU or price.
  • Fixed Entry integrations upgraded from Formie 2 losing their field mapping controls and saving entries without mapped field content. Entries already created this way aren't changed, and each repaired integration is logged during the upgrade.
  • Fixed element integrations failing when a Table field was mapped whole or by column, and Table date and time cells being saved in the wrong timezone.
  • Fixed Recipients conditions saved in Formie 2 or 3, or chosen in the form builder, not matching the selected option, and stopped sending recipient addresses to the browser in those conditions.
  • Fixed Address answers from Formie 2 holding only auto-complete text showing as empty, and auto-complete being dropped from Address fields during the upgrade.
  • Fixed Single-Line Text fields ignoring a type set in their Input Attributes, which showed passwords as plain text on forms set up as the Formie 3 guide described.
  • Fixed Date dropdown and input fields losing seconds or AM/PM, or gaining an hour, when upgrading from Formie 2, and saving a form resetting the order of upgraded Date sub-fields.
  • Fixed email notifications failing to render when a multi-select Dropdown inside a Group or Repeater was left blank, or with devMode on for Recipients fields shown as a dropdown.
  • Fixed Calendar Event integrations failing when a mapped date field was left blank, or when Repeat Until was mapped.
  • Fixed Email Address fields not enforcing Blocked Domains added or edited in the form builder, including the domains returned through GraphQL.
  • Fixed forms without a saved layout failing to render.
  • Fixed control panel pages and form queries failing on PostgreSQL for users with no accessible forms, such as users who can only import forms, and querying forms by an unknown form status.
  • Fixed users with Create Submissions or Save Submissions permissions, but no form access, being unable to open the new submission screen, save submissions or use the Google address current-location lookup in the control panel.
  • Fixed Repeater field criteria not matching saved submissions on PostgreSQL.
  • Fixed the Address field’s auto-complete option missing on PostgreSQL, and for providers enabled through an environment variable.
  • Fixed uppercase submission UIDs failing to edit a submission on PostgreSQL.
  • Fixed Agile integration settings failing to load when only tasks are mapped.
  • Fixed Akismet, CleanTalk and OopSpam throwing an error instead of showing a validation message when saved without an API key.
  • Fixed the Stripe SDK requirement allowing versions without StripeClient. The minimum is now 7.33.
  • Fixed TypeScript errors when using the @verbb/formie-* npm packages in projects with moduleResolution set to NodeNext.
  • Fixed the new report dialog waiting for forms and report data before appearing.
  • Fixed reopening the new report dialog during its close animation, and kept report loading in a consistent layout with a visible toolbar placeholder and a compact, right-aligned form-picker spinner.
  • Fixed report charts briefly appearing blank without a loading spinner before drawing.
  • Fixed GraphQL save_<form>_Submission and saveSubmission mutations not behaving like normal form submissions. They now send email notifications, trigger integrations, run spam and captcha checks, apply field conditions and default values, record request details and follow the form's login, schedule and submission limit rules. Editing through a private token only changes the fields it sends. With a private token, a missing captcha token returns an error, including on multi-page forms. Public GraphQL schemas can create submissions again, with rate limits, but editing by ID and saving drafts need a private schema, and payment forms need submitFormieClientForm. (#3090)
  • Fixed the request IP address being saved in submission metadata and sent to integrations when Collect IP Address is off.
  • Fixed File Upload fields rejecting extensions allowed by Craft's allowedFileExtensions, extraAllowedFileExtensions and extraFileKinds settings. Per-field file type restrictions still apply, and the field settings show the permitted extensions in a neutral notice with clearer configuration guidance. (#3092)
  • Fixed cached multi-page forms becoming stuck on the wrong page when restoring an in-progress submission.
  • Fixed fields with Disabled visibility losing their values when saving submissions in the control panel. (#3093)
  • Fixed the support form clearing entered values when a required field is missing.
  • Fixed Repeater validation errors appearing on the wrong row after returning to a previous page, and searchable dropdown selections being cleared during AJAX page navigation. (#3088)
  • Fixed a validation error from the server on a field inside a Group or Repeater marking the other fields around it as invalid on forms that reload the page.
  • Fixed focus not moving to Checkboxes, Agree, searchable Dropdown and Rich Text fields after a validation error.
  • Fixed the File Upload field’s asset picker on the control panel submission screen listing nothing, and chosen assets being rejected when saving. The field also has a direct Upload button there now. Chosen assets move into the field’s upload folder, as with an Assets field with a restricted location, and are deleted with the submission if the form deletes files.
  • Fixed an error and an incomplete submission when a File Upload field’s upload subpath used an answer left blank or that couldn’t be a folder. These files now go to the root of the field’s volume, and move once the answer is filled in.
  • Fixed notifications saved in the same second sending and listing in an unpredictable order on PostgreSQL.
  • Fixed files staying behind on forms set to delete file uploads when a trashed submission was later purged by garbage collection. Submissions already in the trash are covered too.
  • Fixed Address answers holding only auto-complete text showing as empty in email notifications when the field no longer has an Auto-Complete sub-field.
  • Fixed the Redirect Entry picker appearing empty when Craft’s “All entries” source is disabled. (#3089)
  • Fixed forms failing to load when a field or page has a condition rule that was added but never filled in, which can be present on forms upgraded from Formie 3.
  • Fixed forms showing “A required form feature could not start” and being unable to submit when a field had conditions enabled but no rules.
  • Fixed forms showing “A required form feature could not start” and being unable to submit when a field’s browser feature had nothing to attach to, such as Date fields stored as a date picker while using inputs or dropdowns, or conditions inside a Repeater with no rows yet.
  • Fixed visitors seeing a server error after their submission was saved, and later notifications being skipped, when a notification failed with useQueueForNotifications off. The failure is now logged and left in delivery diagnostics.
  • Fixed upgrading from Formie 2 failing on forms with encrypted fields when FORMIE_ENCRYPTION_KEY isn’t set, or with File Upload fields whose volume has been deleted.
  • Fixed conditions from Formie 3 showing an empty Field column in the form builder, on fields, pages, integrations and form rules. Existing conditions now use the same field references as the builder when you upgrade, except on fields synced between forms, which still work as before. (#3087)
  • Fixed Match Field validation no longer being enforced on fields imported by the Freeform migrations, and the setting showing a raw token instead of the field’s name in the form builder. (#3087)
  • Fixed submissions throwing an error when Match Field points to a field inside a Group or Repeater. Fields in the same Repeater now compare within their row, and other fields compare with the first row. Browser validation still applies to Groups, while Repeater targets are checked when the form is submitted. (#3087)
  • Fixed exports queued in the background failing for users with Manage reports but not Export submissions.
  • Fixed Date fields returning an empty object from GraphQL submission queries, and Date Range fields not exposing their start and end values. (#3079)
  • Fixed Group fields failing when queried through GraphQL, and restored direct selection of their subfields. (#3080)
  • Fixed GraphQL mutations written with the documented input type names being rejected for Name, Address, Group, Repeater, Table and Payment fields. These types, and their Group, Repeater and Table output types, now use names based on form and field handles instead of field IDs, so they’re the same in every environment. Any query that hard-coded an ID-based type name needs updating. (#3080)
  • Fixed inputTypeName returning [] for Table fields. (#3080)
  • Fixed AJAX submissions still showing the form error message when Error Message Position is set to None.
  • Fixed fieldNamespace being ignored when rendering pages or complete forms, and corrected custom form examples and captcha guidance.
  • Fixed the Address Country and Name Prefix sub-fields outputting no value in email notification field summaries. (#3085)
  • Fixed stencil email previews and test emails failing with “Form not found”, using fields from an unrelated form, or rendering the Form Name variable blank. (#3091)
  • Fixed saving and copying stencils containing synced fields.
  • Fixed integration mappings from Formie 3 that use Form Name, Submission Date, Site Name or Site Handle failing to send, and Name, Address and Group sub-field mappings showing as “Don’t Include” and being cleared when saving the form. Existing mappings update automatically. (#3086)
  • Fixed failed notification and integration alert emails failing to send when Craft’s enableTwigSandbox setting is on. Customised messages using the default json_encode and integration.name output are updated automatically.
  • Fixed the Trello, Google Sheets and Calendar Event integrations throwing an error when loading their form settings.
  • Fixed the Product element integration failing to save when “Overwrite Values” is off.
  • Fixed GoCardless webhooks being processed and then reported as failed.
  • Fixed Front integration messages being reported as failed after they were delivered.
  • Fixed Freshdesk deliveries failing their queue job after handling an existing contact, even though the contact update and ticket were delivered.
  • Fixed Freshdesk reporting a failure instead of a skipped delivery when an event cancelled sending its contact.
  • Fixed HubSpot deliveries being reported as successful after a file upload failed, allowing the form to be sent without its file.
  • Fixed integration errors configured to be skipped still failing the enclosing queue job or triggering failure alerts.
  • Fixed the Diagnostics button failing to open on control panels served over plain HTTP.
  • Fixed Capsule throwing an error when fetching opportunity fields.
  • Fixed the Sent Notifications index showing “-” for the Notification column.
  • Fixed pruning of sent notifications using the wrong cutoff time for sites not set to UTC.
  • Fixed a server error when saving a form’s template fields failed validation on a non-JSON request.
  • Fixed FieldLayout::getForm() throwing an error.
  • Fixed slow submission exports and indexes for forms with rich text Multi-Line Text fields, or with plainTextHtmlSanitizationMode set to sanitize, caused by rebuilding the HTML purifier configuration for every value. (#3083)

Deprecated

  • Deprecate IntegrationResult::rejected(), IntegrationResult::unknown(), IntegrationResult::requiresReconciliation() and IntegrationResult::$retryable. Rejected and unknown results are now failures, and every failure can be retried.
  • Deprecate DeliveryAttempts::reconcile(), DeliveryAttempts::hasReconciliation(), DeliveryAttempts::executePrepared(), DeliveryAttempts::EVENT_RECONCILIATION, DeliveryAttempts::operationFingerprint(), DeliveryAttempts::operationFingerprints(), IntegrationRunner::dispatchFingerprint(), IntegrationRunner::dispatchFingerprints(), SubmissionDispatches::resume(), IntegrationTriggers::forceIntegration(), the DispatchSubmission job, Integration::supportsDeliveryWriteTracking() and IntegrationStatus::isFinalized().

Removed

  • Remove the “Confirm delivery outcomes” and “Force integration execution” permissions, and the confirm and force-run controls in Delivery Diagnostics. Diagnostics and Export remain for troubleshooting.
  • Remove the formie/deliveries and formie/deliveries/recover console commands. formie/cron/run no longer re-sends submission deliveries interrupted by a crash, and its deliveries group now only recovers payment webhooks. If a crash interrupts a delivery, run the integration from the submission’s edit page.

Don't miss a new formie release

NewReleases is sending notifications on new releases.