Installation
Create a Discord application, enable the required intents, connect the token to TicketCord, and invite the bot with the right permissions
TicketCord runs your own Discord bot: you create the application in Discord's Developer Portal, and TicketCord runs it under your name and avatar. This page walks through every step, from an empty Developer Portal to a bot that is online in your server.
You need a Discord account, and Administrator (or ownership) on the server you want to add the bot to. Discord itself also requires Manage Server to add any bot to a server.
Step 1: Create the Discord application
Open the Developer Portal
Go to discord.dev and sign in with the Discord account that should own the bot.
Create a new application
Click New Application, enter the name you want your bot to have, accept the terms, and click Create. You can change the name and avatar later; TicketCord reads both from Discord.
Turn off Public Bot
Open the Bot tab. Find Public Bot and switch it off (the toggle turns grey). This stops strangers from adding your bot to their servers.
If Discord refuses with "Private application cannot have a default authorization link", open the Installation tab, set Install Link to None, save, and switch Public Bot off again. TicketCord builds its own invite link, so the default one is not needed.
Leave Requires OAuth2 Code Grant off. When it is on, Discord blocks the invite with "Integration requires code grant".
Enable the two privileged intents
Still on the Bot tab, under Privileged Gateway Intents, enable:
- Server Members Intent
- Message Content Intent
TicketCord needs these to see who joins or leaves, verify staff roles, and read ticket messages for transcripts, ModMail, and AI features. If they are off, Discord rejects the connection with a "disallowed intent" error (code 4014). TicketCord makes one automatic attempt to enable them for you when that happens; if the bot still cannot connect, turn them on manually and restart the bot from the dashboard.
Do not turn these off later. The bot goes offline until they are enabled again.
Copy the bot token
Click Reset Token, confirm, and copy the token. This is the only credential TicketCord needs; the application ID is read from it. You do not need the Client ID or Client Secret.
Treat the token like a password. Anyone who has it controls your bot. Discord shows it only once; if you lose it, reset it again.
Step 2: Connect the bot to TicketCord
Sign in to the dashboard
Open ticketcord.com/dashboard and sign in with Discord.
Add the bot
Click Add Bot and paste the token.
Validate and create
Click Validate & Continue. TicketCord checks the token, connects to Discord once, and shows the bot's name and avatar. If validation fails with a "disallowed intent" (4014) error, go back to the Developer Portal, enable both intents, and validate again. Click Create Bot to finish. The bot starts within a few moments and shows as online in the dashboard.
Invite the bot to your server
On the bot's page, click Invite and choose your server. The invite link requests exactly the permissions listed below plus the applications.commands scope that registers the slash commands.
Every new TicketCord account starts a 14-day Enterprise trial with no card required, so every feature is available while you set up. When the trial ends, the account moves to the Free plan; nothing you configured is deleted.
Permissions the invite requests
| Permission | Why the bot needs it |
|---|---|
| View Channel | See the channels and categories it works in |
| Manage Channels | Create, rename, move, and delete ticket channels |
| Manage Roles | Set per-ticket permission overwrites for the creator and staff |
| Manage Webhooks | Deliver logs and transcripts |
| Send Messages | Post ticket messages, panels, and replies |
| Send Messages in Threads | Reply in thread-style tickets |
| Create Public Threads | Open thread-style tickets |
| Create Private Threads | Open private thread-style tickets |
| Manage Threads | Archive and rename thread tickets |
| Manage Messages | Pin panels and clean up ticket messages |
| Pin Messages | Pin the welcome message in tickets |
| Embed Links | Send rich embeds and panels |
| Attach Files | Send transcripts and attachments |
| Read Message History | Read ticket conversations for transcripts and AI |
| Add Reactions | Add reactions to messages |
| Mention Everyone | Ping staff roles when a ticket opens |
| Use Application Commands | Register and run slash commands |
The invite does not ask for Administrator, Manage Server, or any moderation permission such as Kick, Ban, or Timeout.
Do not build your own invite link in the Developer Portal. A manual invite usually misses permissions or the applications.commands scope, which shows up later as tickets that will not open, transcripts that never arrive, or commands that do not appear. If that already happened, kick the bot and invite it again from the dashboard; the token stays valid.
After the invite
- Discord places the bot's role at the bottom of the role list. Drag it above your staff roles in Server Settings → Roles so it can manage permissions for them.
- Run
/setupin the server, then finish the configuration in the dashboard. See Configuration. - Run
/diagnoseto confirm the bot can see every channel and category it will use.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Validation fails with 4014 / disallowed intent | Server Members Intent or Message Content Intent is off | Enable both on the Bot tab, then validate again |
| The invite fails with "Integration requires code grant" | Requires OAuth2 Code Grant is on for your application | Open the Bot tab in the Developer Portal, switch Requires OAuth2 Code Grant off, save, and invite the bot again from the dashboard |
| "Private application cannot have a default authorization link" when you turn off Public Bot | The Installation tab still has a default install link | Set Install Link to None on the Installation tab, save, then switch Public Bot off |
| Bot shows offline after you reset the token | The old token no longer works | Open the bot in the dashboard, click Update Credentials, paste the new token. The bot restarts on its own |
| Bot is online but slash commands do not appear | The invite lacked the applications.commands scope | Kick the bot and invite it again from the dashboard, then reload Discord (Ctrl+R / Cmd+R) |
Replies arrive without a TC code footer | Something else is running the same token | Stop the other program, reset the token, and update it in the dashboard |
| "Bot Cannot Access This Server" (TC002) | The bot's role lost View Channel at the server level | Restore the permission on the bot's role under Server Settings → Roles |
| "TicketCord isn't a member of this server" (TC004) | The bot was kicked | Invite it again from the dashboard |
Common questions
Why does Discord say "Integration requires code grant" when I invite my bot? The application has Requires OAuth2 Code Grant switched on in the Discord Developer Portal. TicketCord invites the bot with a standard bot invite, which Discord rejects while that setting is on. Open the Bot tab, switch Requires OAuth2 Code Grant off, save, and invite the bot again from the dashboard.
Can I use an existing bot application? Yes. Paste its token. Make sure Public Bot is off and both privileged intents are on, and invite it from the dashboard so the permissions are right.
Do I need to keep anything running on my computer? No. TicketCord hosts and runs the bot for you. You only supply the token.
Can one bot be in several servers? Yes. Invite it from the dashboard to each server and configure each server separately. The number of bots you can create depends on your plan: 1 on Free, 3 on Basic and Pro, 6 on Enterprise.
I changed the bot's name and avatar in the Developer Portal. When does the dashboard update? Automatically. The bot picks up the new name and avatar from Discord while it is online, and checks again each time it starts. If the dashboard still shows the old values, restart the bot from the dashboard.
Does TicketCord store my token? Yes, encrypted, so that it can run the bot. Resetting the token in the Developer Portal invalidates the stored copy; update it with Update Credentials.
Why does the invite ask for Manage Roles and Mention Everyone? Manage Roles lets the bot set per-ticket permission overwrites so only the creator and staff can see a ticket. Mention Everyone lets it ping staff roles when a ticket opens even when those roles are not otherwise mentionable.
Join the support Discord and ask the team
Was this page helpful?
Last updated on