Feature — collecting

File uploads

File upload is one of the 16 question types in NumoForms: a respondent attaches a document or a photo as their answer. Uploaded files go into a private storage bucket with no public URL. Reads are restricted to the organisation that owns the survey and are served through signed URLs valid for 300 seconds, so a link that leaks out of a screenshot or a browser history is dead within five minutes.

What an upload question is for

Some answers cannot be typed. A grant applicant has accounts to submit. A tenant reporting damp has a photograph. A supplier questionnaire needs a certificate. A recruitment form needs a CV. In each case the alternative to an upload field is an email thread running alongside the survey, which is how attachments end up detached from the response they belong to.

An upload sits in the survey like any other question. It can be made required, it can be shown or hidden by conditional logic, and it can be given a question image and an inline heading like the rest of the palette. Put it behind a logic rule wherever it is only relevant to some respondents — asking everybody for a document that most of them do not have is a reliable way to lose them.

How storage and access actually work

The security model here is worth reading in detail, because "we store your files securely" is a claim every survey tool makes and few explain.

QuestionAnswer
Bucket visibility Private. No object has a public URL.
Who can read a file Members of the organisation that owns the survey, and nobody else.
How a read happens A signed URL is generated on demand for that specific object.
Signed URL lifetime 300 seconds (five minutes).
Region Supabase, London (eu-west-2).
Encryption TLS in transit, AES-256 at rest, provided by the platform.
Deletion Clearing test responses removes uploads, completed responses and partials together.

Why a 300-second signed URL rather than a permanent link

A permanent link to a file is a permanent credential. Once it exists it can be pasted into a ticket, forwarded, indexed, or left in a browser history on a shared machine, and it keeps working for as long as the file does. A signed URL inverts that: it is minted at the moment somebody with the right to see the file asks for it, and it expires on a five-minute clock whether or not it was used.

The trade-off is honest — a signed URL that you copy and come back to in an hour will not open. That is the intended behaviour. Reopen the response and a new link is issued.

Organisation isolation

Access is decided by which organisation owns the survey, and that decision is pinned server-side rather than taken from anything the browser sends. Roles inside the organisation are owner, admin and member, with the last owner protected from removal or demotion at database level so an account cannot be orphaned. Row-level security applies throughout the data model; the same defence-in-depth approach is described on the save and continue page, where partial responses live in a table with no policies at all.

Uploads in your results

Attachments show up where the rest of the answer does. Browsing individual responses one at a time gives you the upload in context with everything else that person said, which is usually how you want to read a case: photograph next to the description, certificate next to the claim it supports.

Two limits to plan around. First, an uploaded file is not something a chart can summarise — uploads are read, not aggregated. Second, a CSV export is a table of text, so build your survey to capture the facts you intend to count in countable questions and use the upload for evidence, not for data you will later need to total.

Asking for files without collecting too much

An upload field is the fastest way to acquire personal data you did not intend to hold. A photograph carries metadata. A bank statement carries a great deal more than the one figure you wanted. Under UK GDPR, data minimisation is not optional, so:

The UK GDPR page covers roles and the lawful-basis questions that come up in a DPIA, and the security page lists our sub-processors.

What it does not do

Related

See the full list of 16 question types for what else can sit alongside an upload, per-survey partner branding if you are collecting documents on behalf of another organisation, and the product overview for how the pieces connect.

Common questions

Are uploaded files publicly accessible?

No. Files go into a private storage bucket. There is no public URL for an uploaded file. Members of the owning organisation read a file through a signed URL that is valid for 300 seconds, after which the link stops working.

Who can see a file a respondent uploads?

Only members of the organisation that owns the survey. Access is scoped to the organisation and pinned server-side rather than being decided by the browser, so one workspace cannot request another workspace’s files.

Where are uploaded files stored?

In the same UK Supabase project as the survey data, hosted in London (eu-west-2). Files are encrypted in transit with TLS and at rest with AES-256 by the platform.

How do I delete uploaded test files?

Clearing test responses on a survey removes the uploaded files along with the completed and partial responses, so a survey can be reset to empty before it is published.

Evidence, attached to the answer.

Add an upload question and the photograph, the certificate or the set of accounts arrives with the response it belongs to. That is one email thread you no longer have to run alongside the survey.

  • A private bucket — no file has a public URL
  • Reads through signed URLs that expire in 300 seconds
  • Clearing test responses deletes the test files with them
Start building