# Forms

Forms are standalone feedback forms and surveys you build in Usero, publish to a public link, and collect responses to. They are
separate from the floating widget: a widget sits on your app and catches passing feedback, a form is a page you send people to on
purpose (a bug report intake, a feature request survey, an onboarding questionnaire, a churn exit survey). Responses land in the
same Usero project as the rest of your feedback.

## What it does

- **Visual builder.** Drag fields into order, set labels, mark fields required, add options, and set a brand color. No code, no
  deploy.
- **Public link.** Every form publishes to `usero.io/f/<slug>` with an 8-character slug. Share it directly or embed it in a
  cross-origin iframe; the form submits to itself either way.
- **Responses table.** Submissions collect into a table you can read in the dashboard and export to CSV.
- **Built-in analytics.** Views, unique visitors, submission rate, average time to complete, and a view-to-submit funnel, per form
  and across all forms.
- **Privacy-first.** Respondent IP addresses are encrypted at rest with AES-GCM. You never see a raw IP.

## Create a form

1. Open your project and go to **Forms** (`usero.io/YOUR_CLIENT_ID/forms`).
2. Click **New Form**. Usero creates the form, gives it a unique public slug, and drops you into the builder.
3. In the builder, give the form a title and an optional description. These show at the top of the public form.
4. Add fields (next section), set a brand color under **Settings**, and the form is live. New forms publish as **Open** by
   default, so the public link works immediately.

A form has an **Open / Closed** toggle in the builder. Closed forms still resolve at their link but show a "no longer accepting
responses" message instead of the fields, so you can pause collection without breaking the URL or losing past responses.

## Field types

Ten field types cover the common cases. Each field has a label, an optional description, and a required toggle.

| Type            | What it collects                                                            |
| --------------- | -------------------------------------------------------------------------- |
| Short Text      | A single line of text.                                                      |
| Long Text       | A multi-line text area, for open-ended answers.                            |
| Email           | A text field validated as an email address on submit.                       |
| Number          | A numeric value, with optional min and max bounds.                          |
| Dropdown        | One choice from a list you define.                                          |
| Multi-Select    | Several choices from a list.                                                |
| Multiple Choice | One choice, shown as radio buttons.                                         |
| Checkboxes      | Several choices, shown as checkboxes.                                       |
| Star Rating     | A 1 to N star rating (default 5).                                           |
| Linear Scale    | A numeric scale with optional min and max labels (for example 1 to 10).    |

Choice fields (dropdown, multi-select, multiple choice, checkboxes) take a list of options you edit inline. Number, rating, and
scale fields take min and max bounds. Fields support conditional logic: a field can be set to show only when an earlier field
equals, does not equal, contains, or is not empty, so the form adapts to what the respondent picked.

## Share it

Every form has a public URL at `usero.io/f/<slug>`, where the slug is the 8-character id assigned at creation.

- From the **Forms** list, open a form's menu and use **Copy Public Link** or **View Public Form**.
- The public page renders on a clean light or dark surface (it follows the visitor's OS color scheme) with your title,
  description, brand color, and fields. There is no Usero account required to fill it in.
- Submitting shows your custom success message. You set that message and the submit button label under **Settings** in the
  builder.

To take a form offline, flip it to **Closed** in the builder. The link stays valid and shows a closed message; existing responses
are untouched.

## See responses and analytics

Open a form and switch tabs in the builder:

- **Responses.** Every submission as a row, with the answers laid out by field. **Export CSV** downloads the lot for a spreadsheet
  or a pivot table.
- **Analytics.** Views, unique visitors, submissions, submission rate, and average time to complete, plus a funnel from viewed to
  interacted to tried-to-submit to submitted, and a daily trend chart. The **Forms** list also has a cross-form **Analytics** tab
  that rolls these up across every form in the project.

If you turn on **Notify on submission** in a form's settings, Usero emails the project owner each time someone submits (the email
includes the answers and a link to the responses tab). This respects the owner's transactional email preference.

## Next

A form response is feedback like any other in Usero, so it feeds the same loop as the widget and your imported GitHub issues. The
AI clusters duplicate reports, and from a clustered item you can open a GitHub pull request with a first pass at the fix, which you
review and merge yourself. Nothing auto-merges.

- [Feedback widget](/docs/widget): the floating button, for passive in-app feedback alongside your forms
- [GitHub (AI pull requests)](/docs/integrations/github): turn a clustered request into a PR
- [Find your clientId](/docs/find-your-client-id)
