Beta | Google Calendar Sync
Overview #
Each provider can connect their own Google account to Canvas and keep their calendars in sync both ways. Their Canvas appointments copy to a Canvas (Busy) calendar in Google, and busy events on the Google calendars they select block that time on their Canvas schedule. For setup steps and how each kind of Google event is handled, see Connecting Your Google Calendar to Canvas.
Expected Benefits #
One calendar view for providers: Canvas appointments appear in the provider’s Google Calendar showing only the visit type and time, with no patient details.
Fewer conflicting bookings: Busy time from a provider’s Google calendars is left out of available times everywhere Canvas offers them, including the schedule, patient self-scheduling and the FHIR Slot API.
For developers #
Google busy time is stored as busy blocks on the provider’s schedule, separate from appointments.
- Slot search leaves out times covered by a connected provider’s busy blocks, the same way it leaves out booked appointments.
- Appointment create and update treat a busy block like a booked appointment when double booking is turned off: a request that overlaps one returns a
422withThis appointment time is no longer available.When double booking is allowed, busy blocks don’t stop the request. - Busy blocks are not appointments or calendar events. They aren’t returned by FHIR Appointment search or by the SDK Appointment, Calendar, or Event data models, and they don’t send appointment events such as
APPOINTMENT_CREATEDto plugins. No SDK data model exposes a provider’s Google connection either. To find a provider’s open times including Google busy time, use FHIR Slot search. - Plugin Appointment and ScheduleEvent effects don’t check busy blocks. Whatever the double booking setting, an appointment or schedule event a plugin creates, updates, or reschedules can overlap a provider’s Google busy time.
- The sidebar entry for the sync page is the
GOOGLE_CALENDARitem in the layout effect, which renders only on instances in the beta.