FormWork documentation
Import & Export
Create and update entries from CSV, and export the exact result of a saved view.
Imports and exports run as background jobs. Their progress, outputs, and error reports appear in the form’s Files tab.
Export a saved view
- Open the form’s Entries tab.
- Select or build the view you want.
- Select Export.
- Review its name and column preview.
- Select Export CSV.
- Download the result when the job completes, or find it later in Files.
The view determines:
- Which active entries match
- Which references become columns
- Column order
- Resolved CSV header labels
CSV is the only current export format. Create a dedicated view when you need a stable recurring report.
Prepare an import
Select Import to see a copyable header row built from every field ID in the form’s current version, including nested field definitions. Create a CSV with exactly one header per column and the same number of values on each row.
first_name,email,quantity
Alex,[email protected],2
Sam,[email protected],5
Values are interpreted according to the target field type where supported. Unknown headers do not create fields and will not appear as normal answers. Use only the template’s exact field IDs, then review the resulting entries and validation state after importing complex or repeated data.
Create or update
Rows normally create entries. To update an existing entry, add an id column containing its exact FormWork entry ID:
id,first_name,email
ENTRY_ID,Alex,[email protected]
,Sam,[email protected]
- A matching ID updates that entry.
- A blank/missing ID creates an entry.
- An ID from another account or form fails that row.
- An ID that does not exist is ignored and a new entry is created with a new FormWork ID.
The import template does not include id automatically; add it only for intentional updates.
Run and review
- Choose Select CSV File.
- Select Import CSV.
- FormWork uploads the source as a private admin-import file and starts the job.
- Watch row progress.
- Review succeeded and failed counts.
- Download the error report when failures exist.
A job may be pending, processing, completed, or failed. A completed job can still contain failed rows; those are listed in its report.
Rows fail for conditions such as malformed CSV shape, invalid target entry ownership/form, or a write error. A written row can still leave ordinary form validation errors because import persistence is not the same as respondent submission.
API operations
Automations can use the same flow:
POST /api/v1/exports { "view_id": "…", "format": "csv" }
GET /api/v1/exports?form_id=…
POST /api/v1/imports { "form_id": "…", "file_id": "…" }
GET /api/v1/jobs/{job_id}
Authenticate with an account API key. For import, upload the CSV using the file operations in the interactive API reference, then pass its file_id.
Safe bulk changes
- Export the target view before an update import.
- Test a few representative rows first.
- Use field IDs, not labels, as import headers.
- Preserve exact entry IDs and never copy them between forms.
- Review validation errors after the job.
- Imports create/update draft data without firing Entry Created or Answer Updated workflows; start any required downstream process separately.
- Re-import only corrected failed rows to avoid duplicate creates.
For view construction, see Views & Filtering.