Calendar Sync overview
The 3 providers, 2-way sync, busy-block, multi-calendar
Calendar Sync
You can sync Bookinda bookings with your personal calendar (Google, Apple, Outlook). Goes both ways:
- Bookinda → external calendar: bookings appear in personal calendar
- External calendar → Bookinda: time booked on personal calendar blocks Bookinda
Where to find it
/manager/connect/calendar (or on staff profile: Calendar Sync section).
The 3 providers
1. Google Calendar
- OAuth 2.0 flow (Bookinda requests access)
- Real-time push: booking creation appears in Google instantly
- 15-min pull cron: Google → Bookinda direction refreshes hourly
2. iCal feed (Apple Calendar / any)
- Token-based ICS URL: e.g.,
https://api.bookinda.hu/ical/{token}.ics - One-way push: Bookinda bookings appear
- Apple / Outlook / anything can read with ICS feed support
3. Outlook (future)
- Schema infrastructure ready, OAuth flow not yet implemented
- For now use iCal feed in Outlook
Per-staff vs per-tenant
Per-staff sync
Staff connects own Google. Only their bookings sync.
- Typical: hairstylist sees own bookings in personal calendar
Per-tenant sync
Owner / Manager connects a salon-level calendar. All staff bookings sync to common calendar.
- Typical: salon owner sees whole salon in one view
Both can coexist: staff can have personal sync + tenant-level too.
2-way sync
Bookinda → external (push)
- New booking → push event to external calendar
- Modification (e.g., reschedule) → update on event
- Cancellation → cancelled status on event
Bookinda marks event "Bookinda-origin" via extended properties, so we don't pull back (loop prevention).
External → Bookinda (pull, busy-blocks)
- Cron pulls every 15 min
- External calendar events become
ExternalBusyBlock - Appear on Bookinda calendar as "Busy" time slot
- Blocks: no new online booking on that time
What's pulled
- ✅ Confirmed events
- ❌ Cancelled events (skipped)
- ❌ All-day events (skipped)
- ❌ Declined events (skipped)
- ❌ "Free" (transparent) events (skipped)
Works in 60-day future window.
Multi-calendar
A staff can connect multiple Google Calendars:
- Personal Google (family calendar)
- Work Google (business calendar)
- Both pull busy-blocks into Bookinda
Useful if events are on different accounts.
What customer sees
On Bookinda online booking page, customer:
- Salon bookings block time slots (default)
- Staff's personal calendar "Busy" time slots also block (busy-block)
- Customer doesn't see staff event content, only "Busy" marker
Privacy levels
Configurable, how much info goes to external calendar:
- FULL_DETAILS: customer name + service + note
- LIMITED: service name only
- BUSY_ONLY: just "Busy"
→ Details: Privacy levels
When to use it
Scenario 1, hairstylist personal sync Staff connects own Google Calendar. Salon bookings appear in personal calendar (FULL_DETAILS). Personal events (doctor, family) become busy-block in Bookinda.
Scenario 2, salon owner overview Owner connects salon-level Google. All staff bookings to common calendar. See everything in one view.
Scenario 3, Apple Calendar user Add iCal feed URL in Apple Calendar. Read-only sync (Bookinda → Apple).
Scenario 4, multi-calendar Staff connects Personal + Work Google. Both pull busy-blocks.
Tips
- Per-staff sync recommended by default, staff sees own bookings in own calendar.
- 15-min pull cron isn't real-time, new external event can be "lost" for 0-15 min.
- iCal feed is read-only, only Bookinda → external direction. Can't write back from Apple.
- Multi-calendar typically means 2 Google calendars, don't connect 5 (noise).
- Privacy level reflects salon sensitivity: medical-spa stricter (BUSY_ONLY), hairstylist looser (FULL_DETAILS).
- Loop prevention is automatic, Bookinda doesn't pull itself.