> For the complete documentation index, see [llms.txt](https://learn.withessential.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.withessential.com/administration/settings/configure-visit-reminders.md).

# Configure visit reminders

Visit Reminders controls the email and text messages Essential sends to contacts before a scheduled visit. You can set up several reminders at different times — for example seven days out, two days out, and twelve hours out — and every scheduled visit follows that same schedule.

Each visit contact receives email, text, or both, based on the notification choices on that visit. Settings decides *when* reminders go out; Scheduling decides *how* each contact hears about it.

## Before you start

You need permission to manage Automated Outreach settings. A contact also needs a valid email address or textable phone number before that delivery option can be selected on a visit.

## Set up your reminder schedule

1. Open **Settings > Scheduling** and select the **Visit Reminders** tab.
2. Under **When reminders send**, each row is one reminder: *Send \[ 7 ] \[ days ] before the visit*. Enter how far ahead it should go out and choose **days** or **hours**. Decimals are allowed in either unit, so "0.5 days" and "12 hours" are the same reminder.
3. Select **Add reminder** for each additional reminder you want, up to ten. Use the trash icon to remove one — the last remaining reminder can't be removed. Two reminders cannot be set to the same time.
4. Under **Send timing**, set the **Send time**. This is the time of day used by reminders set in whole days. A reminder set in hours ignores it and sends exactly that far before the visit — a two-hour reminder for a 3:00 PM visit goes out at 1:00 PM.
5. Turn on **Count reminder timing in business days (skip weekends)** if reminders counted in days should step over Saturday and Sunday. With it on, a three-day reminder for a Monday visit goes out the previous Wednesday rather than Friday. The setting applies to every reminder in the list.
6. Select **Save changes**.

The order you enter the rows in does not matter; they are stored and re-displayed longest lead first, and reminders always go out in that order.

## Write messages that work at every reminder time

One email and one text serve every reminder in your schedule. Rather than writing separate copy for "a week before" and "tomorrow," use variables so the same message reads correctly whenever it sends:

| Variable                  | Reads as                                                                                                                        |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `{{ visitRelativeTime }}` | `in 7 days`, `tomorrow`, `in about 2 hours`                                                                                     |
| `{{ visitWhen }}`         | `Tuesday, August 18 at 9:00 AM`; estimated visits show the scheduled start through the end of the estimated service duration    |
| `{{ arrivalWindow }}`     | The saved arrival window, such as `9:00 AM – 11:00 AM`, in your business's timezone; empty when no complete window is available |

For example: *"Your service appointment is {{ visitRelativeTime }} — {{ visitWhen }}."*

To show the arrival window set on the visit, use `{{ arrivalWindow }}` in an email subject, email body, or text message. It is separate from the estimated service duration. Wrap the wording in a condition so visits without a window do not show an empty label:

```liquid
{% if arrivalWindow != blank %}
  Expected arrival: {{ arrivalWindow }}.
{% endif %}
```

If you already customized your reminder copy for a single lead time, re-read it before adding more reminders — wording like "we'll see you tomorrow" will be wrong at the seven-day mark.

## Edit the email and text message

The **Email visit reminder** and **SMS visit reminder** cards open in **Visual**: the rendered message, with visit and contact details filled in from sample data while your business's real name, logo, phone, and email render the way a live send would.

Use the preview tabs to see an exact appointment, an estimated appointment with its arrival window, or a visit with no access details. Switching examples does not change the message and does not create an unsaved change.

1. Click any text in the email subject, email body, or text message and type to change it. Variables show sample values; hover one to see its name, and press Backspace or Delete next to it to remove it.
2. To add a variable, click in the text where it should go, then select **Insert variable** on that card and pick one, such as **Visit relative time** (`{{ visitRelativeTime }}`). You can also pick one first, then click where it should go (see [Add a variable](/administration/settings/edit-a-document-templates-design-with-edit-code.md#add-a-variable)).
3. Select **Save changes**.

Enter adds a line break (the subject stays on one line), and pasted text arrives as plain text. What you type is always plain text, so typing `{{` can't break the message.

Select **Edit code** on a card for anything Visual can't do: logic such as the `{% if arrivalWindow != blank %}` condition above, layout and styling, or text that doesn't highlight when you point at it. Edit code shows the **Subject** and the raw template code, with a list of every variable available to both channels. Switching between **Visual** and **Edit code** never loses or rewrites anything. An empty template opens in Edit code.

The email subject accepts up to 10,000 characters of template code, including conditions and variables. In Edit code, the subject editor starts at one line and grows automatically as text wraps or line breaks are added; very long subjects scroll within the editor. Use **Visual** to check the shorter subject your customer will receive.

If a template has an error, a red notice appears under that card and **Save changes** stays unavailable ("Fix the template error to save.") until you fix it. A yellow notice flags a variable that doesn't exist; you can still save. An error in a template you saved earlier and haven't changed doesn't stop you saving your reminder timing. See [Errors and warnings](/administration/settings/edit-a-document-templates-design-with-edit-code.md#errors-and-warnings).

## What happens to visits booked at short notice

A visit gets one place in your schedule when it's booked: the first reminder that is still ahead of it. Reminders whose moment already passed are skipped rather than replayed.

If your schedule is seven days / two days / twelve hours and you book a visit for tomorrow morning, the contact gets the twelve-hour reminder — not a burst of three messages at once.

If the visit is booked so close that even the last reminder is behind it, that closest reminder is still sent, right away, so the contact hears from you once rather than not at all.

Rescheduling re-places the visit the same way. Pushed further out, earlier reminders become due again and will send, because they describe a date the contact has not been told about yet.

## What saving changes

Saving updates the reminder options used by Scheduling and re-dates reminders already in progress against your new timing. A visit waiting on the second of three reminders keeps its place in the sequence, so a reminder a contact already received is never re-sent because of a settings change.

If you shorten the list and a visit was waiting on a reminder you removed, that visit's remaining reminders stop. A reminder you sent by hand from the visit is left alone.

Changes are held as a draft until you save, and Essential warns you before leaving the page with unsaved edits.

> **Where to find it:** Settings > Scheduling > Visit Reminders

## Related guides

* [Add work orders (visit types) and contacts with reminders to a visit](/customers-and-work/scheduling/add-work-orders-visit-types-and-contacts-with-reminders-to-a-visit.md)
* [Customer notifications for scheduled visits](/customers-and-work/scheduling/customer-notifications-for-scheduled-visits.md)
* [Send a visit reminder to a customer](/customers-and-work/scheduling/send-a-visit-reminder-to-a-customer.md)
* [See and browse your automated outreach](/field-operations/automated-outreach/see-and-browse-your-automated-outreach-the-automated-outreach-page.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://learn.withessential.com/administration/settings/configure-visit-reminders.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
