Skip to main content

Submission EditingPro

Submission EditingPro

Freeform allows you to edit submissions via the front end templates as well. Currently, this feature has no user/author check, and requires you use/provide the submission.token to work (as opposed to the ID). A future version will likely include ability to check on authors, etc. The editing uses the same freeform.form function, but knows you're in edit mode when you feed the submissionToken parameter a valid value.

There are currently some limitations with this feature. Please note that:

  • Not all types of forms can be intuitively edited (e.g. Payment forms, some complex ones, etc).
  • Editing Payment forms will NOT update payment details, but instead will make a new submission/charge.
  • Editing forms with Element integrations will NOT update the corresponding element, but just create a new one instead (so currently no editing of user profile data, etc).

​Overview

When linking to the form edit, you might use something like this inside the Submissions query:

{% if currentUser and currentUser.admin %}
<a href="{{ siteUrl }}page/{{ form.handle }}/edit/{{ submission.token }}">
{{ "Edit"|t("freeform") }}
</a>
{% endif %}

Then in your template that includes the Form query, be sure that the submissionToken parameter is included and checking the URL for a value:

{% set submissionToken = craft.app.request.segment(4) %}

{% set form = freeform.form('myForm', {
returnUrl: "{{ siteUrl }}page/{{ form.handle }}/submission/{{ submission.id }}/success",
submissionToken: submissionToken|default(null),
}) %}

You can also check out the example in the demo templates if you wish to see it in action.

​Suppression of Notifications and more

You can apply the suppress parameter to the Form and render queries, which allows you to suppress email notifications, API integrations and Element Connections for a form by passing an object of suppressions you wish to enable, typically used for editing submissions, e.g.:

You can also just set this to true (suppress: true) to enable all suppressions at once.

​Examples

{% set form = craft.freeform.form("myForm", {
id: "myform",
class: "form-class",
submissionToken: submissionToken|default(null),
suppress: {
adminNotifications: true,
dynamicRecipients: true,
submitterNotifications: true,
api: true
}
}) %}

OR

{% set form = craft.freeform.form("myForm", {
id: "myform",
class: "form-class",
submissionToken: submissionToken|default(null),
suppress: true
}) %}