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

# Service calendar

> Your schedule: service visits, holds, booked projects, and company capacity.

The **Service calendar** is your schedule — where every booked project, held slot, and blocked stretch of time lives. When a homeowner pays a deposit and picks a time, their appointment lands here. When you need to block the route for a equipment delivery or a technician's vacation, you do it here too.

The page has four tabs: **Calendar board**, **Calendar**, **Services & links**, and **Availability**.

## Calendar board

The Calendar board is where multi-day work and blocked time share the same conflict-safe calendar. Every active project shows the homeowner, property, service, estimated duration, and promised-by date. Blocked time — equipment deliveries, maintenance, company closures — appears alongside jobs so you never double-book the team.

### Create a project booking

<Steps>
  <Step title="Open the new booking drawer">
    Click **New booking** in the top right.
  </Step>

  <Step title="Pick a service and homeowner">
    Select the service from your rate card. Enter the homeowner's name and contact info. If the job is for a property already in your Properties, select it — otherwise the property is created when the job is saved.
  </Step>

  <Step title="Set the time range">
    Choose the start and end dates. Project bookings can span up to 30 days — useful for multi-week pool construction or remodel phases.
  </Step>

  <Step title="Assign and save">
    Pick a technician (or leave unassigned for solo operators). Click **Create**.
  </Step>
</Steps>

The job appears on the board immediately with a **confirmed** or **pending** status. If you have a calendar connected (Google or Microsoft), confirmed jobs push to your external calendar automatically.

<Accordion title="What if I get a conflict warning?">
  If the selected range overlaps an existing job or blocked time, you'll see *The selected range is already occupied*. Pick a different range or remove the conflicting block first. When a calendar is connected, Kordless also checks external busy time — if the external calendar can't be read, the job is created as **pending** (provisional) rather than **confirmed**.
</Accordion>

### Block time

Blocking prevents new bookings across a continuous range — for an equipment delivery, maintenance, a company closure, or a team member's time off.

<Steps>
  <Step title="Click Block time">
    The button sits next to **New booking**.
  </Step>

  <Step title="Describe the block">
    Enter a reason (e.g., "Equipment delivery" or "Company closed — holiday"). Choose whether it applies to the whole company or a specific team member.
  </Step>

  <Step title="Set the range and save">
    Pick the start and end date/time. Click **Block time**.
  </Step>
</Steps>

The block appears in the **Blocked time** panel alongside active jobs. Manual blocks can be removed at any time — click the trash icon next to the block. Blocks from external calendars (like a technician's Google Calendar busy time) appear as read-only.

<Warning>
  Blocking time does not cancel existing appointments in that range. It only prevents new bookings. If you need to cancel or reschedule an existing job, do it from the Calendar tab.
</Warning>

## Calendar

The Calendar tab is the day-and-week grid view of your schedule. Every appointment — whether it came from a homeowner's deposit, a manual booking, or the agent — appears here with its status color-coded:

* **Confirmed** — deposit paid, slot locked in
* **Pending** — slot held but no deposit yet (the hold has a clock)
* **Completed** — job done
* **No-show** — homeowner wasn't present
* **Cancelled** — appointment removed

### Create an appointment

<Steps>
  <Step title="Click New appointment">
    The button is in the top right, or click directly on an empty slot in the calendar grid.
  </Step>

  <Step title="Fill in the details">
    Pick a service, enter the homeowner's name, and set the date and time. You can pre-fill contact info if you're booking for an existing homeowner.
  </Step>

  <Step title="Assign and save">
    Choose a technician if you have a team. Click **Create** to book the slot.
  </Step>
</Steps>

The appointment appears on the calendar with a **confirmed** status. If a calendar is connected, it syncs to your external calendar within seconds.

### Reschedule an appointment

<Steps>
  <Step title="Open the appointment">
    Click the appointment block in the calendar grid.
  </Step>

  <Step title="Drag or edit">
    Drag the block to a new time slot, or open the detail panel to change the date and time fields directly.
  </Step>
</Steps>

The calendar reflects the new time immediately and syncs the change to your connected external calendar if one is configured.

<Accordion title="What if the homeowner has a deposit?">
  Rescheduling in the Calendar tab moves the appointment slot but does not refund or re-charge the deposit. The deposit stays on file. If the homeowner booked through a bid link and you need to change the slot from the customer-facing scheduling page instead, re-share the [scheduling link](/pool-spa/bidding/deposits-and-scheduling#re-share-the-scheduling-link).
</Accordion>

## Services & links

This tab manages the services homeowners can book and the scheduling links you share. Each service has a name, duration, and active/inactive toggle. Booking links are shareable URLs that let homeowners self-schedule — the same links the agent includes in bids.

For full details on configuring services and pricing, see [Your rate card](/pool-spa/bidding/rate-card).

## Availability

The Availability tab controls when your company is open for bookings.

### Business hours

Set your standard weekly hours — which days you're open, and what times. These hours drive the slot engine: homeowners only see times you're actually open.

### Exceptions

Need to close for a holiday or open for a Saturday event? Add an availability exception for a specific date. You can mark the company closed or set special hours for that day only.

### Assignee rules

If you have a team, each technician can have their own hours. A technician who only works Tuesday–Thursday won't show as available on a Monday booking. Assignee rules layer on top of business hours — the company must be open and the technician must be working.

### Calendar sync

Connect a Google or Microsoft calendar to two-way sync appointments. When a homeowner books through Kordless, the appointment pushes to your external calendar. When your external calendar shows busy time, Kordless reads it to prevent conflicts.

### Connect a calendar

<Steps>
  <Step title="Open Availability">
    Scroll to the calendar connection section.
  </Step>

  <Step title="Connect a provider">
    Click **Connect** next to Google or Microsoft. Authorize the account.
  </Step>

  <Step title="Choose what syncs">
    Toggle **busy-enabled** to read external busy time, and **push-enabled** to write Kordless appointments to the external calendar.
  </Step>
</Steps>

You'll see the connection status change to **Active**. You can connect calendars per team member — each technician's appointments sync to their own calendar.

<Accordion title="What if the calendar disconnects?">
  If the connection is revoked or encounters an error, the status shows **Revoked** or **Error**. Reconnect by clicking **Connect** again. Appointments created while disconnected are not retroactively synced — add them to your external calendar manually if needed.
</Accordion>

## How deposits connect to the Service calendar

When a homeowner pays a deposit through a bid link, two things happen simultaneously:

1. The appointment is created on your Service calendar with a **confirmed** status.
2. The property gets a record in your [Properties](/pool-spa/day/properties).

If the homeowner picks a slot but no deposit is collected (because Stripe isn't connected or the service has no deposit policy), the appointment shows as **pending** — the slot is held, but the job isn't financially committed. Pending holds have an expiration clock; if the deposit doesn't land in time, the hold releases.

## Next steps

<CardGroup cols={2}>
  <Card title="Today" icon="sun" href="/pool-spa/day/today">
    Your morning feed: overnight activity and decisions waiting on you.
  </Card>

  <Card title="Properties" icon="home" href="/pool-spa/day/properties">
    Every homeowner and pool you've worked on: records, equipment, and warranties.
  </Card>
</CardGroup>
