Applications
Configuration reference for applications.json.
Introduction
The Applications system allows your server members to apply for staff positions, roles, or other opportunities directly through Discord. Applications are managed through private channels with customizable questions, review permissions, and automated workflows.
This guide covers every aspect of the application configuration file (applications.json) to help you create a professional application system for your server.
Part 1: Basic Configuration
Understanding Basic Settings
The basic configuration section controls global application behavior, including staff management integration, channel naming, and cooldown periods.
config: {
staff_management_hook: true,
application_channel_name: "app-%random%",
default_cooldown: "7d",
// ... applications and questions below
}Configuration Options
staff_management_hook
Type: Boolean (true or false)
Controls automatic integration with the Staff Management plugin when applications are accepted.
When enabled (true):
- Accepted applicants automatically receive their designated roles
- Staff roster panel is automatically updated
- Promotion message is generated based on staff_management configuration
When disabled (false):
- Manual role assignment required
- No automatic roster updates
Recommended: true if you have the Staff Management plugin configured
Note: For this feature to work properly, ensure your staff_management plugin is configured with the appropriate role assignments and promotion messages.
application_channel_name
Type: String
Defines the naming pattern for application channels that are created when a user starts an application.
Available Placeholders:
PlaceholderDescriptionExample%random%Random 4-digit number1234``%creator%Username of the applicantjohn_doe``%created_total%Total number of applications created42``%category%Application category namestaff
Examples:
// Using random number (recommended for privacy)
application_channel_name: "app-%random%"
// Result: app-7382
// Using creator name
application_channel_name: "application-%creator%"
// Result: application-john_doe
// Using category and number
application_channel_name: "%category%-app-%created_total%"
// Result: staff-app-42
// Combining multiple placeholders
application_channel_name: "%category%-%creator%-%random%"
// Result: staff-john_doe-5821Best Practice: Use %random% to maintain applicant privacy and prevent channel name conflicts.
Privacy Warning: Using %creator% exposes the applicant's username to anyone who can see the channel category. Consider privacy implications before using this placeholder.
default_cooldown
Type: String (Time Duration)
Sets how long users must wait before submitting a new application after being denied.
Time Format:
s= seconds (e.g.,30s)m= minutes (e.g.,15m)h= hours (e.g.,12h)d= days (e.g.,7d)w= weeks (e.g.,2w)
Recommended Values:
Server TypeRecommended CooldownReasoningSmall/Casual3d to 5dAllows quick reapplication with improvementsMedium7d to 14dBalances feedback time with persistenceLarge/Competitive14d to 30dEnsures applicants take time to improve
Examples:
// 7-day cooldown (most common)
default_cooldown: "7d"
// 2-week cooldown for serious positions
default_cooldown: "14d"
// 12-hour cooldown for testing/casual applications
default_cooldown: "12h"
// 30-day cooldown for highly competitive roles
default_cooldown: "30d"Tip: Longer cooldowns encourage applicants to put more effort into their applications rather than spam submissions.
Part 2: Application Categories
Understanding Application Categories
Application categories define different types of applications (Staff, Helper, Builder, etc.) with their own questions, permissions, and settings. Users select which category to apply for, and a private channel is created for their application.
applications: [
{
application: "Staff",
description: "Select to start a Staff Application",
emoji: "👮",
category_id: "1160209305593716776",
questions: "first_question_set",
permission_list: ["804354019455139900"],
mention_roles: ["804354019455139900"]
},
]Category Configuration Options
application
Type: String
The display name of the application type.
Examples:
"Staff"- General staff position"Helper"- Support team member"Moderator"- Moderation role"Builder"- Minecraft/Creative role"Developer"- Development team"Content Creator"- Media/Content team
Best Practices:
- Keep names short and clear (1-2 words)
- Use title case for professionalism
- Match the role name for clarity
description
Type: String
Brief explanation shown to users when selecting an application type.
Examples:
// Clear and action-oriented
description: "Apply to join our staff team"
// Informative with requirements hint
description: "Apply for Moderator (Must be active member)"
// Welcoming and encouraging
description: "Join our build team! Show us your creativity"
// Professional with expectations
description: "Content Creator application - Provide portfolio"Best Practices:
- Be clear about what the role entails
- Mention any key requirements
- Keep it under 50 characters
- Use encouraging language
emoji
Type: String
Icon displayed next to the application option in the selection menu.
Emoji Options:
Default Discord Emojis:
emoji: "👮" // Police officer (Staff/Security)
emoji: "🛡️" // Shield (Moderator)
emoji: "🔨" // Hammer (Builder)
emoji: "💻" // Computer (Developer)
emoji: "🎨" // Art palette (Designer)
emoji: "🎥" // Camera (Content Creator)
emoji: "❓" // Question (Helper/Support)
emoji: "🌟" // Star (Premium/VIP)Custom Server Emojis:
To use custom emojis, you need the emoji ID:
- Enable Developer Mode in Discord (User Settings → Advanced → Developer Mode)
- Right-click your custom emoji and select "Copy Link"
- Extract the ID from the URL:
https://cdn.discordapp.com/emojis/123456789.png - Format:
<:emoji_name:emoji_id>
// Custom emoji example
emoji: ""Animated Emojis:
emoji: ""category_id
Type: String
The Discord category ID where application channels will be created.
How to Get Category ID:
- Enable Developer Mode in Discord
- Right-click the category in your server
- Click "Copy ID"
- Paste the ID as a string
category_id: "1160209305593716776"questions
Type: String
The ID of the question set to use for this application category (references application_questions configuration).
questions: "first_question_set"This links to your question configuration:
application_questions: {
"first_question_set": [
// questions here
],
"moderator_questions": [
// different questions
]
}Examples:
// Staff applications
questions: "staff_questions"
// Moderator applications
questions: "moderator_questions"
// Builder applications
questions: "builder_questions"Tip: Create different question sets for different roles. Moderators need different questions than builders or developers.
permission_list
Type: Array of Strings (Role IDs)
List of role IDs that can view and review applications in this category.
permission_list: [
"804354019455139900", // Head Staff
"805123456789012345", // Moderators
]How to Get Role IDs:
- Enable Developer Mode
- Go to Server Settings → Roles
- Right-click a role and select "Copy ID"
Best Practices:
Recommended Structure:
- Include management/admin roles
- Include the specific team leads (e.g., Head Moderator for mod applications)
- Don't give access to roles that shouldn't review (prevents bias)
- Consider creating a dedicated "Application Reviewer" role
Examples:
// Only senior staff
permission_list: [
"123456789012345678" // Admin
]
// Multiple review tiers
permission_list: [
"123456789012345678", // Admin
"234567890123456789", // Head Moderator
"345678901234567890" // Senior Moderator
]
// Team-specific reviewers
permission_list: [
"123456789012345678", // Admin
"456789012345678901" // Build Team Lead
]mention_roles
Type: Array of Strings (Role IDs)
List of role IDs to mention (@ping) when a new application is submitted.
mention_roles: [
"804354019455139900"
]Best Practices:
Mention Carefully:
- Don't mention large roles (can cause spam)
- Only mention roles that actively review applications
- Consider using a dedicated "Application Notifications" role
- Ensure mentioned users have notifications enabled
Examples:
// No mentions (silent applications)
mention_roles: []
// Mention application reviewers only
mention_roles: [
"123456789012345678" // Application Reviewers
]
// Mention multiple roles
mention_roles: [
"123456789012345678", // Head Staff
"234567890123456789" // Moderators
]Complete Category Examples
Example 1: Staff Application
General staff position for your server:
{
application: "Staff",
description: "Apply to join our staff team",
emoji: "👮",
category_id: "1160209305593716776",
questions: "staff_questions",
permission_list: [
"804354019455139900", // Admin
"805123456789012345" // Head Staff
],
mention_roles: [
"805123456789012345" // Head Staff only
]
}Example 2: Multiple Application Categories
Server with multiple different application types:
applications: [
{
application: "Staff",
description: "General staff application",
emoji: "👮",
category_id: "1160209305593716776",
questions: "staff_questions",
permission_list: ["804354019455139900"],
mention_roles: ["804354019455139900"]
},
{
application: "Moderator",
description: "Apply for Moderator role",
emoji: "🛡️",
category_id: "1160209305593716776",
questions: "moderator_questions",
permission_list: ["804354019455139900", "805123456789012345"],
mention_roles: ["805123456789012345"]
},
{
application: "Developer",
description: "Join our development team",
emoji: "💻",
category_id: "1160209305593716776",
questions: "developer_questions",
permission_list: ["804354019455139900", "806234567890123456"],
mention_roles: ["806234567890123456"]
},
{
application: "Content Creator",
description: "Apply to be a content creator",
emoji: "🎥",
category_id: "1160209305593716776",
questions: "creator_questions",
permission_list: ["804354019455139900"],
mention_roles: ["804354019455139900"]
}
]Part 3: Application Questions
Understanding Question Structure
Application questions are what applicants must answer to submit their application. Questions can be text inputs or selection menus with predefined options.
application_questions: {
"first_question_set": [
{
question: "What is your IGN?",
max_length: 20,
min_length: 2,
placeholder: "Enter a value...",
select_options: [],
required: true,
},
],
}Question Configuration Options
question
Type: String
The actual question text displayed to the applicant. Max length is set to 45 characters by Discord!
Best Practices:
Writing Good Questions:
- Be specific and clear
- Ask one thing per question
- Use proper grammar and punctuation
- Avoid yes/no questions (unless using select options)
- Ask questions that reveal character, skills, and fit
Examples:
// Good questions
question: "What is your in-game name?"
question: "Describe your previous moderation experience"
question: "Why do you want to join our team?"
question: "How would you handle a conflict between members?"
question: "What timezone are you in?"
// Avoid these
question: "Tell me about yourself" // Too vague
question: "Are you active?" // Yes/no without context
question: "Why should we pick you?" // Too genericmax_length & min_length
Type: Number
For text inputs, these define character limits. For select menus, they define how many options can be selected.
Text Input Behavior:
// Short answer (username, IGN, etc.)
max_length: 20
min_length: 2
// Medium answer (timezone, age range)
max_length: 50
min_length: 3
// Long answer (experience, scenarios)
max_length: 800
min_length: 50
// Essay-style answer
max_length: 2000
min_length: 100Select Menu Behavior:
// Single selection only
max_length: 1
min_length: 1
// Multiple selections allowed (1-3 options)
max_length: 3
min_length: 1
// Multiple selections required (at least 2)
max_length: 5
min_length: 2Important: Discord has a maximum of 4000 characters for text inputs. Keep max_length reasonable to prevent hitting Discord's limits.
placeholder
Type: String
Hint text shown in the input field before the user types.
Examples:
// Generic placeholder
placeholder: "Enter a value..."
// Helpful hints
placeholder: "e.g., Steve123"
placeholder: "EST, PST, GMT+1, etc."
placeholder: "Describe in detail..."
placeholder: "Select one or more options"
// Format examples
placeholder: "Format: DD/MM/YYYY"
placeholder: "Example: 2-3 hours daily"Best Practices:
- Provide examples when format matters
- Keep it short (under 50 characters)
- Use "e.g.," or "Example:" for clarity
- Don't repeat the question text
select_options
Type: Array of Strings
When this array has items, the question becomes a dropdown/select menu instead of a text input.
Empty Array = Text Input:
select_options: [] // User types free-form textWith Options = Select Menu:
select_options: ['Option 1', 'Option 2', 'Option 3']Examples:
// Yes/No questions
select_options: ['✅ Yes', '❌ No']
select_options: ['Yes', 'No']
// Age ranges
select_options: ['Under 13', '13-17', '18-24', '25-34', '35+']
// Experience levels
select_options: ['No experience', 'Beginner', 'Intermediate', 'Advanced', 'Expert']
// Time commitment
select_options: ['Less than 5h/week', '5-10h/week', '10-20h/week', '20+h/week']
// Platforms
select_options: ['PC', 'Console', 'Mobile', 'Multiple']
// Hobbies/Interests (multi-select)
select_options: ['Gaming', 'Coding', 'Art', 'Music', 'Sports', 'Reading', 'Other']
// Time zones
select_options: ['EST', 'CST', 'MST', 'PST', 'GMT', 'CET', 'Other']
// Minecraft versions
select_options: ['Java', 'Bedrock', 'Both']Tip: Use emojis in select options to make them more visually appealing and easier to scan (e.g., '✅ Yes', '❌ No').
required
Type: Boolean
Whether the question must be answered to submit the application.
// Must answer this question
required: true
// Optional question
required: falseWhen to Use Optional Questions:
- Supplementary information (e.g., "Anything else you'd like to add?")
- Portfolio links (nice to have, not required)
- Social media handles
- Referrals ("Who referred you?")
Best Practices:
- Keep most questions required for complete applications
- Use 1-2 optional questions at the end for additional context
- Don't make critical questions optional
Question Examples
// In-game name (text input)
{
question: "What is your in-game name (IGN)?",
max_length: 20,
min_length: 2,
placeholder: "e.g., Steve123",
select_options: [],
required: true
}
// Age range (select menu)
{
question: "What is your age range?",
max_length: 1,
min_length: 1,
placeholder: "Select your age range",
select_options: ['13-17', '18-24', '25-34', '35+'],
required: true
}
// Timezone (select menu)
{
question: "What is your timezone?",
max_length: 1,
min_length: 1,
placeholder: "Select your timezone",
select_options: ['EST', 'CST', 'MST', 'PST', 'GMT', 'CET', 'Other'],
required: true
}
// Timezone (text input for more flexibility)
{
question: "What is your timezone?",
max_length: 20,
min_length: 1,
placeholder: "e.g., EST, GMT+1, PST",
select_options: [],
required: true
}Question Set Example
Basic Staff Questions
Simple question set for general staff positions:
application_questions: {
"staff_questions": [
{
question: "What is your in-game name?",
max_length: 20,
min_length: 2,
placeholder: "Enter your IGN",
select_options: [],
required: true
},
{
question: "What is your age range?",
max_length: 1,
min_length: 1,
placeholder: "Select one",
select_options: ['13-17', '18-24', '25-34', '35+'],
required: true
},
{
question: "What is your timezone?",
max_length: 20,
min_length: 1,
placeholder: "e.g., EST, PST, GMT+1",
select_options: [],
required: true
},
{
question: "How many hours per week can you dedicate?",
max_length: 1,
min_length: 1,
placeholder: "Select one",
select_options: ['Less than 5h', '5-10h', '10-20h', '20+h'],
required: true
},
{
question: "Why do you want to join our staff team?",
max_length: 1000,
min_length: 100,
placeholder: "Explain your motivation...",
select_options: [],
required: true
},
{
question: "Have you been punished on our server before?",
max_length: 500,
min_length: 2,
placeholder: "Be honest - we can check logs",
select_options: [],
required: true
}
]
}Complete Configuration Example
Here's a complete, production-ready application configuration for a server with multiple application types:
{
config: {
staff_management_hook: true,
application_channel_name: "app-%random%",
default_cooldown: "7d",
applications: [
{
application: "Staff",
description: "Apply to join our general staff team",
emoji: "👮",
category_id: "1160209305593716776",
questions: "staff_questions",
permission_list: [
"804354019455139900", // Admin
],
mention_roles: [
"804354019455139900", // Admin
]
},
{
application: "Moderator",
description: "Apply for Moderator position (Experienced)",
emoji: "🛡️",
category_id: "1160209305593716776",
questions: "moderator_questions",
permission_list: [
"804354019455139900", // Admin
"805123456789012345", // Head Moderator
],
mention_roles: [
"805123456789012345", // Head Moderator
]
},
{
application: "Builder",
description: "Join our creative build team",
emoji: "🔨",
category_id: "1160209305593716776",
questions: "builder_questions",
permission_list: [
"804354019455139900", // Admin
"806234567890123456", // Build Team Lead
],
mention_roles: [
"806234567890123456", // Build Team Lead
]
},
],
application_questions: {
"staff_questions": [
{
question: "What is your in-game name?",
max_length: 20,
min_length: 2,
placeholder: "Enter your IGN",
select_options: [],
required: true,
},
{
question: "What is your timezone?",
max_length: 20,
min_length: 1,
placeholder: "e.g., EST, PST, GMT+1",
select_options: [],
required: true
},
{
question: "How old are you?",
max_length: 1,
min_length: 1,
placeholder: "Select age range",
select_options: ['14-18', '18-24', '25-34', '35+'],
required: true
},
{
question: "Do you have a working microphone?",
max_length: 1,
min_length: 1,
placeholder: "Select one",
select_options: ['✅ Yes', '❌ No'],
required: true
},
{
question: "Are you able to record videos?",
max_length: 1,
min_length: 1,
placeholder: "Select one",
select_options: ['✅ Yes', '❌ No'],
required: true
},
{
question: "What are your favorite hobbies?",
max_length: 5,
min_length: 1,
placeholder: "Select your interests",
select_options: ['Gaming', 'Coding', 'Art', 'Music', 'Sports', 'Reading', 'Traveling', 'Cooking', 'Other'],
required: true
},
{
question: "Have you been punished before?",
max_length: 800,
min_length: 2,
placeholder: "Be honest - we can check logs",
select_options: [],
required: true
},
],
"moderator_questions": [
{
question: "What is your Discord username?",
max_length: 32,
min_length: 2,
placeholder: "e.g., Username#1234",
select_options: [],
required: true
},
{
question: "What is your age range?",
max_length: 1,
min_length: 1,
placeholder: "Select one",
select_options: ['16-17', '18-21', '22-25', '26+'],
required: true
},
{
question: "What is your timezone?",
max_length: 1,
min_length: 1,
placeholder: "Select your timezone",
select_options: ['EST', 'CST', 'MST', 'PST', 'GMT', 'CET', 'Other'],
required: true
},
{
question: "Do you have a working microphone?",
max_length: 1,
min_length: 1,
placeholder: "Required for voice moderation",
select_options: ['✅ Yes', '❌ No'],
required: true
},
{
question: "How would you rate your moderation experience?",
max_length: 1,
min_length: 1,
placeholder: "Be honest",
select_options: ['No experience', 'Beginner', 'Intermediate', 'Advanced'],
required: true
},
{
question: "Describe your previous moderation experience",
max_length: 1000,
min_length: 50,
placeholder: "Server names, roles, duration, responsibilities...",
select_options: [],
required: true
},
{
question: "How many hours per week can you moderate?",
max_length: 1,
min_length: 1,
placeholder: "Select one",
select_options: ['5-10 hours', '10-15 hours', '15-20 hours', '20+ hours'],
required: true
},
{
question: "Why do you want to become a moderator?",
max_length: 1500,
min_length: 150,
placeholder: "Explain your motivation...",
select_options: [],
required: true
},
{
question: "How would you handle two members arguing in chat?",
max_length: 1000,
min_length: 100,
placeholder: "Describe your approach step-by-step...",
select_options: [],
required: true
},
{
question: "Have you been punished on our server before?",
max_length: 800,
min_length: 2,
placeholder: "Be honest - we can check. Explain if yes.",
select_options: [],
required: true
},
],
"builder_questions": [
{
question: "What is your in-game name?",
max_length: 20,
min_length: 2,
placeholder: "Minecraft username",
select_options: [],
required: true
},
{
question: "What Minecraft version do you build in?",
max_length: 1,
min_length: 1,
placeholder: "Select one",
select_options: ['Java Edition', 'Bedrock Edition', 'Both'],
required: true
},
{
question: "What is your building specialty?",
max_length: 3,
min_length: 1,
placeholder: "Select your strengths",
select_options: ['Medieval', 'Modern', 'Fantasy', 'Redstone', 'Terraforming', 'Interiors'],
required: true
},
{
question: "How long have you been building?",
max_length: 1,
min_length: 1,
placeholder: "Select one",
select_options: ['Less than 1 year', '1-2 years', '2-5 years', '5+ years'],
required: true
},
{
question: "Describe your building experience",
max_length: 1500,
min_length: 100,
placeholder: "Projects, servers, achievements...",
select_options: [],
required: true
},
{
question: "Portfolio links (at least 3 images required)",
max_length: 500,
min_length: 10,
placeholder: "Imgur, Planet Minecraft, etc.",
select_options: [],
required: true
},
{
question: "How many hours per week can you build?",
max_length: 1,
min_length: 1,
placeholder: "Select one",
select_options: ['5-10 hours', '10-20 hours', '20+ hours'],
required: true
},
{
question: "Why do you want to join our build team?",
max_length: 1000,
min_length: 100,
placeholder: "What excites you?",
select_options: [],
required: true
},
],
},
}
}