Web form intake
A public, configurable browser form rendered at /submit/<slug>. No API key, no
auth — humans show up, fill it in, submit. Best for customer-facing feedback links and
lightweight in-product "Send feedback" buttons.
When to use it
- Customer-facing "Report a bug" / "Suggest a feature" pages.
- Internal feedback links you can drop into Slack, READMEs or onboarding docs.
- Anywhere a human will be the one filling things in.
Field configuration
Each field declares a name, label, type and an optional mapping to a brief field. Mappable targets:
mapTo | Effect |
|---|---|
title | Becomes the brief title. |
description | Becomes the brief description. |
submitter_email | Stored on the brief for follow-up. |
| (unmapped) | Kept on the brief for audit, just not surfaced as a primary field. |
Field types
| Type | Renders |
|---|---|
text | Single-line input |
textarea | Multi-line input |
email | Single-line input with email validation |
select | Dropdown with the configured options |
Default fields
[
{ "name": "title", "label": "Title", "type": "text", "required": true, "mapTo": "title" },
{ "name": "description", "label": "Description", "type": "textarea", "required": true, "mapTo": "description" },
{ "name": "email", "label": "Your email", "type": "email", "required": false, "mapTo": "submitter_email" }
] What submitters see
A clean, branded page on your Lithify subdomain. The form respects the configured field order; required fields are validated client-side and re-validated by the handler. After submit, a success page shows a stable reference id the submitter can quote.
Spam. Web form intakes go through the flagging agent like every other
channel. Obvious junk gets shunted to cancelled automatically; nothing reaches
your inbox unless it scored as legit.