> ## Documentation Index
> Fetch the complete documentation index at: https://docs.p2w.lol/llms.txt
> Use this file to discover all available pages before exploring further.

# Forms

> Reusable intake flows shown to users before they can create a ticket.

## Form Rules

<CardGroup cols={2}>
  <Card title="Server Level" icon="server">
    Forms are owned and managed at the server level.
  </Card>

  <Card title="Many-to-One" icon="sitemap">
    A single form can be attached to many different ticket options across various panels.
  </Card>

  <Card title="One per Option" icon="lock">
    An individual option can have at most **one** intake form attached at a time.
  </Card>

  <Card title="Answer Snapshots" icon="camera">
    Form answers are snapshotted onto the ticket. Old tickets keep the exact answers submitted at that time.
  </Card>
</CardGroup>

***

## Form Limits

Due to Discord's modal constraints, the following limits apply:

* Up to `25` forms per server.
* Up to `5` fields per form.
* Up to `25` static options per `select` field.

***

## Attaching a Form

Once you have created a form, you must attach it to an option so that it triggers when users interact with the panel.

<Steps>
  <Step title="Open Ticket Forms">
    Run `.tickets forms`. Click **Add** to create a new form.
  </Step>

  <Step title="Configure Form Settings">
    Set the form's name, title, and fields.
  </Step>

  <Step title="Select Your Form">
    Run `.tickets options`. Choose your panel and option, then select **Form**.
  </Step>

  <Step title="Bind the Form">
    Choose the form you just created from the dropdown.
  </Step>
</Steps>

***

## Form Settings

| Setting               | Description                                                                                               |
| --------------------- | --------------------------------------------------------------------------------------------------------- |
| **Name**              | Internal form name (for your reference only)                                                              |
| **Title**             | The modal title shown to users when they open a ticket                                                    |
| **Filtering Enabled** | Whether server word filters and AutoMod keyword checks run against text answers before a ticket is opened |

***

## Supported Field Types

All form fields share these baseline attributes: `Label`, `Key`, and `Required`.

The `Key` is used to reference a field's answer in variables as `{ticket.form.field.<key>}`.

| Type             | Description                               |
| ---------------- | ----------------------------------------- |
| `short_text`     | A single-line text input                  |
| `long_text`      | A multi-line paragraph text input         |
| `checkbox`       | A true/false checkbox                     |
| `select`         | A static dropdown with predefined options |
| `role_select`    | A Discord role selector                   |
| `user_select`    | A Discord user selector                   |
| `channel_select` | A Discord channel selector                |
