Why EventKit Isn't Enough for Google Calendar
On macOS, Google Calendar reaches EventKit through CalDAV, and event types, colors, OOO, rooms and Meet get flattened. Why that gap is the reason hora exists.

EventKit doesn't talk to Google. It reads whatever macOS already has, and macOS gets Google calendars through Internet Accounts, synced over CalDAV. Any app built on EventKit sees Google Calendar through two translations: Google's model goes into CalDAV/iCalendar, and then into EKEvent. The cost is that the richest provider gets flattened to the shared baseline.
If you build a calendar app for the Mac, EventKit looks like a gift. One framework, every account the user has added to macOS, and no OAuth or sync engine for you to maintain. I looked at it seriously when I started hora. Then I looked at what actually reaches EventKit when the account is Google.
How Google gets into EventKit
EventKit doesn't talk to Google. It reads whatever macOS already has, and macOS gets Google calendars through Internet Accounts: you add your Google account in System Settings, and Calendar syncs it over CalDAV. So any app built on EventKit sees Google Calendar through two translations: Google's model goes into CalDAV/iCalendar, and then into EKEvent.
CalDAV is a good open standard. That's why it exists: one protocol for iCloud, Fastmail, Nextcloud and Google. But a common protocol is, by definition, a common denominator. Google's own documentation says its CalDAV doesn't support free-busy lookups, tasks (VTODO) or custom properties, and incoming invitations land straight in your events rather than in a scheduling inbox.
What gets lost on the way
For me, what's missing is most of what makes Google Calendar Google Calendar at work:
- Event types. Focus time, out-of-office and working location are distinct things in Google. Through CalDAV/EventKit they show up as plain events or not at all.
- Color labels. The per-event colors you set in Google don't come through as Google colors.
- Out of office. In Google, OOO declines meetings for you. Through EventKit it's just a block of time.
- Location the way Google models it, including working location.
- Meeting rooms and resources. Apple Calendar has no Google Room Scheduler.
- Google Meet. You can't attach a Meet call when you create an event.
- Freshness. Apple Calendar polls Google on a timer instead of getting push updates.
None of this is a bug in EventKit. It's doing exactly what it was designed to do: give apps one uniform view of many providers. The cost is that the richest provider gets flattened to the shared baseline.
Why that mattered enough to build hora
My whole working day runs on Google Calendar: rooms, Meet links, focus blocks, OOO, color-coded time blocks. Every native Mac calendar I tried either went through EventKit and lost those details, or was a wrapped web page. So I went the other way. hora talks directly to the Google Calendar API. Google stays the source of truth, a local cache keeps the app fast, and Google's own vocabulary (event types, conference data, colors, working locations) survives the round trip.
For push, hora registers a Google events.watch channel for each calendar. A small Cloudflare Worker turns Google's ping into a silent push, and the Mac fetches what changed, with a reconciliation pass behind it.
The trade-off I accepted
hora is Google-only: no iCloud, no Exchange, no generic CalDAV. If you want every provider in one app, a CalDAV/EventKit client is the better fit. The API also means OAuth, quotas, renewing channels and recovery syncs are all my problem now.
But if Google Calendar is where your day actually lives, the common denominator isn't enough. That gap is why hora exists. It works with Google Calendar, natively on the Mac.
If Google Calendar is where your week lives, try hora Calendar free for 14 days with the Direct download, no card required.
EventKit and Google Calendar FAQ
Does EventKit support Google Calendar?
Not directly. EventKit doesn't talk to Google. It reads whatever macOS already has, and macOS gets Google calendars through Internet Accounts: you add your Google account in System Settings, and Calendar syncs it over CalDAV.
Which Google Calendar features get lost through CalDAV and EventKit?
Event types (focus time, out-of-office and working location), Google color labels, OOO declining meetings for you, location the way Google models it, meeting rooms and resources, attaching Google Meet when you create an event, and push updates. Google's own documentation also says its CalDAV doesn't support free-busy lookups, tasks (VTODO) or custom properties.
Is this a bug in EventKit?
No. EventKit is doing exactly what it was designed to do: give apps one uniform view of many providers. The cost is that the richest provider gets flattened to the shared baseline.
Does Apple Calendar get push updates from Google?
No. Apple Calendar polls Google on a timer instead of getting push updates.
How does hora connect to Google Calendar?
hora talks directly to the Google Calendar API. Google stays the source of truth, a local cache keeps the app fast, and Google's own vocabulary (event types, conference data, colors, working locations) survives the round trip. For push, hora registers a Google events.watch channel for each calendar.
Does hora work with iCloud or Exchange?
No. hora is Google-only: no iCloud, no Exchange, no generic CalDAV. If you want every provider in one app, a CalDAV/EventKit client is the better fit.


