# Forms

> Ask members questions on the web or on Discord, then see every answer and the totals in the dashboard.

A **form** is a list of questions for your members. Use one for staff applications, appeals, event sign-ups or feedback.

Members can answer in two places:

- **On the web.** Every form has a short link, like `ccbot.app/f/aB3x9KqZ`. Members log in with Discord and fill it in.
- **On Discord.** A command starts the form. The bot opens a private thread and asks the questions one at a time.

## Make a form

1. Open **Forms** on the dashboard and press **New form**, or pick a ready-made one.
2. Add questions with **Add question**. Drag them to change the order.
3. Click a question to edit it. The preview shows how it looks on the web and on Discord.
4. Open **Settings** to choose the rules (see below).
5. Press **Save**. Open **Share** to copy the link.

## Question types

| Type | What members do |
|---|---|
| Short text, Paragraph | Type an answer |
| Number, Email, Link, Date | Type an answer. The bot checks the format. Dates can have an earliest and latest day, and on Discord can be typed like `2 Feb 1980` |
| Date and time | Picked in your server's time zone (Settings → Timezone), shown on the form. On Discord, type it like `2026-10-26 17:00` or `tomorrow 5pm`. Answers show in each viewer's own time |
| Single choice, Multiple choice | Pick from your options |
| Yes / No, Rating | Press a button |
| Member, Role, Channel | Pick from the server |
| File upload | Attach a file (premium) |
| Info text | Read it, then continue |
| Page break | Starts a new page on the web. Discord asks one question at a time anyway |

## Start it on Discord

Put this in a slash command's script:

```python
await start_form("staff-application")
```

Use the **Form ID** from the form's **Settings**. The command replies with a link to the member's thread, following the command's own settings. Opening the thread takes a few seconds, so the command must answer Discord first:

- **Show thinking…** on (the default): nothing else to do. Turn on **Only the user sees the reply** to keep the link private.
- **Show thinking…** off: your script answers first and picks private or public itself:

```python
await defer_response(ephemeral=True)
await start_form("staff-application")
```
 Automations can do the same with the **Start a form** block.

How the thread works:

- Only the member, the bot and moderators with **Manage Threads** can see it.
- A header message stays at the top with a **Cancel** button. The bot asks one question at a time below it, and removes each answered question and the member's reply, so the thread stays clean.
- The bot asks one question at a time. Typed answers are checked. **3 wrong answers in a row** end the form, and the member starts again.
- At the end the member sees all their answers and presses **Submit** or **Edit an answer**.
- **10 minutes** with no answer ends the form.
- The thread is deleted 30 seconds after the form ends.

> **Tip:** Pick a **Discord threads** channel in **Settings**, for example `#applications`. Members need **View Channel** and **Send Messages in Threads** there. The bot needs **Manage Messages** to clear answers as it goes. The dashboard checks this and can fix it for you.

## Settings

- **Answers per member**: one only, as many as they like, or a new answer replaces the old one.
- **Deadline** and **Max answers in total**: after either, the form stops taking answers.
- **Post each answer**: the bot posts every new answer to a channel you pick.
- **Roles after sending**: give or remove roles when a member sends the form.

## See the answers

Open a form's **Answers**:

- **Summary** shows a bar for each option with its percent, rating averages, number ranges and the latest text answers.
- **Each answer** lists every member's answers. Click one to see it all, or delete it.
- **Export to Excel** downloads everything (premium).

## Limits

| | Free | Starter | Basic | Advanced |
|---|---|---|---|---|
| Forms | 3 | 15 | 50 | 200 |
| Questions per form | 10 | 25 | 50 | 50 |
| Answers per month | 100 | 2,000 | 10,000 | 50,000 |
| File upload questions | No | Yes | Yes | Yes |
| Excel export | No | Yes | Yes | Yes |

Uploaded files count toward your server's storage on the **Files** page. If a plan ends, forms over the limit turn off, and file questions are skipped until you upgrade again. Nothing is deleted.
