Working with submissions
Finding, filtering, assigning, importing and exporting the records your forms collect. A submission is not a row in a results table — it is a record with a state, an owner and a history.
Finding things
A form's submission list searches, filters and sorts on the server. Search matches the current revision of each record, deliberately: a value that has since been corrected should stop turning up. Press / anywhere on the page to start typing into it.
When the form has a workflow, its states sit above the table as a row of chips in the order they flow, each carrying how many records are in it — the pipeline at a glance. Click a state to narrow the list to it; click it again, or All, to widen back out. The counts are for the whole form, whatever the search box says.
Sorting is available on created date, updated date, name and workflow state — plus any field you have marked indexed or show in list in the form's field settings. Filtering by a field works on those same fields, so if a field cannot be filtered on, that flag is what to change. Field filters match exactly rather than partially; use search for partial matches, or a report for anything richer.
Everything is in the URL — the search, the filters, the page. A filtered view is a link you can send to a colleague.
Reading the table
The columns are the fields the form marks show in list, headed by their own labels, plus the record's status and when it was created and last updated. A wide form scrolls sideways; the name column stays pinned while it does, so every other cell is always read against the record it belongs to. Numbers sit flush right in tabular figures, and a long value truncates with its full text on hover.
Columns lets you hide any of them for today — the choice is remembered per form in your browser and changes nothing about the data; an export still carries every field. A record that has no name yet, such as an empty draft, is listed as Untitled with its number rather than borrowing the form's name.
My work
My work is everything assigned to you across every form, grouped by workflow state. It is the queue view for people who work records rather than build forms.
Assigning
Assignment needs submission:assign — deliberately a different privilege from
editing, because routing work and changing its content are different powers. Assign one
record from its detail page, or tick several in the list: a bar with the count, an
Assign to picker and Archive follows you along the page
until you clear the selection, and up to a hundred records go together. A
workflow transition can also assign automatically as part of a
move.
Only people who can reach the organisation are offered, including those reaching it by inheritance from a parent.
Moving a record
When the form has a workflow, a record's page shows its state as a coloured chip beside the title, a strip of every state with the current one lit, and the moves you may take as buttons in the header — the first one accented as the expected next step. A move into a final state asks first. Moves that exist from this state but were not offered are listed under the strip with the reason: the privilege needed, the fields to complete first, or that the move's condition does not hold. The status column of the list uses the same chips, and the counted chips above the table offer the workflow's states in the order they flow.
Archiving
Archiving (submission:delete) removes records from lists and reads while keeping
their versions, files and payment rows intact and auditable. It is not deletion — for
scheduled, permanent removal see data retention.
Exporting
Export CSV, in the form's menu beside its title, exports the whole filtered
result set — not just the page you are looking at — up to 50,000 rows. It needs the
report:export privilege and a plan that includes exporting.
Columns come from the form's live schema, so a field nobody has filled in still gets an empty
column, and the file's shape does not change with its contents. Text cells that begin with
=, +, - or @ are prefixed with an
apostrophe so a submitted value cannot execute as a formula in a spreadsheet.
Computed values are not exported. The file carries what people submitted; totals, allocated reference numbers and other server-derived values are not field columns in it. If you need a computed figure in a spreadsheet, build a report — reports can select computed fields.
Importing history
Import CSV (submission:write), in the same menu, brings past
records in. Column
headers are matched to your fields by label first, then slug, case-insensitively,
which is what lets a Faldaro export be re-imported unedited.
Every file is previewed before anything is written: a dry run reports what mapped, what was ignored, and the first problem on each bad row. Rows are then imported independently — a bad row is skipped and reported rather than failing the whole file.
| Column | Treated as |
|---|---|
ID, Created, Updated | Ignored. The timeline stays honest — map historic dates into a date field of your own. |
Reference | Recorded verbatim, so historic records keep the numbers people already quote. |
Workflow state | Sets the state — and additionally requires submission:transition. Unknown states are refused per row. |
| Anything else | Matched to a field, or listed as ignored. |
Files are capped at 2,000 rows and a larger file is refused rather than silently truncated — split it. Yes/no columns accept true/false and yes/no; blank cells are skipped rather than written as empty. Tick as draft to import records that required-field validation does not yet bind.
What importing deliberately does not do
Imported records run through the real engine, so totals are computed and validation applies. But nothing fires:
- No notifications are sent.
- No integrations or webhooks are dispatched.
- No agents run.
- No workflow transitions execute, even when a state is imported.
- No payments are matched and no deliveries are minted — imported history has no submitter waiting to claim anything.
- No reference numbers are allocated; the value from your file is used instead.
Loading three years of history should not email three years of customers. Every imported record is marked as imported in the audit log.
Afterwards, set your reference number counter above the highest value you imported, or the next real submission will collide with your history.
The form's own settings
Two settings that belong to the form rather than to its draft sit under the table, each as one row stating the fact: Partner organizations — whom the form is shared with, if anyone — and Data retention — how long its submissions are kept. Open a row to change it. Everything else about the form is edited in the builder.