> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rbxweb.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Embed builder

> Compose rich Discord embeds in a live WYSIWYG editor, send them to a channel, schedule delivery, and save presets.

The embed builder is a **type-inside-the-real-message** editor: every part of the embed is shown in its true Discord position, so what you build is what gets sent. Empty parts show a dashed outline — start typing (or click one) to include it; leave it blank to omit it.

Open **Dashboard → Embed Builder**.

<Note>
  **How this message is delivered.** It posts through a bot-owned webhook. With no custom
  identity set it uses the bot's own name and avatar, so it looks exactly like a normal bot
  message. Enabling **Custom identity** simply overrides that name and avatar (the custom name is capped at
  **80 characters** — Discord's webhook limit). This works in
  both Message and Embed mode. The bot needs **Manage Webhooks** in the target channel; without
  it the message is posted normally instead, so nothing is ever lost.
</Note>

## Building a message

The editor renders a live Discord message. Two toggles sit in the top-right of the message:

<ResponseField name="Embed" type="toggle (on by default)">
  On sends a rich embed. Turn it off to send a **plain message** — only the message text is sent, the embed is hidden.
</ResponseField>

<ResponseField name="Custom identity" type="toggle (Booster / Premium)">
  Post under a custom name and avatar instead of the bot's — see [Custom name & avatar](#custom-name--avatar).
</ResponseField>

Every embed part is edited in place:

<ResponseField name="Message text" type="textarea (2000 chars max)">
  The line above the embed. This is the only place pings work — mentions inside an embed are decorative, so put `@role` / `@user` pings here.
</ResponseField>

<ResponseField name="Color" type="click the left bar">
  Click the colored bar down the left of the embed to open the color picker (HSV, hex, presets, or a rainbow "random each time" option).
</ResponseField>

<ResponseField name="Author name + icon + link" type="text + image + URL">
  Optional line above the title. Click the round icon to set an author image, or the link (🔗) button on the right to make the author name a clickable URL.
</ResponseField>

<ResponseField name="Title + link" type="text (256 chars max) + URL">
  Bold heading at the top of the embed. Click the link (🔗) button on the right to make the title a clickable URL.
</ResponseField>

<ResponseField name="Description" type="textarea (4096 chars max)">
  Body text. Supports Discord markdown (`**bold**`, `*italic*`, `~~strike~~`, headers, lists), `@role` / `#channel` highlighting, and emoji. Use the **Variables** toolbar button to insert placeholders like `{server}` and `{member_count}`.
</ResponseField>

<ResponseField name="Fields" type="up to 25 name + value pairs">
  Click the trailing ghost field to add one. Toggle a field inline to place it side-by-side. Each field has its own character counters.
</ResponseField>

<ResponseField name="Image + thumbnail" type="library / URL / random">
  Large image at the bottom and small thumbnail top-right. Click to pick from your server's [image library](/features/server-images), paste a URL, choose a random library image, or a random Picsum image. The thumbnail can also use the member's avatar token.
</ResponseField>

<ResponseField name="Footer text + icon" type="text + image">
  Small text at the bottom. A footer icon only shows when the footer also has text.
</ResponseField>

<ResponseField name="Timestamp" type="toggle">
  Adds the send time next to the footer.
</ResponseField>

### Editor toolbar

Below the message: **Variables** (insert placeholder tokens), **Markdown** (insert formatting samples), **Emoji**, **Timestamp**, **Preview** (opens a resolved preview of the finished message), and **Clear** (the trash button — wipes every field). The editor is itself a live preview, so it always shows exactly what will be sent.

<ResponseField name="Timestamp" type="tool">
  Opens a picker to insert a **dynamic Discord timestamp** — pick a date & time, then insert or copy any of Discord's styles (Short/Long Time, Short/Long Date, Short/Long Date\&Time, Relative). It renders in each viewer's own timezone. Each row has an **insert** button (drops the code into the message at your cursor) and a **copy** button.
</ResponseField>

## Custom name & avatar

<Note>Unlocked by **Booster** or **Premium**. Free members can unlock it temporarily by [voting on Top.gg](#unlock-with-a-top-gg-vote).</Note>

By default the bot posts under its own name and avatar. Turn on **Custom identity** (top-right of the message) to send through a Discord webhook under an identity you choose — handy for announcements, personas, or on-brand posts.

When it's on:

* **Edit the name** — click the bot name in the message header and type your own.
* **Change the avatar** — click the round avatar on the left of the header to pick from your [image library](/features/server-images), paste a URL, or keep the bot avatar.

This applies to that one send only (immediate or scheduled) — nothing is saved, and it isn't stored in presets. Discord doesn't allow names containing "discord" or "clyde".

<Warning>To use this, the bot needs the **Manage Webhooks** permission — enable it in **Server Settings → Roles → RBX ToolBot → Permissions** (or re-invite the bot). Without it the send fails with a message telling you which permission to grant. Leave the toggle off to send normally.</Warning>

### Unlock with a Top.gg vote

Don't have Premium? A **Vote on Top.gg** banner appears under the editor when Custom identity is locked. Vote to unlock it for **24 hours**; vote again every 24 hours to keep it unlocked. The banner shows the time remaining while the unlock is active.

This is the same vote used by the [UGC Scanner](/features/ugc-scanner) — a single vote unlocks both. The unlock is tied to your Discord account, so it applies on every server you manage.

## Presets

<Note>Premium+. Preset counts are limited per tier.</Note>

The **Fill from Preset** bar sits at the top of the page. Save the current message as a named preset and reload it later — good for repeatable announcements (weekly updates, event reminders, welcome banners).

* **Fill** replaces the editor with the selected preset.
* **Delete** (🗑) removes the selected preset.
* **Save as Preset** (at the bottom of the editor card) stores the current editor contents.

## Send options

Below the editor — inside the same card, under a divider — sit the controls that deliver the message, in this order:

<ResponseField name="Send to Channel" type="channel picker (required)">
  Where the message will be posted.
</ResponseField>

<ResponseField name="Schedule Send" type="Premium">
  Turn on to deliver at a specific future date and time (your local timezone) instead of now. The send button changes to **Schedule Send**. The number of active scheduled messages is limited per tier.
</ResponseField>

<ResponseField name="Save as Preset / Send to Channel" type="action">
  The bottom row: save the current compose as a preset, or post it immediately (or queue it when Schedule Send is on).
</ResponseField>

## Scheduled messages

When you schedule a message it appears in the **Scheduled Messages** card at the bottom of the page, with a live countdown. **Preview** shows what will be sent and **Cancel** removes it before it fires. Completed sends are listed too and can be cleared.
