| xpMin | Minimum XP per message | 15 |
| xpMax | Maximum XP per message | 25 |
| cooldownSeconds | Seconds between messages that earn XP (anti-spam) | 60 |
| voiceXpPerMinute | XP per minute in voice channels (0 = off; not while muted, deafened or AFK) | 5 |
| ignoredChannelIds | Channels without XP (list of channel IDs) | [] |
| ignoredRoleIds | Roles that earn no XP (list of role IDs) | [] |
| announce | Level-up message: current channel, fixed channel, direct message or off | current |
| announceChannelId | Channel for level-up messages (channel ID, only for "channel") | — |
| announceMessage | Custom level-up message: {user} and {level} are replaced (empty = default text) | — |
| roleRewards | Role rewards: list of objects with level and roleId (free: 5, premium: 50) | [] |
| stackRewards | Keep lower reward roles (off = only the highest) | true |
| minMessageLength | Minimum message length for XP (characters, 0 = any) | 3 |
| duplicateWindowSeconds | Seconds in which repeating the same message earns no XP (0 = off) | 300 |
| voiceRequireOthers | Voice XP only with at least one other member (not a bot) in the channel | true |
| seasonResetXp | Reset everyone's XP and level to 0 when a season ends | false |
| rankCard | Show /rank as an image card (off = embed) | true |
| rankCardColor | Premium: rank card background colour (#rrggbb) | #1e1f22 |
| rankCardColorEnd | Premium: rank card gradient end colour (#rrggbb) | #2b2d31 |
| rankCardAccent | Premium: rank card accent colour for ring, level and progress bar (#rrggbb) | #5865f2 |
| rankCardImageUrl | Premium: rank card background image (https URL to PNG/JPEG/WebP/GIF, max. 2 MB, max. 4096×4096 px; empty = colours) | — |