β Configuration
Hello there! Welcome to the configuration guide on how to configure Open Ticket without any problems!
Many people fail with correctly writing the configuration, but that's mostly because they can't write JSON.
This guide also contains a small FAQ section for frequently occuring problems.

Configuration
How to configure Open Ticket?
β Configurationβ
Open Ticket is fully configurable using five JSON config files. Each file controls a different aspect of the bot, allowing you to customize everything from ticket options to panel layouts. Hereβs a breakdown of each config file and what they do:
πΌ config/general.json
β General Bot Settingsβ
This file contains the core settings of Open Ticket, including:
- Bot token - never share this
- Bot Status - configure the bot status
- Primary Color - for embeds and messages
- Permissions - who can manage tickets
- Extra settings - button visibility, emojis & additional settings
π This is the most important config file!
β config/questions.json
β Custom Ticket Questionsβ
This file defines questions that users must answer before opening a ticket.
- Each question is shown in a form (modal) before ticket creation.
- You can add up to 5 questions per ticket type.
- Questions can have custom names, placeholders, and input limits.
π If no questions are configured, tickets will open immediately!
π config/options.json
β Ticket Types & Buttonsβ
This file defines the ticket options, which appear as buttons or dropdown items in your panel.
- Each option represents a ticket type, website link, or reaction role.
- You can customize admins, embeds, and button layouts per option.
- Options can be linked to specific questions (from
questions.json
). - Options can be used in panels (from
panels.json
) to show them.
π If no options are configured, users won't be able to create tickets!
π config/panels.json
β Ticket Panels & Embedsβ
Panels are the embeds/messages that display the ticket options in Discord.
- Each panel contains buttons/dropdowns linked to ticket options.
- You can create multiple panels for different categories.
- Panels can be fully customized with text, embeds, and layouts.
- Panels can be linked to specific options (from
options.json
).
π After configuring a panel, use the /panel
command to send it to a channel!
π config/transcripts.json
β Transcript Settingsβ
This file controls how ticket transcripts are saved when a ticket is deleted.
- Choose between HTML or text transcripts.
- Customize the transcript layout, colors, and format.
- Transcripts are disabled by default.
π Transcripts let you keep a record of past tickets for future reference!
π§ How to Edit the Configβ
- Navigate to the
config/
folder inside your botβs files. - Open the JSON file you want to edit using a text editor.
- Modify the settings to fit your needs.
- Save your changes and restart the bot for them to take effect.
π Need more details? Check out the full config reference!
Thatβs it! You're ready to test the bot. π
π‘ Frequently Asked Questionsβ
How to add multiple questions, options or panels?β
To create multiple questions, options or panels, you need to copy everything between and including the brackets ({...}
).
Then you paste it after the last question ({...}
) and make sure that they are seperated by a comma.
Beforeβ
[
{
"id":"example",
"lorem":"ipsum",
/* ... more settings (1) */
},
{
"id":"example-2",
"lorem":"ipsum",
/* ... more settings (2) */
}
]
Afterβ
[
{
"id":"example",
"lorem":"ipsum",
/* ... more settings (1) */
},
{
"id":"example-2",
"lorem":"ipsum",
/* ... more settings (2) */
},
{
"id":"example-3",
"lorem":"ipsum",
/* ... more settings (3) */
}
]
How to remove the website & reaction role options?β
To remove options that you don't want (e.g. website or reaction roles), you need to delete everything between and including the brackets ({...}
) from the option you want to remove.
Then you make sure that the comma also has been removed.
Beforeβ
[
{
"id":"example-ticket",
"type":"ticket",
/* ... more settings (Option 1) */
},
{
"id":"example-ticket-2",
"type":"ticket",
/* ... more settings (Option 2) */
},
{
"id":"example-website",
"type":"website",
/* ... more settings (Option 3) */
},
{
"id":"example-role",
"type":"role",
/* ... more settings (Option 4) */
}
]
Afterβ
[
{
"id":"example-ticket",
"type":"ticket",
/* ... more settings (Option 1) */
},
{
"id":"example-ticket-2",
"type":"ticket",
/* ... more settings (Option 2) */
}
]
Can I ignore or leave ... empty?β
Within the config, there are a lot of settings which are optional. These are most of the times lists/arrays (e.g. ["some list"]
), if you want to ignore it, you need to leave it empty by setting it to ([]
).
Nothing else is required to be done, just make sure that the list is empty by setting it to []
.
Use Casesβ
general.json
-"globalAdmins"
, ...options.json
-"ticketAdmins"
,"readonlyAdmins"
,"questions"
,"claimedCategory"
, ...panels.json
-"options"
,"fields"
, ...
Before (options.json
example)β
"channel":{
"prefix":"question-",
"suffix":"user-name",
"category":"",
"closedCategory":"",
"backupCategory":"",
"claimedCategory":[
{"user":"user id","category":"category id"}
],
"description":"This is a question ticket"
},
After (options.json
example)β
"channel":{
"prefix":"question-",
"suffix":"user-name",
"category":"",
"closedCategory":"",
"backupCategory":"",
"claimedCategory":[],
"description":"This is a question ticket"
},
π Summaryβ
Congratulations! Open Ticket should now be configured correctly. π
Don't forget to give Open Ticket a star on Github to help us grow!