# Booking messages (/docs/agents/scheduling/messages)

> For the complete documentation index, see [llms.txt](https://docs.tandemcx.ai/llms.txt). Any page on this site can be fetched as Markdown by appending `.md` to its URL.

<Callout type="info">
    **This page is being rolled out.** If **Scheduling** isn't in your sidebar, it isn't enabled for
    your organization yet — contact support.
</Callout>

## What customers get

Tandem messages the customer about their callback at four points:

| Message      | Sent                                              |
| ------------ | ------------------------------------------------- |
| Confirmation | When the callback is booked                       |
| Reminder     | At each reminder time before a scheduled callback |
| Rescheduled  | When the callback moves to a new time             |
| Cancelled    | When the callback is cancelled                    |

The rescheduled and cancelled notices go out whoever made the change: the customer on their
callback's page, or you on **Scheduling → Bookings**.

An **As soon as possible** callback gets no reminders. Its confirmation says the customer will be
called shortly and gives no time.

Each message goes by email, by text, or both, as the calendar's **Notifications** tab sets. Each
channel is sent and recorded on its own, so a failed email doesn't stop the text.

An email address gets at most 3 confirmation emails a day (UTC) from one calendar. Further
bookings with that address still go through, and their confirmation email is skipped.

An email address or phone number also gets at most 15 messages a day (UTC) from one calendar on
each channel, counting confirmations, reminders, and change notices together. Past that, the
day's further messages on that channel are skipped. The bookings themselves are unaffected.

Addresses that differ only by a `+tag`, or by dots in a Gmail address, count as one address for
both limits.

## Setting up notifications

Open the calendar under **Scheduling → Calendars** and go to the **Notifications** tab. Its
settings save with the editor's **Save**, like the other tabs.

- **Email** — on for a new calendar. An email goes only to a customer who gave an email address
  on the booking form, and only when your organization has a default sender (see
  [Choose a default sender](/docs/overview/email-domains#choose-a-default-sender)). It is sent from
  that address.
- **SMS** — off for a new calendar. Turning it on shows **SMS sender number**, which lists
  only your numbers that can send texts.
- **Reminder times** — when reminders go out before a scheduled callback. Pick 1 day, 2 hours,
  1 hour, or 15 minutes, or **Custom** for any number of minutes from 5 to 10,080 (7 days). A
  calendar can have up to 3 reminders, each at a different time. A new calendar has two: 1 day and
  1 hour before.
- **Sender name** — your company name, which every message opens or closes with. Up to 60
  characters. It starts as your organization's name.
- **Note** — up to 160 characters added to every message, such as what to have ready for the
  call. The note also shows on the booking confirmation screen and the callback's own page.
- **SMS confirmation preview** — the confirmation text a customer would get with the settings
  on the tab, using an example time.

The switches, the sender name, and the note are read when each message goes out, so a change
applies to every message not yet sent. Reminder times are set when a callback is booked or moved:
a change applies to callbacks booked or moved after you save, and callbacks already booked keep
the reminders they had.

A reminder whose time is less than a minute away when the callback is booked or moved is not
sent. With reminders 1 day and 1 hour before, a callback booked 3 hours ahead gets only the
1-hour reminder.

### Why text messages may be unavailable

A number can send texts once the **SMS** column on **Admin → Phone Numbers** shows **Enabled**.
Texting in the US needs an approved registration first, which is not yet available for every
account. Until one of your numbers can text, the **SMS** switch can't be turned on and
the tab says `None of your numbers can send texts yet`.

**Save** refuses a number that can't send texts with `Pick a number that can send texts`. If a
number loses texting after you pick it, its texts are skipped and the booking's messages say so.

## What the messages say

Times are in the customer's own time zone, the one they booked in, with its abbreviation. A text
reads like this:

```
Acme Dental: your callback is booked for Thu, Oct 8 at 10:30 AM EDT. Reschedule or cancel: https://book.example.com/m/… Bring your insurance card. Reply STOP to opt out.
```

It is the sender name, the sentence for the message, the customer's reschedule-or-cancel link,
your note, and `Reply STOP to opt out.` Every text ends with that line. For an
**As soon as possible** callback the link is labeled `Manage your request`. A cancellation
notice has no link.

An email opens with `Hi` and the customer's name, then the same sentence, your note, the link,
and the sender name. Emails have no STOP line. Their subjects are:

| Message      | Email subject                                                                              |
| ------------ | ------------------------------------------------------------------------------------------ |
| Confirmation | `Your callback with Acme Dental is booked` (As soon as possible: `We'll call you shortly`) |
| Reminder     | `Reminder: your callback with Acme Dental`                                                 |
| Rescheduled  | `Your callback with Acme Dental moved`                                                     |
| Cancelled    | `Your callback with Acme Dental is cancelled`                                              |

The wording is fixed. The sender name and the note are the parts you set.

## Seeing what was sent

On **Scheduling → Bookings**, click a callback to open its sidebar. Its **Messages** list has one
line per message and channel, newest first, such as `Confirmation · Email · Sent`. A message is
**Sending**, **Sent**, **Skipped**, or **Failed**.

A skipped message says why:

| Shown                                              | Meaning                                                                                       |
| -------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| no email on the booking                            | The customer didn't give an email address.                                                    |
| no default From address                            | Your organization has no default sender, or that sender can't be used.                        |
| turned off for this calendar                       | The channel's switch was off when the message was due.                                        |
| this number can't send texts yet                   | No texting number is picked, or the picked number can't send texts.                           |
| the customer replied STOP                          | The customer opted out of your texts. See [STOP, START, and HELP](#stop-start-and-help).      |
| the callback time had passed                       | A reminder came due after the callback's start.                                               |
| this address got too many confirmations today      | The address already got 3 confirmation emails from this calendar today (UTC).                 |
| this address or number got too many messages today | The address or number already got 15 messages on this channel from this calendar today (UTC). |

When the email or text provider is busy or unavailable, Tandem tries the message again. Any other
error marks it **Failed** with the provider's error code, such as `provider_error`, and it is not
retried.

## STOP, START, and HELP

A customer can text one of these words, alone, to any of your numbers. Case and surrounding spaces
don't matter.

- **STOP**, **STOPALL**, **UNSUBSCRIBE**, **CANCEL**, **END**, or **QUIT** — opts the number out.
- **START** or **UNSTOP** — opts the number back in.
- **HELP** — asks what the texts are.

Tandem texts back once, from the number the customer texted:

```
STOP:  You're unsubscribed from texts from this number. No more messages will be sent. Reply START to resubscribe.
START: You're resubscribed to texts from this number. Reply STOP to opt out.
HELP:  Texts from this number: Reply STOP to opt out.
```

An opt-out covers your whole organization. Once a customer texts STOP to any of your numbers, the
booking texts on this page are skipped for them from every calendar, and a workflow's **Send SMS**
node to their number takes its fallback exit instead of sending, whichever of your numbers it
sends from. Emails still go out.

A keyword text never reaches a workflow. A text of STOP, STOPALL, UNSUBSCRIBE, CANCEL, END,
QUIT, START, UNSTOP, or HELP on its own doesn't start a conversation, and a **Send SMS** node
waiting for a reply doesn't receive it. A workflow that asks customers to "Reply CANCEL" never
sees that reply: CANCEL, END, and QUIT opt the customer out of your whole organization, like
STOP. Ask for a different word.

Tandem acts on these words once inbound texting on your account has moved to the current
messaging service; ask support whether yours has.

## Next steps

- [Webhooks](/docs/agents/scheduling/webhooks) — send booking events to your own systems.
- [Callback scheduling](/docs/agents/scheduling) — set a calendar's hours, capacity, and booking
  page.
