Calendar & booking
Current release · Updated October 2, 2026
Plan customer appointments, share availability and connect your own calendars.
Start with availability
Open Calendar - Availability as an owner or administrator. Create a personal calendar with one host, or a team/service calendar with up to 20 current members. Round robin assigns the next available host; All hosts requires everyone to be free. Configure the named timezone, duration of 15-240 minutes in 15-minute steps, up to four working windows per weekday, and up to 100 date overrides. An empty override closes that date.
Notice can be 0-10,080 minutes, horizon 1-90 days and buffers 0-120 minutes before/after. Calendars are capped at 100 per workspace. Disable a calendar to stop new bookings without deleting its history. Existing appointment host/time/location snapshots stay fixed when settings change. Settings use current versions; refresh deliberately after a conflict.
Use Month or Agenda
Calendar opens in Month view. Change the month, jump to Today and filter by calendar/timezone. Select a date for its agenda; open an appointment for details. On phones the complete month shows date/count buttons and the selected-day agenda below. Agenda lists the current month chronologically. Lists contain up to 1,000 appointments within a date range of at most 62 days; narrow by calendar if more exist.
Book and manage an appointment
Choose New appointment, calendar, title, guest name/email and optional linked CRM record. Available times check working hours, overrides, notice, horizon, buffers, local bookings across every calendar and fresh provider availability. Internal users can choose a time outside working hours, with conflicts and provider freshness still enforced. Repeated daylight-saving clock times show separate offsets; nonexistent times must be corrected.
Save creates a persisted booking and its append-only history. A stable request UUID makes a lost-response creation retry safe. Open the appointment to edit notes, reschedule, cancel or mark Completed/No-show after its start. Closed appointments cannot reopen. Changes require the latest version. Cancellation is available after plan expiry. Linked records gain meeting activity; appointment lifecycle events can start workflows. Download Add to calendar for a UTC ICS file; this does not send an invitation.
Connect Google and Outlook
Open Calendar - Connections. Both providers use native sign-in with calendar permissions separate from email outreach. Register /api/calendar/oauth/google/callback or /api/calendar/oauth/microsoft/callback at the application origin; Google also needs Calendar API enabled. The initiating account/session must finish its own grant. Each user may retain up to 10 connections per workspace. OAuth creates a paused connection; choose an editable provider calendar before enabling busy imports or appointment exports.
Busy sync stores event times/IDs rather than outside event titles or attendees. Recurring events expand within 31 days before to 92 days after today, capped at 2,000 events/eight pages. Background sync runs about every five minutes; availability older than 10 minutes or outside a verified range blocks that connected host. Sync now refreshes the range. A provider failure does not silently declare the host free. Pausing a connection removes its availability requirement and leaves provider events intact.
Understand appointment exports and conflicts
Optional export writes DryKraft appointment titles, times and locations to your chosen calendar; guest lists and internal notes are excluded, and no attendee invitations are requested. It updates events DryKraft created, rather than importing provider edits into local appointments. Up to 20 pending exports are processed per sync pass. Closed appointments become free events. A selected provider calendar cannot change after exports exist; add another connection instead.
Provider changes freeze the mapped export as Conflict. Review the provider event and appointment, then explicitly approve Use DryKraft values with the current appointment version. Ambiguous acceptance remains Unknown until sync recovers its matching provider marker; a new event is never blindly created again. An in-flight request may finish after Pause. Account grants, callback configuration and actual provider acceptance require separate live verification; injected-transport checks are not proof of a live grant.
Connect reminders and attendance to workflows
Calendar emits Appointment created, updated, rescheduled, cancelled, completed, no-show and reminder-due events. Configure up to three reminder offsets; the UI offers 15 minutes, 1 hour, 1 day or all three. Reminders are durable events, checked about once per minute, not automatic emails/messages. Build a published event workflow that creates a task or uses a reviewed provider action. Notes-only edits do not repeat emitted reminders; rescheduling cancels pending old reminders and creates new ones. Past/closed/inactive-plan reminders cancel.
Book appointment is a shared workflow action. Select a current enabled calendar and provide title, guest_name, guest_email, starts_at with UTC offset and timezone; record_id/notes/outside_hours are optional. It uses the same availability checks and commits appointment creation with node completion to prevent duplicate bookings on retries. Appointment events can carry guest data inside authorized workflow execution history; customer webhooks contain notification metadata only.
