Google Calendar
Overview
Bronjoy integrates with Google Calendar to keep staff appointments in sync. Two sync modes are available:
| Mode | Direction | How it works |
|---|---|---|
| Google Calendar sync | Two-way | OAuth connection; pushes appointments to Google, pulls external events to block slots |
| iCal feed | One-way (read) | Subscribe from any calendar app; read-only, auto-refreshes |
Google Calendar Sync
Connecting
- Get the authorization URL:
GET /api/org/calendar/auth-url?provider=google Authorization: Bearer your-token
Returns a Google OAuth consent URL. The staff member opens this in their browser. - After granting access, Google redirects back to Bronjoy. The connection is created automatically.
- Verify the connection:
GET /api/org/calendar/connections Authorization: Bearer your-token
Sync behavior
Once connected, Bronjoy syncs in both directions:
Push (Bronjoy → Google):
- New appointments are created as Google Calendar events
- Rescheduled appointments update the event
- Cancelled appointments delete the event
- Event description includes service name, client info, and notes
Pull (Google → Bronjoy):
- External events on the staff's calendar block availability slots
- Pulled events are cached and refreshed periodically
- All-day events are handled correctly (block the entire day)
Toggle sync features
Control what gets synced per connection:
PATCH /api/org/calendar/connections/{connection}/toggle
Authorization: Bearer your-token
Content-Type: application/json
{
"push_enabled": true,
"pull_enabled": true
}
| Setting | What it does |
|---|---|
push_enabled | Push Bronjoy appointments to Google Calendar |
pull_enabled | Pull Google events to block Bronjoy availability |
sync_enabled | Master toggle — disables all sync when false |
Manual sync
Trigger an immediate sync (useful after making changes in Google Calendar):
POST /api/org/calendar/connections/{connection}/sync
Authorization: Bearer your-token
Disconnecting
DELETE /api/org/calendar/connections/{connection}
Authorization: Bearer your-token
This revokes the OAuth token, removes cached events, and stops all sync. Existing Google Calendar events created by Bronjoy are not deleted.
iCal Feed
An iCal feed is a read-only URL that any calendar application can subscribe to. It shows the staff member's upcoming appointments.
Get the feed URL
GET /api/org/calendar/feed-url
Authorization: Bearer your-token
Returns a URL like:
https://api.bronjoy.com/api/calendar/feed/abc123token.ics
Subscribe in your calendar app
Google Calendar:
- Open Google Calendar → Other calendars → From URL
- Paste the feed URL
- Google refreshes it automatically (usually every few hours)
Apple Calendar:
- File → New Calendar Subscription
- Paste the feed URL
Outlook:
- Add Calendar → From Internet
- Paste the feed URL
Feed details
- Contains upcoming appointments for the next 6 months
- Excludes cancelled appointments
- Each event includes: service name, client name, notes, location
- Refreshes every 60 minutes (calendar app may vary)
- Token-authenticated — no login required
Download single appointment
Clients can download a single appointment as an .ics file:
GET /api/client/appointments/{appointment}/ics
Authorization: Bearer client-token
Or get links to add to specific calendar apps:
GET /api/client/appointments/{appointment}/calendar-links
Returns Google Calendar and Outlook deep-links.
Best Practices
- Use Google Calendar sync if staff actively manage their schedule in Google Calendar — it prevents double-bookings by pulling external events
- Use iCal feed if staff just want a read-only view of their Bronjoy appointments in their preferred calendar app
- Enable pull sync for staff who have personal events on their Google Calendar that should block booking slots
- Don't use both Google Calendar sync and iCal feed for the same staff member — it creates duplicate events