Placeholders

How {curly} placeholders work, which ones exist where, and what happens when one cannot be resolved.

On this page

A placeholder is a name in curly braces that Arclo replaces with a real value when it sends the message. Welcome {user} to {server}! becomes Welcome @newcomer to Nebula Collective!.

Where they work

  • Every text field in every message editor: the plain text, the title and description, the author, fields and footer, and the icon and image slots (where a placeholder such as {avatar} stands for a picture).
  • Banner text layers, which have their own shorter list (a banner is drawn, so a mention has nowhere to go).
  • Channel name templates in Statistics Channels.
  • Custom command responses, automation actions, and the replies of Arclo's own commands.

The list is per field, and the editor knows it

Type { in any field to open a menu of exactly the placeholders that field supports. There is no single global list, because {case_number} means nothing in a welcome message and {inviter} means nothing in a moderation DM.

The ones that appear almost everywhere

PlaceholderBecomes
{user}A mention of the member the message is about
{username}Their username, without the mention
{display_name}Their per-server display name
{user_id}Their Discord id
{avatar}The URL of their avatar, for image and icon fields
{server}The server's name
{server_icon}The URL of the server icon
{member_count}The server's member count
{channel}A mention of the relevant channel
{clicker}In a reply to a button or menu press, a mention of whoever pressed it (blank anywhere else)

Moderation is the one system that names its people differently: a punishment's channel announcement says {target} and {moderator}, while the DM to the member uses {user}.

System-specific sets

Each system adds what only it knows about. A few examples, all listed in full on the system's own page:

SystemAdds
Welcome{member_count_ordinal}, {account_age}, {joined_at}, and, with Invite Tracking on, {inviter}, {inviter_name}, {inviter_invites}, {invite_code}
Moderation{target}, {moderator}, {action_name}, {reason}, {duration}, {duration_note}, {expires}, {case_number}
Levels{level}, {previous_level}, {total_xp}, {xp_to_next_level}, {rank}, {reward}
Giveaways{prize}, {winners}, {winner_count}, {entries}, {ends_in}, {ends_at}, {host}
Tickets{ticket_number}, {panel_name}, {ticket_type}, {opener}, {claimer}, {close_reason}
Social Alerts{title}, {url}, {creator}, {game}, {viewers}, {thumbnail}

Behavior

  • An unknown placeholder is left alone. {not_a_real_placeholder} is sent verbatim rather than blanked, so a typo is visible instead of silently eating your sentence.
  • A known placeholder with no value becomes empty. {inviter} with Invite Tracking switched off produces nothing, not the word undefined.
  • Optional trailing lines exist for exactly this. Several systems expose a {..._note} or {details} placeholder that renders a whole line, or nothing at all, so a permanent ban does not print an empty Duration: row.
  • Mentions in an embed do not ping. A mention inside an embed shows as a mention but notifies nobody. That is Discord's behavior, and it is why the plain text above an embed is where a ping belongs.

Case and spacing matter

Placeholders are lowercase with underscores and no spaces inside the braces. { member_count } is never recognized, and {Member_Count} only works in Statistics Channels' channel names, the one place that ignores case.

The complete cross-system list is on the placeholder reference.

Still stuck? Ask in the support server: somebody there has almost certainly configured this before.