---
title: "Forms"
slug: workspace/forms
url: https://projectri.com/docs/workspace/forms
section: workspace
audience: workspace
app_route: "/[slug]/[user]/forms"
permissions: [form.view, form.manage]
mobile: false
updated: 2026-09-08
source: Projectri documentation
---

# Forms

Build a public intake form, share its link, and turn what people send you into tasks in a project.

![Forms](https://projectri.com/docs-shots/workspace-forms.png)

## What it is

A form is a public link that collects requests from outside the workspace — bug
reports, briefs, sign-ups — and turns each submission into a task in a project
you choose. The builder, a live preview of what a visitor sees, and that form's
submissions are all on this one screen.

## How to get there

**Forms** is in the main navigation, beside Support, and in the ⌘K page search.
The row and the list need `form.view`.

- Creating, editing, publishing and deleting a form needs `form.manage`. Without
  it there is no **New form** button.
- The **Submissions** row under the Forms caret, and the Submissions tab inside a
  form, need `form.submission`. Without that key the row is not drawn at all.

There is no plan gate.

## How to use it

### Create a form

1. Press **New form**. It is created immediately, named *Untitled form* with one
   question, and selected in the rail.
2. Give it a **Name** and a **Description** — both are shown to the visitor.
3. **After submitting, say** is the thank-you line. Left blank it reads *"Thanks
   — your submission has been received."*
4. Press **Save**. Nothing on this screen saves as you type; the whole form is
   written in one request.

### Add questions

1. In the **Questions** panel, press **Add question**.
2. Pick a type: short text, long text, number, date, select, multi-select,
   checkbox, email, URL or file.
3. Type the question label. **More settings** opens the placeholder, the help
   text shown under the label, and — for select and multi-select — the
   **Options, separated by commas**.
4. Mark it **Required** if it must be answered. A required checkbox means it has
   to be *ticked*, not merely present.
5. Reorder with **Move up** / **Move down**. The order you see is the order the
   visitor sees.
6. A form holds at most **60 questions**, and a choice field at most **50
   options**.

Saving is refused if a select or multi-select field has no options — an empty
dropdown on a page a stranger is looking at is not something they can work
around.

### Publish it

1. Turn on **Accept public submissions**. The hint under the switch becomes the
   public URL, which is `/f/<slug>` on your workspace's domain.
2. Set **Status** to **Active**.
3. Press **Copy link**. The button only appears when the form is both public and
   Active.
4. The slug is a readable stem plus a random suffix, so renaming the form does
   not change the link and one workspace's forms cannot be guessed from
   another's.

### Decide what a submission becomes

In the **What a submission becomes** panel:

1. **Create a task for each submission** — on by default.
2. **Project** — pick one. With no project nothing is created, and the panel says
   so; the toggle alone does nothing.
3. **Title comes from** — a question's answer, or the form's name. Left on the
   form's name, the task is titled *"Form name — submitter"*, which stops a
   queue of identically named rows.
4. **Body comes from** — one question's answer, or **Every answer**, which
   renders the whole submission labelled and in order.
5. **Assign to** — a member. They also get the notification when something
   arrives.

The submitter's name and email, if they gave them, are appended to the task
description under a rule.

### Pause or retire a form

1. **Status: Paused** — the link says the form is not available until you set it
   back to Active. This is the way to close intake without losing anything.
2. The bin icon asks a different question depending on what the form holds. A
   form with no submissions is **deleted for good** and its link stops working
   immediately. A form that has collected anything is **archived** instead —
   public submissions are turned off and the record of what people asked for is
   kept.
3. An archived form can be set back to Active from the Status picker, and its
   original link works again once public submissions are back on.

### Read what came in

1. The **Submissions** tab inside a form shows that form's submissions with each
   answer labelled, and the task it became.
2. For everything across every form at once, use
   [Submissions](/docs/workspace/form-submissions).

## What it affects

- **A project's task list.** Each submission creates one task in the chosen
  project, status To do, with the form's default priority and default assignee.
  It takes the next identifier in that project's sequence, like any other task.
- **The notification bell.** The default assignee gets a *New submission*
  notification, linking to the task if one was made.
- **Nothing else in the workspace is public.** The submit endpoint is the only
  unauthenticated write in the product that creates a task, which is why it is
  narrow: reachable only by the opaque slug, only while the form is both public
  and Active, and validated field by field against the form's own definition.
- **Deleting a form does not delete its tasks.** Work already in somebody's
  queue survives an intake form being retired; the submission's link to the task
  is a pointer, not a cascade.

## On mobile

This screen is web only. Forms are built and read on the web; the tasks they
create appear on the phone like any other task.

## Limits and gotchas

> [!WARNING]
> Deleting a question does not delete the answers already given to it. Answers
> are stored against the question's id, so what is lost is the label — the
> submissions list then shows the raw key with **(removed)** beside it rather
> than dropping the answer.

- **The public page is rate limited** to 10 submissions per minute per form per
  IP address. Over that it answers *"Too many submissions — try again in a
  minute."*
- A form that is not public, or not Active, returns a plain *"This form isn't
  available"* — it never says whether the slug exists.
- Answers to questions the form does not declare are dropped rather than
  rejected, so a stray field cannot make the form unusable for everyone.
- URL answers must be `http` or `https`. Short text is capped at 2,000
  characters and long text at 20,000.
- If the task cannot be created — the project was archived, say — the submission
  is still saved. The visitor was promised the submission; the task is the
  workspace's convenience.
- The public form page is marked `noindex` and blocked in `robots.txt`.

## Related

- [Submissions](/docs/workspace/form-submissions) — everything that has come in, across every form.
- [Support](/docs/workspace/support) — the other way work arrives from outside.
- [Projects](/docs/workspace/projects) — where a submission's task lands.
- [Notifications](/docs/features/notifications) — who is told when something arrives.

## Related

- [Form submissions](https://projectri.com/docs/workspace/form-submissions.md): Everything that has come in through every form in the workspace, newest first, with the task each submission became.
- [Support](https://projectri.com/docs/workspace/support.md): The internal ticket queue — raise, triage, reply to and resolve support tickets, with SLA state, escalations, work orders and a route into the knowledge base.
- [Projects](https://projectri.com/docs/workspace/projects.md): The project list and the project itself — its people, milestones and progress, its tasks as a table, board, timeline or roadmap, and its documents, boards and meetings.
- [My Tasks](https://projectri.com/docs/workspace/my-tasks.md): Every task assigned to you — or the whole workspace — as a Kanban board, a table or a timeline, with counts, a due-date strip, saved views and board setup.
- [Notifications](https://projectri.com/docs/features/notifications.md): What Projectri tells you about, on which of the five channels, what you can turn off, and the difference between a channel and a subscription.
