Placeholders
Dynamic placeholders and parsers for messages
Use placeholders to render live values inside embeds, buttons, panel messages, and automated replies. The catalog below is organized by scope so you can quickly see what is always available and what only appears in a specific context.
Quick reference
The most common placeholders are member.*, guild.*, panel.*, and ticket.*. If a placeholder is blank, first confirm the message context actually provides that data.
Featured placeholders
| Placeholder | Purpose |
|---|---|
member.mention | Ping the current member |
member.displayName | Use the member nickname or display name |
member.username | Use the member username |
guild.name | Show the server name |
ticket.creator.mention | Ping the ticket creator |
ticket.number | Show the ticket number |
ticket.closeReason | Show the close reason |
panel.name | Show the panel name |
Base placeholders
These are available in most message contexts.
| Placeholder | Description |
|---|---|
currentTime | Current timestamp in Unix format |
member.id | Member ID |
member.mention | Mention for the current member |
member.displayName | Member display name or nickname |
member.username | Member username |
member.avatarUrl | Member avatar URL |
member.joinedAt | When the member joined, in Unix format |
member.createdAt | When the member account was created, in Unix format |
member.roles | List of member role IDs |
member.roles.0 | First role ID from the member role list |
guild.id | Server ID |
guild.name | Server name |
guild.memberCount | Total member count |
guild.createdAt | Server creation timestamp in Unix format |
All timestamps are provided in Unix format. Learn how to parse them.
Statistics placeholders
These placeholders resolve to numbers and fall back to 0 when the data is unavailable.
| Placeholder | Description |
|---|---|
statistics.tickets.averageRating | Average ticket rating |
statistics.tickets.created | Total tickets created |
statistics.tickets.closed | Total tickets closed |
statistics.tickets.open | Total tickets currently open |
statistics.tickets.claimed | Total tickets claimed |
statistics.applications.total | Total applications submitted |
statistics.applications.pending | Total applications pending |
statistics.applications.accepted | Total applications accepted |
statistics.applications.denied | Total applications denied |
statistics.giveaways.total | Total giveaways created |
statistics.giveaways.totalParticipants | Total giveaway participants |
statistics.giveaways.averageParticipants | Average participants per giveaway |
statistics.verifications.total | Total verifications processed |
statistics.verifications.failed | Total failed verifications |
statistics.verifications.passed | Total passed verifications |
Context-specific placeholders
The sections below contain placeholders that only exist in a specific message scope.
Ticket-related placeholders are merged with the base placeholders for ticket messages.
| Placeholder | Description |
|---|---|
ticket.number | Ticket numeric identifier |
ticket.creator.id | Ticket creator member ID |
ticket.creator.mention | Ping the ticket creator |
ticket.creator.displayName | Ticket creator display name |
ticket.creator.username | Ticket creator username |
ticket.creator.avatarUrl | Ticket creator avatar URL |
ticket.creator.joinedAt | When the ticket creator joined, in Unix format |
ticket.creator.createdAt | When the ticket creator account was created, in Unix format |
ticket.creator.roles | Ticket creator role IDs |
ticket.creator.roles.0 | First role ID from the ticket creator role list |
ticket.closeReason | Close reason |
ticket.openedAt | Ticket open timestamp in Unix format |
ticket.users | List of user IDs in the ticket |
ticket.users.0 | First user ID in the ticket user list |
ticket.channelName | Ticket channel name |
ticket.priority | Ticket priority value |
ticket.claimer.id | Ticket claimer member ID |
ticket.claimer.mention | Ping the ticket claimer |
ticket.claimer.username | Ticket claimer username |
ticket.claimer.avatarUrl | Ticket claimer avatar URL |
ticket.claimer.createdAt | When the ticket claimer account was created, in Unix format |
ticket.form | Ticket form entries |
ticket.form.0.question | First ticket form question |
ticket.form.0.answer | First ticket form answer |
ticket.form.0.required | Whether the first ticket form field was required |
ticket.createdAt | Ticket creation timestamp in Unix format |
ticket.closedAt | Ticket close timestamp in Unix format |
ticket.closer.id | Ticket closer member ID |
ticket.closer.mention | Ping the ticket closer |
ticket.closer.username | Ticket closer username |
ticket.closer.avatarUrl | Ticket closer avatar URL |
ticket.closer.createdAt | When the ticket closer account was created, in Unix format |
Use the ticket creator placeholders for welcome messages, the claimer and closer placeholders for assignment and closure flows, and ticket.form.* when rendering user-submitted answers.
Application placeholders are available in application panel and application workflow messages.
| Placeholder | Description |
|---|---|
application.number | Application numeric identifier |
application.creator.id | Application creator member ID |
application.creator.mention | Ping the application creator |
application.creator.displayName | Application creator display name |
application.creator.username | Application creator username |
application.creator.avatarUrl | Application creator avatar URL |
application.creator.joinedAt | When the application creator joined, in Unix format |
application.creator.createdAt | When the application creator account was created, in Unix format |
application.creator.roles | Application creator role IDs |
application.creator.roles.0 | First role ID from the application creator role list |
These values are useful in submit, accept, deny, and finish messages.
Panel placeholders are exposed on panel views and panel messages.
| Placeholder | Description |
|---|---|
panel.name | Panel display name |
panel.supportRoles | Role IDs that can support this ticket panel |
panel.supportRoles.0 | First support role ID |
panel.openTickets | Number of currently open tickets for this panel |
panel.reviewRole | Application review role ID |
panel.pendingApplications | Number of pending applications |
panel.emoji | Panel emoji |
Panel values are especially useful when you want the message to reflect the exact configuration the user is interacting with.
Support hours placeholders are available where support-hours are configured.
| Placeholder | Description |
|---|---|
supportHours.status | Current support status |
supportHours.nextOpen | Timestamp of the next open time in Unix format |
supportHours.closesAt | Timestamp of when support closes in Unix format |
Roblox placeholders are available wherever member placeholders are available.
| Placeholder | Description |
|---|---|
roblox.bloxlink.id | Roblox account ID |
roblox.bloxlink.url | Link to the Roblox profile |
roblox.bloxlink.name | Roblox username |
roblox.bloxlink.displayName | Roblox display name |
roblox.bloxlink.about | Roblox profile about text |
roblox.bloxlink.createdAt | Roblox account creation timestamp in Unix format |
Resolution behavior
Use these rules when deciding which placeholders to include in a message:
- Base placeholders such as
member.*andguild.*are available in most message contexts. - Context-specific placeholders such as
ticket.*,panel.*, andsupportHours.*only resolve when that context exists. - Statistics placeholders resolve to a number and fall back to
0when data is unavailable. - If a context-specific placeholder is used where that context does not exist, it may resolve to an empty value or remain unresolved depending on the message type.
When combining placeholders with parsers, place the placeholder inside the parser payload, for example: {timestamp(relative):{member.joinedAt}}.
Parser reference
Use these parser pages for formatting, logic, and text manipulation:
| Parser | Purpose | Link |
|---|---|---|
| Date | Format timestamps using custom date and time patterns | /docs/placeholders/parsers/date |
| Timestamp | Convert timestamps into readable formats | /docs/placeholders/parsers/timestamp |
| String Format | Change casing, escape text, and format ordinals | /docs/placeholders/parsers/stringFormat |
| Replace | Replace characters or substrings | /docs/placeholders/parsers/replace |
| If | Return one of two values from a condition | /docs/placeholders/parsers/ifStatements |
| Includes | Check whether text contains a value | /docs/placeholders/parsers/includes |
| Join | Join values into a single string | /docs/placeholders/parsers/join |
| Slice | Extract part of a string by range | /docs/placeholders/parsers/slice |
| Truncate | Shorten text to a fixed length | /docs/placeholders/parsers/truncate |
| Padding | Pad text to a target length | /docs/placeholders/parsers/padding |
| Math | Run arithmetic expressions | /docs/placeholders/parsers/math |
| Logical | Evaluate boolean-style expressions | /docs/placeholders/parsers/logical |
| Stop | Prevent further processing when a condition is met | /docs/placeholders/parsers/stop |
Practical examples
Ticket notification
Ticket #{ticket.number} opened by {member.displayName} at {date(MM/DD/YYYY HH24:MI):{currentTime}}.Support-hours status message
Support status: {upper:{supportHours.status}}
Next open: {timestamp(relative):{supportHours.nextOpen}}Conditional message output
{if({contains(1234567890):{member.roles}}):Welcome back, staff member.|Welcome!}Common mistakes
- Verify context before using context-specific placeholders.
- Keep parser syntax exact. Missing separators such as
:or|can cause unexpected output. - Confirm timestamp format expectations before parsing. Use
dateortimestampparsers when you need readable output. - If a value appears blank, test with a known base placeholder first, for example
{member.username}, to confirm the message context is correct.