Added
- Add top-level Integrations control panel navigation for managing CRM, email marketing, element, and other payload integrations outside Settings.
- Add site-scoped integrations that can be created and edited on production environments (
allowAdminChanges = false). Existing integrations remain project-scoped and deploy via project config. - Add Display Type settings to File Upload fields: File Input (Simple) keeps the native browser input and uploads files on form submit; Upload Manager (Advanced) adds a drag-and-drop zone with async staged uploads, progress, remove, and reorder controls via Formie’s upload endpoints. Existing forms default to File Input (Simple). (#133, #2385, Discussion #1692)
- Expose
displayTypeon File Upload GraphQL field settings. - Add per-field Asset Data Retention settings to File Upload fields, allowing uploaded assets to be deleted after a configured duration while the submission record is kept. (#1715)
- Add File Upload asset retention and stale pending upload cleanup through Craft garbage collection and dedicated console commands.
- Add When integrations re-run settings (Integrations → Settings) with per-integration policies: once on submit (default), also when submission is edited, or custom trigger events. Integration conditions still apply. (#1429, #1724, #2591, #1970)
- Dispatch integrations on control panel submission saves when the re-run policy includes Control panel save, including bulk status changes and other direct element saves. CP submission edit saves continue to use the submission workflow without double-triggering. (Discussion #2253)
- Add
IntegrationTriggersservice as the single coordinator for workflow, control panel element saves, spam unmark actions, and manual integration runs. - Add
IntegrationExecutorservice to unify legacy and orchestrated integration step execution, including batched queue jobs. - Add
NotificationTriggersservice to coordinate status-change email notifications when submission statuses are updated. - Add Use Submission User as Author to Entry element integrations, assigning the collected submission user as the entry author when Collect User is enabled on the form. (#1363)
- HubSpot Map to Form integrations now resolve custom object
objectTypeIdvalues when submitting to HubSpot forms, including portal-specific custom objects (Enterprise). Refresh HubSpot forms after creating custom objects. (#2649) - Add Enable Conditions to form integration settings, allowing integrations to be triggered only when submission field and status rules match. (#447)
- Add Integration Dispatch form settings (Integrations → Settings) to run payload integrations sequentially, choose immediate vs queued execution per integration, control notification timing relative to integrations, and expose dispatch results via
{dispatch:handle:property}variables (for example{dispatch:user:url}). Dispatch variables appear in variable pickers when integration dispatch is enabled. (#2635, #1152, #2810) - Add per-notification Dispatch Timing (Advanced) to override the form’s integration dispatch notification timing.
- Add configurable Integration API Error Handling for Mailchimp and Campaign Monitor, classifying rate-limited and rejected payloads separately from operational failures. (#2172, #1990)
- Add
Integrations::EVENT_AFTER_TRIGGER_INTEGRATION_FAILEDfor handling integration failures outside the queue, and Send Email Alert for Failed Integration settings mirroring failed notification alerts. (Discussion #2579)
Changed
- Apply control panel submission sidebar fields (title, status, spam, mark as complete) during managed CP submission saves.
- Route all integration trigger entry points through
IntegrationTriggersinstead ofSubmission::afterSavehooks. - Consolidate legacy and orchestrated integration dispatch behind
IntegrationExecutor, using batchedTriggerIntegrationqueue jobs for queued steps. - Route status-change email notifications through
NotificationTriggersinstead of inline logic inSubmission::afterSave. - Deprecate Formie 3
Submissionsintegration and notification dispatch helpers when compatibility mode is enabled. UseNotifications,Integrations, andIntegrationTriggersinstead. - Remove unused
Integration::shouldTriggerOnSubmissionEdit()API (superseded by re-run policies). - Update phone number values sent to integrations to use
E164format instead of international formatting. (Discussion #2731) - Improve integration queue job descriptions and debug output with form context (
formId,formHandle,formTitle). (#2172) - Reorganise plugin settings: move integration behaviour settings to Settings → Behavior → Integrations, and move Use Queue for Notifications to Email Notifications.
- OAuth integration redirect URIs now default to a Craft action URL instead of a site URL. Add an optional OAuth Redirect URI Override plugin setting. (#1333)
Fixed
- Fix Opayo, Stripe, Paddle, and GoCardless payment integrations not resolving Billing Details field mappings from the form builder static table, so Name and Address fields are included in payment payloads again. (#2617)
- Fix Salesforce integrations failing after Craft 5 / Formie 3 upgrades when OAuth tokens were migrated without
instance_url, by falling back to stored integration settings and backfilling token values. (#2492) - Fix Salesforce integration refresh failing when an enabled object such as Opportunity or Case is unavailable in the connected org. (#1551)
- Fix Marketo OAuth connect failing when an empty
scopeparameter is sent with the client-credentials grant, and normalize API domains that include a trailing/restsegment. (#2718) - Fix Mailchimp integrations not exposing or formatting Address merge fields, which prevented mapping Formie Address fields to Mailchimp audiences that require
ADDRESSdata. (#2387) - Improve Pardot integration errors when an account does not support API v4 (legacy Pardot Classic). (#2642)
- Fix file upload assets being deleted when trashing a submission with File Uploads → Delete files enabled, so restored submissions keep their uploaded files. (#1258)
- Fix new File Upload fields defaulting to an empty Email Field Summary Value setting.
- Fix Signature fields intermittently showing a misleading “browser does not support” message on multi-page forms, conditional fields, and late layout by retrying canvas sizing, watching visibility changes, and showing accurate status copy when initialization fails. (#2708)