> 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/connect-a-calendar-google-or-microsoft-outlook.md).

# Connect a calendar (Google or Microsoft Outlook)

Essential can sync your team's schedule into a Google or Microsoft Outlook calendar so technicians see their visits in the calendar app they already use. Open Settings, go to Scheduling, and select the Calendar Sync tab.

You'll see a card for Google Calendar and one for Microsoft Outlook Calendar. Click Connect on the provider you want, sign in, and approve access. When you return, the card turns green and shows the connected account's email address.

Google's approval screen lists each permission with its own checkbox, and they are not all ticked for you. Leave the calendar permission ("See, edit, share and permanently delete all the calendars you can access") checked — Essential needs it to create your technicians' calendars and add their visits. If you continue without it, Essential tells you access wasn't granted and the calendar stays unconnected; click Connect again and tick the box.

Each technician gets their own dedicated calendar, kept up to date automatically. A few things to know. The initial sync only adds visits from today onward; past visits are not copied over.

When a technician is deactivated or loses mobile access, Essential schedules removal of their dedicated calendar from every connected account. If a calendar provider cannot complete the deletion, the external calendar and Essential's tracking record are both kept rather than half-removed. Essential does not automatically retry that provider failure, but the retained tracking record means the calendar can still be located for later cleanup. If the technician is reactivated, a calendar is created again the next time one of their visits syncs.

Essential is the source of truth: any change you make directly in the synced calendar will be overwritten the next time that job is updated in Essential, so always edit visits in Essential, not in the calendar app. You can connect Google and Outlook independently.

To stop syncing, click Disconnect on that provider's card and confirm. For Google, disconnecting revokes Essential's access, stops syncing, and removes the Essential calendars from your account.

For Microsoft Outlook, disconnecting removes the stored connection in Essential and stops syncing, but Microsoft does not provide the same direct revocation step through Essential. If you need to fully revoke access in Microsoft, remove Essential from your Microsoft account's connected apps or admin settings.

## Customize what synced events say

By default, each synced event is titled with the property's address and name, and its description lists the visit types and technician instructions. When a visit has contacts added to it, the description also lists them — one per line with their title, phone number, and email — so the technician has the site contact in hand from the calendar alone. When the Arrival Windows feature is on and a visit has one, the description includes the arrival window automatically too. The Event Content section on the same Calendar Sync tab lets you change all of this.

The **Preview** box opens in **Visual**: the event title and description as they'll appear, filled with sample visit data. Click any text 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. The title stays on one line; in the description, Enter adds a line break.

To add a variable, click in the title or description where it should go, select **Insert variable** at the top of the **Preview** box, and pick one — or 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)). For example, to put the property name at the front of the description, click at the start of the description and insert **Property name**. Available values include property address and name, customer name, job number, visit types, visit summary, technician instructions, access info, assigned technician names, the arrival window, the visit's contacts, and any custom fields you've created for properties, jobs, or customers — each custom field is its own entry under **Custom fields**, such as **Gate Code (property)**.

For logic, such as showing a line only when a value exists, select **Edit code** in the **Visual / Edit code** switch. Edit code shows the raw **Event title** and **Event description** templates with the **Available variables** list below; click a variable to insert it, or type it, like `{{ propertyName }}` or `{{ propertyCustomFields["Gate Code"] }}`. Switching between Visual and Edit code never loses or rewrites anything.

If the title or description has an error, it shows in red under the preview (in Edit code, under that field), and **Save** stays unavailable until you fix it. Here a misspelled or unknown variable name counts as an error too, not just a warning. One format applies to both Google and Outlook.

After you save, upcoming events that are already synced are rewritten in the background over the next few minutes, so the new format shows up without rescheduling anything. To go back to the standard format, click **Reset to default** (or clear the fields) and save.

> **Where to find it:** Settings > Scheduling > Calendar Sync

## Related guides

* [Turn scheduling and GPS features on or off](/administration/settings/turn-scheduling-and-gps-features-on-or-off.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/connect-a-calendar-google-or-microsoft-outlook.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.
