You are viewing beta documentation for Formie 4.x.
Submissions & Workflows

Save and Continue Later

Long and multi-page forms lose completions when visitors get interrupted. Formie stores incomplete submissions in the database, optionally exposes a save button with resume links, and can restore in-progress state automatically when someone returns. This walkthrough configures the feature end-to-end for a job application or registration form.

Prepare an Application Form

You need an installed Formie site, permission to edit forms, and access to config/formie.php if you want to change retention. Create a form named Job Application with handle jobApplication. Add Name and Email Address fields to the first page and a Multi-Line Text field named Experience to the second. Save it, then create templates/apply.twig:

{{ craft.formie.renderForm('jobApplication') }}

Open /apply and confirm the first page appears. The steps below configure this form. Save & Continue Later explains the feature, and Configuration lists the retention options.

FeatureWhat it doesUser-visible?
Incomplete submissionsSaves progress as users move through pagesAutomatic on multi-page forms
Save button + resume linkLets users deliberately save and return via URLOptional per page

Both store real submission records marked incomplete until the final step completes.

Step 1 — Enable Multi-Page or Long Single-Page Form

Save and continue is useful for:

  • Multi-page forms (progress saved on each page navigation)
  • Long single-page forms with many fields

Ensure Enable Multi-Page Forms is on globally unless you intentionally run single-page only (Settings or enableMultiPageForms in config).

Step 2 — Automatic Submission State

On the form Settings tab, enable Restore In-Progress Submissions Automatically when visitors should resume an in-progress submission if they return to the same form URL in the same browser session (without a resume link).

  • Enabled — Formie restores the incomplete submission on return
  • Disabled — Form starts fresh unless the user opens a resume link

Automatic saving remembers progress in the same browser. Visitors need a Save & Continue link to resume in another browser or device.

Step 3 — Add a Save Button

On the page where users should be able to save deliberately:

  1. Open page settings in the form builder
  2. Enable Show Save Button
  3. Set Save Button Label (for example Save and finish later)
  4. Choose link vs button display if your template supports it

When clicked, Formie creates a resume link with a token tied to that in-progress submission. Opening it in another browser does not sign the first browser out of the draft. The link works across browsers and devices — treat it like private access to a draft, especially for forms collecting personal data.

Anyone with a resume link can continue that in-progress submission.

Step 4 — Configure Retention

Align plugin settings with how long users might wait before returning:

SettingDefaultPurpose
saveResumeTokenTtlDays14How long resume links stay valid
maxIncompleteSubmissionAge30When incomplete submissions are removed by scheduled cleanup
submissionStateRetentionDays30Retention for front-end submission state
config/formie.php
return [
    '*' => [
        'saveResumeTokenTtlDays' => 30,
        'maxIncompleteSubmissionAge' => 60,
        'submissionStateRetentionDays' => 60,
    ],
];

Also review the form's Data Retention settings under form builder Settings for completed submission cleanup — separate from incomplete retention.

Step 5 — Submission Statuses for Incomplete Records

Incomplete submissions appear in the control panel like other submissions, usually with an incomplete flag. Filter and report on them using Submission Statuses.

Consider a status workflow for teams reviewing abandoned applications — for example, Incomplete → Follow up → Complete.

Step 6 — Email Notifications

By default, notifications fire on complete submissions. Decide whether partial saves should trigger email:

  • Usually no — wait for final submit
  • If partial saves must send an email, implement a custom workflow task for that action. Ordinary notification dispatch skips incomplete submissions before evaluating notification conditions; adding a condition cannot enable partial-save delivery. See Custom Workflow Tasks.

Avoid spamming admins on every page step unless that is intentional.

Step 7 — Headless and GraphQL

Save-and-resume works for client-rendered forms when using Formie's client session model. Bootstrap via formieClientForm; partial saves flow through submitFormieClientForm with incomplete state.

Resume links point at your Craft front-end URL with a token query parameter — ensure your SPA or Twig template loads the form and passes the token to Formie's client bootstrap.

Step 8 — Security and Privacy

  • Resume links are capability URLs — do not log them in analytics or expose them in referrer headers to third parties
  • Set TTL short enough for your compliance requirements
  • On GDPR-sensitive forms, document save-and-continue in your privacy notice
  • Hiding the save button does not prevent partial storage: multi-page navigation still saves incomplete submissions. Automatic restoration controls whether progress is loaded again, not whether it is stored. If answers must only be stored on final submission, use a single-page form without a save button and test its actual submission workflow, including any custom tasks.

Test Saving and Returning

Enter a test name and email, then move to the Experience page. Check Formie → Submissions, including incomplete records: the first page’s answers should be saved even before you use the save button. Enter some experience, save deliberately and copy the resume link.

Open the resume link in a separate browser session. Confirm that the saved answers load, finish the application, and check that the record is complete. Your normal notification should send after completion, not after the intermediate save. Treat the copied link as private and remove your test submission afterward.

If the resume link cannot load the draft, check whether the link expired or retention cleanup removed its submission. Disabling automatic restoration should stop a bare visit from restoring progress, while a valid resume link should still work.