FlowTruxFlowTrux/Docs
Docssettings

Forms

Create public forms — hand-built or AI-designed — that trigger workflows when submitted.

Public Forms collect data from external users through a hosted web form. Every submission triggers any workflows you've wired to that form, with the form data exposed as {{trigger.data.fields.<name>}}.

Forms are workspace content (like workflows and shared pages). Each form belongs to one workspace. You create and manage forms in the sidebar tree's Forms section — or straight from a workflow's Trigger inspector (New form), without leaving the editor. The number of forms depends on your plan.

Creating a Form

  1. In the sidebar tree, open the workspace's Forms section.
  2. Click + — gives you an empty form with a name and one default field.
  3. Give it a Form Name and an optional Description.
  4. Design the page in the Design with AI panel (see below), and/or add fields by hand in the Fields panel.
  5. Set Success message and Redirect URL (optional) in the Appearance tab.
  6. Click Save to keep editing as a draft, or Publish to make it live.

Drafts have status DRAFT and are not reachable at the public URL. Published forms have status PUBLISHED. For Member-role users, publishing requires the Publish forms & pages workspace permission — see Members & Roles.

Designing the Form

The form editor is a single design surface built around AI generation, with the field schema and the HTML page kept in sync:

Design with AI

Describe the form you want (tone, sections, layout) and click Generate. If you haven't defined any fields yet, the AI designs a sensible field schema from your description and writes the HTML page for it in one step. If you already added fields, it renders exactly those fields (by their machine name) into a page.

Once a page exists, the button becomes Refine with AI — describe a change ("make it dark with a photo header", "add a totals row") and it edits the existing page with targeted find/replace changes instead of starting over, so your hand-tuned parts survive untouched.

Generation is rate-limited (10 requests/hour per user) and capped by a separate monthly plan allowance for AI form design — see Plan limits below. On plans where the feature is disabled, or once the monthly cap is reached, generation is blocked with an upgrade prompt.

The generated page is a self-contained HTML document with inline CSS. It can never contain <script> tags or external resources (fonts, stylesheets, CDN scripts) — this is a data-collection page, and the platform injects the only submit logic automatically at render time.

Fields Panel

Add, reorder, and edit fields in the Fields panel (shown next to the HTML editor on the HTML tab):

  • Type — text, email, password, number, textarea, select, file upload, or checkbox.
  • Label — what the user sees.
  • Name — the machine key, used as the JSON key in the workflow payload ({{trigger.data.fields.<name>}}). Stable across edits.
  • Placeholder (optional).
  • Required checkbox.
  • Max file size (MB) — file fields only.
  • Options — select fields only, one value|Label pair per line.

A dot next to each field shows whether it's currently present in the HTML (green) or not yet inserted (grey). Use Find to locate a field's control in the HTML editor, or Insert to drop a ready-made control block (label + input + error slot) at the cursor.

More advanced validation (min/max length, regex pattern, accepted file types) isn't exposed as a manual control here, but the AI honors these rules when it designs a field schema from your instructions, and they're always enforced server-side on submission regardless of how a field was created.

Edit by Hand

The HTML tab is a plain-text editor over the same self-contained HTML document the AI produces — paste your own markup or tweak the generated one directly. Every control's name attribute must match a field's machine name for its value to reach the workflow; unmatched control names are flagged as warnings, and a required field with no matching control blocks publishing.

The Preview tab renders the current HTML in a sandboxed frame and lets you submit a test entry — nothing is sent to the server; it just shows you the captured values.

Appearance

The appearance tab is intentionally small — the AI-designed HTML owns the visual (colors, backgrounds, layout, header text):

SettingEffect
Logo URLNot rendered directly by the editor; passed to the AI as a hint so it can include your logo when generating/refining the page
Success MessageShown after a successful submission (unless a redirect URL is set)
Redirect URLIf set, the form redirects here on success instead of showing the success message

Free-plan forms show a small "Powered by FlowTrux" link; upgrading to a white-label plan removes it.

Public URL

Published forms are reachable at:

/f/<publicToken>

publicToken is a random token. Anyone with the URL can submit; there is no authentication on the form side.

If closeAfterDate is set, the form returns a "closed" message after that date instead of the form. If maxSubmissions is set, the form returns a "submissions closed" message once the count is reached.

A hidden honeypot field guards against naive bots: bots that fill it in get a fake "success" response, and their submission is silently discarded before it reaches your workflow.

Embed Mode

Add ?embed=1 to the form URL to render it for iframe embedding on an external site:

<iframe
  src="https://your-domain.com/f/TOKEN?embed=1"
  width="100%"
  height="600"
  frameborder="0">
</iframe>

Embed mode is a white-label perk: on a plan with white-label enabled, it strips the page chrome (background, "Powered by FlowTrux" footer, padding) down to just the form itself. On a plan without white-label, ?embed=1 has no effect — the form still renders as the normal full page (including the FlowTrux footer), since stripping the chrome would also remove the required attribution.

Wiring a Form into a Workflow

A form by itself just collects data. To turn it into a trigger, you connect it to one or more workflows. One form can drive several workflows at once — every active workflow in the form's workspace that uses it runs on each submission.

Step 1 — Use triggerType: "form" in the workflow

  1. In the workflow editor, click the Trigger node.
  2. Set Trigger type to Form.
  3. Pick the form from the dropdown — the forms of the current workspace appear. Need a new one? Click New form right there.
  4. Save the workflow and activate it (status ACTIVE).

When a user submits the form, every active workflow with a matching formId is triggered. Triggering is fire-and-forget: the form's success message renders as soon as the submission is queued, not when the workflows finish.

Step 2 — Read submission data in the workflow

The trigger payload follows a standard shape:

{
  "formId":    "form-cuid",
  "formName":  "Lead intake",
  "submittedAt": "2026-04-30T12:00:00.000Z",
  "fields": {
    "name":  "Ada Lovelace",
    "email": "ada@example.com",
    "company": "Analytical Engines Ltd"
  }
}

Reference these fields in downstream nodes via:

  • {{trigger.data.fields.<name>}} — values for non-file fields
  • {{trigger.data.formId}} / {{trigger.data.formName}} / {{trigger.data.submittedAt}} — submission metadata
File fields

A file field is validated at submission time (size limit, accepted types) and its metadata is passed through to the workflow:

{
  "fields": {
    "resume": {
      "name":        "ada-lovelace-resume.pdf",
      "size":        245678,
      "contentType": "application/pdf"
    }
  }
}

The uploaded file itself is not currently persisted to storage, so there is no download link in the payload yet — only the file's name, size, and content type reach the workflow.

Submissions

View the raw submission history in the workspace's Forms section → (form) → Submissions. Each entry shows the timestamp and the field values. Submissions are kept independently of execution history — even if a triggered workflow fails or is deleted, the submission record stays.

Plan limits

Two separate limits apply to forms:

  • Number of forms per organization — governed by your plan.
  • AI form generations per month — a separate, platform-paid monthly allowance for the Design with AI / Refine with AI feature (a fresh generation and a refine both count the same). This is independent from your AI credits.

See Plans & Limits for current numbers.

  • Triggers — full Trigger node reference, including form
  • Shared Pages — the output counterpart: publish a workflow's result as a public page, also AI-designable
  • Variables & Templates — how {{trigger.data}} references work in nodes