Skip to content
Faldaro
All guides

Public forms

A form is never reachable anonymously just because it exists. A public link is an explicit act: an unguessable token that renders the form to whoever holds it — and deliberately nothing more.

Someone holding the publish privilege issues a link per form. The URL carries a 256-bit token rather than the form's id, so the space cannot be walked; rotating the link invalidates the old URL instantly, which is the recovery for a link that spread further than intended. Every refusal — revoked, rotated, never existed — is an identical 404, so probing learns nothing. A link is one of two ways into a form without an account; the other is the form's own email address — see Email-to-form.

What a public form withholds

The anonymous payload is a sanitised schema: computed fields are marked computed but their formulas are withheld, the logic and workflow documents are not sent at all, and settings are a curated subset. A public form must not become an oracle for the pricing or the decisioning behind it. A link's owner can opt in to live evaluation — computed values only, never the formulas — for forms that should show a running total.

Submissions, uploads and spam

Anonymous submissions run the same engine and validation as any other. File upload exists only when the live schema declares a file field, and nothing uploaded is readable back through the public surface. A built-in per-instance throttle bounds runaway scripts, and the operator can require a captcha on submission — one that fails closed when its provider is unreachable, because a captcha that waves submissions through during an outage is decorative.

In your submitters' language

A form can carry a translation per language. In the builder's Public form tab, pick a language and fill in your wording beside each string: the form's own name and description, page titles, field labels with their help text, placeholders and tooltips, the labels on each choice, the submit button and the message after submitting. Choice values are never translated — translating a label must not change what a submission records.

Substitution happens on the server, one language at a time, chosen by the ?lang in the URL or the visitor's own browser setting. The tables themselves never reach the browser, which keeps the rule the rest of this page describes: a translation can only restate something already public. Translations publish with the version, so an unfinished one cannot change a live form, and a string you leave blank falls back to your original — a half-finished translation degrades rather than breaking.

Translate it with AI

Rather than typing a hundred boxes, choose a language and press Translate. The whole form comes back translated, into the same editor, for you to read before you save — nothing reaches a submitter until you save and publish it yourself.

It fills gaps only. A string you wrote by hand is never sent to the model and never overwritten, so running it again after you add a field translates the new strings and leaves the rest exactly as you left them. The translation is prompted as form wording — short enough for a label or a button, keeping your punctuation and capitalisation, leaving proper nouns and product names alone. It costs AI credits like any other AI feature, and it appears only where AI is configured. See AI.

Faldaro's own words, too

Where a form has any translation, the page offers a language picker naming each language in its own words; answers already typed survive the switch. Everything on that page that is ours rather than yours is translated with it, in twenty-four languages — the buttons and the step counter, the notice when answers are put back from a previous visit, the refusals, the sub-labels inside an address or contact field, the file chooser, and the payment step — including Stripe's own card form, wherever Stripe carries that language. A date picker is localised properly rather than merely worded: month and weekday names in the reader's language, dates written in their own order, and the week starting on the column their country starts it on.

The list is Czech, Danish, Dutch, English, Finnish, French, German, Greek, Hindi, Indonesian, Italian, Japanese, Korean, Norwegian, Polish, Portuguese, Romanian, Russian, Simplified Chinese, Spanish, Swedish, Turkish, Ukrainian and Vietnamese. You can still type any language code by hand to translate a form into something outside that list; Faldaro's own words around it stay English rather than showing blanks. Right-to-left languages are not offered yet: the public page does not lay out right-to-left, and we would rather say so than ship a picker that promises it.

How it looks

Unstyled, a public form is a sheet on a desk: the form's name in the display face, the fields on a card that floats on a soft shadow rather than inside a drawn border, and one pool of the accent colour falling from the top of the page. The pool is painted from whatever accent the form has — the organisation's, or its own — so a brand colour reaches the page without any further setting, and it steps aside the moment you choose a page colour or write your own CSS.

Your branding

Under Settings → Branding, set an accent colour and a logo; public forms wear them. A form's own appearance — colours, corner radius and CSS scoped to the form page, all in the builder's Style view on the Design tab — always wins, and the organisation brand fills in when a form styles nothing. On paid plans the "Powered by Faldaro" attribution disappears.