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

# Composer Commands

> Type / in the email composer to insert live meeting times, a form, a file, or a snippet.

## Overview

Type `/` anywhere in the email composer to open a palette of things you can drop
into the message you are writing. Most of what it offers is not text.
`/meeting` reads your own booking pages and inserts the times you are genuinely
free, each one a link the recipient clicks to book. Type `;` instead and you land
straight in your [Snippets](/comms/templates/snippets).

Both menus filter as you type, and both read from the same list underneath, so a
snippet is reachable either way.

## The commands

| Type        | Inserts                                                                    |
| ----------- | -------------------------------------------------------------------------- |
| `/meeting`  | **Meeting times.** Live slots from a booking page, each one a booking link |
| `/book`     | **Booking link.** Just the link, no times                                  |
| `/free`     | **My availability.** The same times written as plain sentences             |
| `/form`     | **Send a form.** A link that collects answers into your CRM                |
| `/file`     | **Attach a file.** From this workspace, without downloading it first       |
| `;shortcut` | **A snippet.** Your saved text, including its `{{variable}}` chips         |

You do not have to remember the exact word. Matching runs across each command's
title, description and keywords, so `/cal`, `/slot` and `/avail` all find
**Meeting times**, and `/questions` finds **Send a form**.

## Meeting inserts

All three meeting commands open the same picker, which asks two things: which
booking page, and what shape the insert takes. You can switch shape inside the
picker, so the command you typed only decides which one it opens on.

* **The times are live.** They come from the same endpoint the public booking
  page serves, computed against your connected calendars at the moment you
  insert them. A recipient is never offered a slot you have already filled.
* **Every time is a booking link.** Each one deep-links to the booking page with
  that slot already selected, so the recipient confirms in one click instead of
  finding it again in a calendar grid.
* **They read in your timezone and your locale.** The zone is named in the
  message, because the text is fixed at insert time and a recipient in another
  country cannot reformat it.
* **Five slots by default**, up to twelve. Past that a message reads as a
  calendar dump rather than an offer.

### What lands in the message

A times insert writes one line per day: the day in bold, then that day's times
as links, and under them a line naming the timezone with a link back to the full
booking page.

```
Thu, 11 Sep — 10:00 AM · 11:30 AM
Fri, 12 Sep — 9:30 AM · 2:00 PM

Times shown in EDT. None of these work? See more times.
```

Paragraphs and links, and nothing richer. That is deliberate rather than a
limitation: styled buttons in a table are stripped by the editor before the
message is ever sent, so plain links are what survives both the composer and the
recipient's mail client. What you see in the composer is what they get, in
Gmail, Apple Mail and Outlook alike.

<Note>
  This is what separates inserting times from pasting a link from a separate scheduling tool. Custral owns both halves,
  so the availability in the email and the availability on the booking page are the same query against the same
  calendars.
</Note>

## Nothing is hidden

A command whose prerequisites are missing is still listed. It renders dimmed and
the reason replaces its description, so the palette tells you what to set up
rather than looking like the feature is absent.

| Reason shown                     | What it means                                    | What to do                                                     |
| -------------------------------- | ------------------------------------------------ | -------------------------------------------------------------- |
| No booking pages yet             | The workspace has no event types                 | Create one under **Account → Scheduling**                      |
| Not live yet                     | Every event type is still a draft                | Set its status to **Active** on the Setup tab                  |
| No share link                    | The event type is active but has no public token | Open the event type's **Share** tab                            |
| No forms yet                     | The workspace has no form                        | Create one under [Forms](/comms/forms/overview)                |
| Not published yet                | The form you picked is still a draft             | Publish it. A draft link refuses the answers a recipient types |
| No files in this workspace yet   | Workspace storage is empty                       | Upload a file, or use the paperclip for something on your disk |
| Couldn't load your booking pages | The request failed                               | Reopen the composer. Every other command still works           |

## On mobile

The mobile composer has no `/` trigger: a phone keyboard makes an in-editor
trigger awkward, and the editor there cannot insert at the caret. Tap the **+**
in the composer toolbar instead. It opens the same commands, reads the same
booking pages, and inserts the same block, so a recipient cannot tell which
device a message was written on.

Form and file inserts are on the web composer only today.

## Using it

<Steps>
  <Step title="Publish a booking page">
    Under **Account → Scheduling**, create an event type, connect a calendar, set your availability, and set its status
    to **Active**. See [Scheduling](/comms/scheduling/overview) for the full setup.
  </Step>

  <Step title="Open a composer">
    Reply to a thread, or start a new message from the Email Browser, a record, or a conversation.
  </Step>

  <Step title="Type a command">Type `/` and pick a row, or type the whole command (`/meeting`) and press Enter.</Step>

  <Step title="Choose a page and shape">
    Pick which booking page to offer, switch between **Times**, **Link only** and **Sentence**, and set how many slots
    to include.
  </Step>

  <Step title="Insert and send">The block lands at your caret. Edit around it like any other content, then send.</Step>
</Steps>

## Troubleshooting

| Symptom                                         | Likely cause                                  | What to check                                                                                  |
| ----------------------------------------------- | --------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| Typing `/` does nothing                         | The caret is not in the message body          | The palette is for the body. `/` in the To, Cc or Subject field is ordinary text               |
| The meeting rows are dimmed                     | Nothing is bookable yet                       | Read the reason on the row. It names the exact step that is missing                            |
| A booking page you just published is not listed | The list is cached for the session            | Reopen the composer                                                                            |
| No times show for a page that has availability  | The connected calendar could not be read      | Reconnect it. Availability is computed from free/busy, so an unreadable calendar shows nothing |
| The times are in the wrong zone                 | The insert uses the sending device's timezone | The zone is named in the message. Change your device's timezone and reinsert                   |
| The times are links rather than buttons         | That is the design, not a fault               | Rich markup does not survive the editor. Plain links render everywhere and book the same slot  |
| `;shortcut` does not expand                     | The snippet has no shortcut, or it differs    | See [Snippets](/comms/templates/snippets)                                                      |

<Note>
  When reporting an issue, include the request id shown in the error toast. It links the in-app error to the server
  logs.
</Note>

## Related

* [Compose & Send](/comms/email/compose): where the composer opens from, and how
  a sent message links back to a record.
* [Scheduling](/comms/scheduling/overview): event types, availability windows
  and booking rules, which is what `/meeting` reads.
* [Snippets](/comms/templates/snippets): the `;shortcut` library, also reachable
  from `/`.
* [Forms](/comms/forms/overview): what `/form` links to, and where the answers
  land.


## Related topics

- [Compose & Send](/comms/email/compose.md)
- [Snippets](/comms/templates/snippets.md)
- [Scheduling](/comms/scheduling/overview.md)
- [Rules & Skills](/ai/rules-and-skills.md)
- [Command palette](/start/command-palette.md)
