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

# Embeds

> Headless embed templates turn text blocks in a limited grammar into Discord content. The parser never executes user code.

## Structure

Start with `{embed}$v` and separate each block with `$v`. Spaces or line breaks after the prefix are also accepted. Each block uses `{key: value}`; keys are treated as data, never as executable code. Without `{embed}$v`, Headless keeps that module's plain-text message format.

## Where templates are used

The same parser powers welcome messages, level-up notices, Booster Roles announcements, Auto Responder replies, ticket-opening messages, and custom moderation messages. There is no configurable leave message. Each module supplies its own variables: a recognized key with no value in the current event renders as `N/A`. Welcome and Booster Roles have configuration previews; Auto Responder validates a template before saving it. Use a module's test when available; a preview does not replace validation at send time.

## Properties and syntax

Supported keys are `message` and `content` (aliases), `title`, `description`, `url`, `color`, `image`, `thumbnail`, `timestamp`, `author`, `field`, `footer`, and `button`. `author` uses `name && [HTTPS icon] && [HTTPS URL]`; `field` uses `name && value [&& inline|true|false|yes|no|on|off]`; `footer` uses `text [&& HTTPS icon]`. A button accepts `URL && label` or `Link|URL && label && URL && enabled|disabled`; `disabled` disables the link, and no button invokes a bot action.

### `Embed template`

```headless-script Syntax theme={null}
{embed}$v{title: <text>}$v{description: <text>}
```

```headless-script Example theme={null}
{embed}$v{title: Notice for {guild.name}}$v{description: Hello {user.display_name}}$v{color: #005D68}
```

```headless-script Syntax theme={null}
{embed}$v{field: <name> && <value> [&& inline]}
```

```headless-script Example theme={null}
{embed}$v{message: See the updates, {user.mention}}$v{author: {guild.name} && {guild.icon} && {guild.vanity}}$v{field: Status && Active && inline}$v{footer: Posted by {author.name}}
```

```headless-script Syntax theme={null}
{embed}$v{button: <HTTPS URL> && <label>}
```

```headless-script Example theme={null}
{embed}$v{button: https://example.com/rules && Read the rules}
```

```headless-script Syntax theme={null}
{embed}$v{message: <text>}
```

```headless-script Example theme={null}
{embed}$v{button: Link && Read the rules && https://example.com/rules && enabled}
```

> [!NOTE]
>
> Template buttons are web links only; they cannot claim, close, grant roles, or trigger another bot action.

**Note:**

The complete variable catalog is in Variables and Ticket variables. Use only keys available in the event; `message`/`content` are sent as regular text alongside the embed, and `url` sets the title link.

## Limits and validation

`title`: 256 characters; `description`: 4,096; `message`/`content`: 2,000; field name: 256; field value: 1,024; `author`: 256; `footer`: 2,048; button label: 80. You can add up to 25 fields and 5 buttons. Combined text across title, description, author, footer, and fields must not exceed 6,000 characters. Embed, image, thumbnail, and icon URLs allow up to 2,048 characters and require HTTPS; URLs containing credentials are rejected. A button accepts HTTP or HTTPS and up to 512 characters. Color accepts 3- or 6-digit hexadecimal values, with an optional `#`. `timestamp` takes no argument.

## Valid output

An embed requires visible content (title, description, field, author, footer, image, or thumbnail). `message`/`content` alone sends plain text with no embed; a button-only template can also send its button without an empty embed. `url` sets the title link. Unknown keys, unknown variables, empty values, incomplete syntax, invalid URLs, or exceeded limits stop delivery with a validation error.

## Steps

**1. Choose a module**

Open the configuration for Welcome, Levels, Booster Roles, Auto Responder, Tickets, or moderation messages where you want to use the template.

**2. Write a template**

Use the exact prefix and separator; add each property as a brace-delimited block. To put text outside the embed, use `message` or its `content` alias.

**3. Validate the result**

Use the module preview or test when available. Fix variables that render as `N/A` and any URL or limit errors before saving.

## Related pages

* [Variables](/docs/en/resources/scripting/variables.md)
* [Ticket variables](/docs/en/server/tickets/variables.md)
* [Welcome](/docs/en/server/welcome.md)
* [Auto Responders](/docs/en/server/auto-responders.md)
* [Booster Roles](/docs/en/server/roles/booster.md)
* [Tickets](/docs/en/server/tickets/messages.md)
* [Moderation](/docs/en/security/moderation.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.