> 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/customers-and-work/scheduling/create-visits-for-many-properties-at-once.md).

# Create visits for many properties at once

When one customer has many properties that all need the same work — a campus with dozens of buildings, a portfolio of stores — you don't have to create each visit one at a time. The create-visit window has a **One visit | Batch of visits** switch (top right); batch mode creates the whole set in one pass and hands the scheduling to your technicians.

The switch appears when technician self-scheduling is turned on (Settings → Technician App → Scheduling), because a batch is released to technicians to schedule for themselves. Order is up to them; you set the window and who does the work.

## Step 1 — Add Details: customer, properties, dates, and shared details

1. On the Scheduling page, select **Create Job / Visit**, then **Batch of visits** in the top right.
2. Search for and select the **customer**. Every property at that customer is listed with its address and asset count.
3. Check the properties to include — use **Select all matching**, the search box, or the asset filters (for example, only buildings with extinguishers). Inactive properties can't be selected. An amber dot marks properties that already have open work.
4. On the right, fill in what every visit shares: **Visit Type**, **Estimated Duration**, the **Start date** and **End date**, **Technician Instructions**, and any **Job Custom Fields**. Job custom-field values entered here are saved on every job created by the batch. The window is **All day** by default — technicians pick the actual times, and the end date becomes each visit's due date. Uncheck **All day** to add a **Start time** and **End time**: work starts no earlier than the start time on the first day and wraps by the end time on the last day (which then becomes the exact due moment).

## Step 2 — Adjust & Release

Select **Make Adjustments** to move on. Here you set:

* **Batch name** — how the group appears on the calendar and in the backlog (for example, "Northgate — Aug annual").
* **Who schedules these visits** — pick **Specific technicians** to assign the batch to chosen technicians (their calendars show the reserved window), or **Any technician can claim**. Only technicians with mobile app access are offered — a technician without a login could never see or book the visits.
* **Techs per visit** — for work that needs a crew. If you select exactly as many technicians as each visit needs, that exact crew is booked together; if you select more (or allow any technician), whoever claims a visit picks their teammates.
* The visit list shows every property with its duration and visit type. Select a row to change just that visit's type, duration, or instructions — it's marked **Customized** — or remove it from the batch. Custom fields that require a unique value appear inside each row instead of in the shared section, so every new job can receive a different value.
* Select **Create & release**. Every property gets its own job and visit, and the batch is released. Batch visits don't sit in the backlog — they're already claimed for their technicians' window — so the calendar block below is where you'll find them.

## What everyone sees

* **Technicians** get the visits in their mobile **Open** tab, grouped under the batch name with its date range; each card shows the window ("Schedule for Aug 3 – Aug 7"), and booking before it opens shows a clear warning — the window guides, it doesn't block. They work through the buildings in whatever order suits them.
* **The calendar** blocks off each assigned technician's days across the window as an **all-day reservation** — a tinted column with a banner like "Northgate — Aug annual · All day · 38 of 50 left" (a timed window shows its hours, e.g. "9 AM – 3 PM", instead of "All day") — so you can see those technicians are spoken for without 50 cards on the grid. The count ticks down as visits are booked and the block disappears when the batch is done.

## Manage a batch

Click the all-day block on the calendar for a quick summary popover, then **Edit batch** to open the batch:

* **Rename** the batch or **move the window** — moving the due date re-dates every remaining unscheduled visit.
* **Change the technicians** for the remaining visits.
* **Open a single visit** from the list to edit just that one.
* **Cancel remaining visits** — deletes the unscheduled visits. Each one's job is deleted too, unless something else has since touched it (another visit, added files or items, a linked quote or invoice, or a manual edit) — that job is kept instead. Visits technicians already booked are never touched.

## When the window passes with visits still unbooked

If the end date arrives and some visits were never scheduled, the batch shows up as a single card at the top of the **backlog** — "Northgate — Aug annual · 12 of 50 visits unbooked · Ended Aug 15" — no matter which week the calendar is showing. It's one card for the whole batch, not 50 loose visits.

![Expired batch card at the top of the backlog](https://3838208579-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Flu1pgNH0CrkCPslG8suQ%2Fuploads%2Fgit-blob-20e46250133c268eccc3a35dbbb4b3839d8cddae%2Fscheduling-expired-batch-card.png?alt=media)

Click the card to open the batch and decide what happens next: **move the window** to give technicians more time (this re-dates the remaining visits and puts the reservation back on the calendar), **change the technicians**, schedule visits yourself one at a time, or **cancel the remaining visits**. The card goes away on its own once nothing in the batch still needs attention.

![The batch opened from the card](https://3838208579-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Flu1pgNH0CrkCPslG8suQ%2Fuploads%2Fgit-blob-9793218cd2c6e4c2a709e3d4d75dba6a9a9b1234%2Fscheduling-expired-batch-panel.png?alt=media)

> **Where to find it:** Scheduling → Create Job / Visit → Batch of visits (top right of the window). Requires technician self-scheduling (Settings → Team → Technician App → Scheduling).

## Related guides

* [Let technicians schedule backlog visits](/customers-and-work/scheduling/let-technicians-schedule-backlog-visits.md)
* [Schedule an open visit from the mobile app](/field-operations/mobile/schedule-an-open-visit.md)
* [Create a new visit](/customers-and-work/scheduling/create-a-new-visit.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/customers-and-work/scheduling/create-visits-for-many-properties-at-once.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.
