Skip to main content
Variables are placeholders replaced with real values when a message is sent.

Two different syntaxes

Vetox uses two syntaxes, and they are not interchangeable.A {User} in a welcome message is printed literally. A [user] in a ticket message is printed literally.

The universal rule

An unknown variable becomes empty text, not an error — and in embeds, a field whose title or value ends up empty is dropped from the message entirely.This is the single most common cause of “my embed field keeps disappearing”. It is almost always a misspelled variable or one that does not exist for that feature.

Welcomer, goodbye and greet

[Server] is not a variable. It appears in the default welcome message and prints literally. Replace it with [ServerName].
[Inviter] and [Code] need Manage Server so Vetox can read invites.

Tickets

The richest set in Vetox. Usable in ticket embeds, channel-name formats and support-hours messages.
{user} {mention} {username} {userid} {user.mention} {user.name} {user.username} {user.tag} {user.id}
{ticket} {number} {num} {ticket.number} {ticket-number} {#number} {ticket.channel} {ticket.channelName} {ticket.priority} {ticket.closeReason} {ticket.openedAt} {ticket.createdAt} {ticket.closedAt} {ticket.users}
{channel} {channel.mention} {channel.name} {channel.id} {panel} {panel.name} {panel-name} {option} {option.label}
{server} {server.name} {server.id} {server.members} {server.icon} {server.banner} {guild} {members}
{staff} {staff.mention} {staff.name} {claim.user} {claim.name} {close.user} {close.name} {close.reason} {escalate.reason} {escalate.panel} {reason}
{form.1}, {form.2} … — 1-indexed, in the order your questions appear.{form.Label} also works, using the question’s own label.
{date} {time} {timestamp} {time.created} {time.opened} {time.claimed} {time.closed} — each also accepts .age.{statistics.tickets.open} {statistics.tickets.created} {statistics.tickets.closed} {statistics.tickets.claimed} {statistics.tickets.averageRating}
{supportHours.status} {supportHours.nextOpen} {supportHours.nextOpenTime} {supportHours.nextOpenRelative} {supportHours.closesAt} {supportHours.closesAtTime}

Modifiers

Ticket variables accept modifiers with {variable?modifier=value}: upper, lower, capitalize, truncate, slice, padleft, padright, replace, fallback, date, timestamp, math, ordinal, join, if.
{user.name?upper} shouts the name. {ticket.closeReason?fallback=No reason given} avoids an empty field being dropped — which is the cleanest fix for vanishing embed fields.

Counting

{count} {user} {record} — plus {start} and {savesLeft} in the reset and save messages.
{server} is offered but always renders empty. Type your server’s name directly.

Starboard

{author} {stars} {channel} {link} {content} {emoji}

Self-Roles

[Role] — the role’s name, in the DM notifications.

Giveaway templates

{prize} {winners} {host} {endsAt} {id} {description} {requiredRole} {minAccountAge} {entryCount}

Notifications

Each platform has its own set. Using one platform’s variable on another resolves empty.
{streamer.name} {streamer.url} {streamer.avatar}Live only: {stream.title} {stream.game} {stream.viewers} {stream.thumbnail}
{streamer.name} {streamer.url} {streamer.avatar}Live only: {stream.title} {stream.category} {stream.viewers} {stream.thumbnail}Note {stream.category}, not Twitch’s {stream.game}.
{channel.name} {channel.avatar} {video.title} {video.url} {video.thumbnail} {video.type}
{post.title} {post.url} {post.author} {post.content} {post.flair} {post.thumbnail} {subreddit.name} {subreddit.url} {subreddit.icon}
{post.text} {post.url} {post.image} {post.likes} {author.name} {author.handle} {author.avatar}
{news.title} {news.url} {news.content} {news.category} {news.author} {game.name} {game.image}
{item.title} {item.url} {item.description} {item.author} {feed.name} {feed.url}
Working: {episode.title} {episode.url} {episode.description} {podcast.name}
{episode.duration}, {podcast.author} and {podcast.artwork} are offered but never produce a value. Any field built only from them is dropped.

Variables that do not work

Confirmed non-functional. Avoid these:

Troubleshooting

When a message does not arrive at all.