Car Battery Pro
Day-to-Day Operations

Appointments & scheduling

How installation availability and bookings flow through the central calendar.

Appointments & scheduling

👤 Ops

Installation appointments are driven by Google Calendars that the Car Battery Pro office controls — one per installer. The website reads availability from those calendars and reserves a slot when a customer books.

How availability is defined

Each installer has their own Google Calendar (the backend keeps a list of installers and their calendar IDs). Availability is controlled with calendar events:

  • An event titled "Open Slot" = an available appointment the website can offer.
  • An event titled "Installation …" = a booked appointment.

So to open up capacity, the office creates "Open Slot" events in an installer's calendar; to close capacity, remove or change them. There is no separate booking admin — the calendar is the source of truth.

Two automatic limits apply to what customers can book:

  • Lead time: slots must be at least ~1 day in the future.
  • Look-ahead: slots more than ~30 days out aren't shown.

(These limits are configured on the backend and can be adjusted by a developer.)

How a booking flows

  1. The website shows "Open Slot" events as available times (filtered to the customer's area).
  2. When a customer books, the API reserves the slot — the event is renamed to "[UNCONFIRMED] Installation for …" and an Order ID is created.
  3. When the customer pays, the booking is confirmed — the event becomes a permanent "Installation for …" and confirmation emails are sent.
  4. The central office assigns/dispatches an installer. Installers take their jobs from the office, not from the website directly.

Installers receive jobs from the central office — the team with access to the Google Calendars. The website's role ends at reserving and (on payment) confirming the slot.

Reserved slots that aren't paid are auto-released

If a customer reserves a slot but doesn't complete payment, the backend releases it back to "Open Slot" after about an hour. This is automatic — you don't need to clean up abandoned checkouts manually.

The flip side: confirmation relies on Shopify's order_paid webhook reaching the API. If that webhook breaks, paid bookings can be auto-released. If customers report "I paid but my appointment vanished," treat it as a webhook problem and escalate — see Common issues and Escalation.

When a job is cancelled or refunded

A confirmed booking is a normal calendar event; cancelling the Shopify order does not remove it. After refunding/cancelling in Shopify, manually delete or reopen the slot in the installer's calendar so the time can be reused. (Only unpaid reservations clean themselves up.)

Confirm the specifics for your team and record them here: which Google account owns the installer calendars, who may edit them, how installers are added/removed (a backend installers record links an email to a calendar), and your standard slot length.

For developers

Availability is fetched via /v1/schedule and reservations via /v1/schedule/reserve in assets/installation.js; confirmation happens server-side via the order_paid webhook. See The backend API for the full lifecycle.

On this page