Forms & Custom Questions

Ticketo supports pre-ticket forms that collect information from users before a ticket is created. These appear as Discord modals (pop-up forms) when a user clicks a panel button.


How Questions Work

Questions are configured per panel button or select option in the dashboard's Panel Editor. When a user clicks a button to create a ticket, the configured questions appear as a Discord modal form that must be completed before the ticket is created.


Setting Up Questions

Via the Dashboard

  1. Go to Dashboard → Panels

  2. Create or edit a panel

  3. Select a button or select menu option

  4. In the button/option settings, find the Questions section

  5. Add questions with the following properties:

Property
Required
Description

Question text

Yes

The label shown to the user (max 45 characters)

Required

Yes

Whether the user must answer to proceed

Type

Yes

TEXT (long text area) or SHORT (single line)

Placeholder

No

Hint text shown in the empty input (max 100 characters)

Min Length

No

Minimum character count (default: 0)

Max Length

No

Maximum character count (default: 4000)

Default Value

No

Pre-filled text in the input

Example Configuration

A bug report panel might have these questions:

  1. "What is the bug?" — Required, long text, min 10 characters

  2. "Steps to reproduce" — Required, long text, placeholder: "1. Go to... 2. Click..."

  3. "Expected behavior" — Optional, long text

  4. "Your operating system" — Optional, short text, placeholder: "e.g., Windows 11"


Question Limits

  • Maximum 5 questions per button/option — This is a Discord API limitation (modals support a maximum of 5 action rows)

  • Question label: max 45 characters

  • Placeholder: max 100 characters

  • Answer length: configurable via minLength and maxLength


How Questions Are Presented

When a user clicks a panel button that has questions:

  1. A Discord modal (pop-up form) appears

  2. Each question is displayed as a text input field

  3. Required fields must be filled in before the user can submit

  4. After submission, the ticket creation process continues

[Screenshot placeholder: Discord modal with custom questions]


How Answers Are Stored

Answers are handled in two ways:

1. Displayed in the Ticket

Answers appear as embed fields in the ticket's opening message. Each question-answer pair is shown as:

This is immediately visible to all ticket participants (creator and staff).

2. Saved to the Database

Answers are stored in the QuestionAnswer table with:

  • The question ID

  • The ticket ID

  • The user ID

  • The answer text

This allows answers to be queried and displayed in the dashboard ticket history.


Topic Prompt

Separate from custom questions, categories can require a topic before creation:

  • If requireTopic is enabled on a category and no topic is provided, a modal appears asking the user to enter a topic (5-1000 characters)

  • The topic is stored encrypted on the ticket record

  • The topic appears in the ticket's opening message and in the dashboard


Managing Questions

Important: Editing questions directly from Discord (in-bot) is no longer supported. The modal shows a message directing users to the dashboard.

All question management must be done through the web dashboard Panel Editor:

  • Add, edit, reorder, or remove questions

  • Toggle questions on/off with the enabled flag

  • Preview how questions will appear


Tips

  • Keep question labels short and clear — they appear as input labels in the modal

  • Use placeholders to guide users on the expected format

  • Set appropriate minLength values to prevent empty or unhelpful answers

  • Make questions optional if they don't apply to all situations

  • Remember: the 5-question limit is per button, not per panel — different buttons can have different questions

Last updated