Conditional questions
A field’s current answer is an ordinary value, so logic is ordinary code. No rule builder, no separate condition language.Live data inside the form
A form can call one of your workflows while it’s open and render the result: stock levels, license counts, an employee’s current device, a price.- Results are cached per set of arguments. The call runs once for each distinct set. Change the selected model and it runs again. Change an unrelated field and it doesn’t run at all. Calling it from the render is cheap, not a request per keystroke.
- The form stays usable while it’s in flight, then re-renders with the result.
Query workflows should be read-only. They run whenever their arguments change, including in previews, so anything that creates or modifies belongs in the submit workflow instead.
The submit workflow
args object rather than the whole form, so the workflow’s inputs are a contract you control: rename a field without breaking the workflow, or pass derived values instead of raw answers.
A form doesn’t need a submit workflow. One without it collects and validates answers and stops there, which suits an acknowledgment or informational form.
Safety
Form code runs on Serval’s servers in an isolated sandbox with no network access, no filesystem, and no ambient credentials. The only way a form causes anything to happen is by naming one of your team’s workflows, and every call is re-resolved and re-authorized on the server. A form can never reach further than the workflows the team already has.Finding the forms attached to a workflow
Open a workflow and look for the forms panel. It lists each form that calls the workflow and whether it does so while the form is open or on submit, so you can see the blast radius before changing it.Share and fill
Catalog, tickets, Slack, and audience control.
Manage forms
Versions, run history, folders, and copies across teams.

