Providers

A Google Calendar API alternative with sync and push handled.

Workwae keeps an index of each Google account’s calendars and events, renews the watch channels, and sends your app a webhook when an event changes.

What Google requires

The Calendar API is yours to operate.

These are Google’s rules, from Google’s docs. Workwae does not remove consent or quota.

OAuth scopes

A Cloud project, an OAuth client and a consent screen, with Calendar scopes such as calendar.events or the full calendar scope. Calendar scopes

Incremental sync

Store a nextSyncToken per calendar and send it back on the next list. A 410 means the token is invalid, and the local copy has to be wiped and listed again. Synchronize resources

Push channels

A watch channel per resource posts to an HTTPS endpoint you run. There is no automatic renewal: before a channel expires you replace it with a new one. Push notifications

Quota

10,000 requests per minute per project and 600 per minute per user per project. Google’s own advice is to use push rather than poll every calendar. Usage limits (as of October 2026)

What Workwae does

Calendars as a synced index, not a proxy.

Sync token and window

Each calendar syncs with its sync token. Series are expanded locally into a window of 90 days back to 365 days ahead by default, so listing events for a range does not call Google.

Channels and backstop poll

Workwae watches the calendar list and every calendar the account owns or can write, and renews channels before they expire. Holiday and read-only calendars have no channel and are caught by a backstop poll, a day by default. If a watch fails, the poll covers it.

Recurring events and Meet

Recurrence is RFC 5545 lines, evaluated in the event’s time zone. Occurrences and exceptions are separate kinds in the list. Set onlineMeeting to get a Google Meet link, or onlineMeetingService for Zoom or Webex.

Scopes Workwae asks for

New consent asks for the granular events, calendar list (read-only) and free/busy scopes. Grants that already hold the full calendar scope keep working. Calendar management on Google stores name, description, time zone and color.

SDK

Create an event with a video link.

The same call works on Google, Microsoft 365 and CalDAV accounts. Shapes match the TypeScript (@workwae/sdk) and Python (workwae) SDKs.

calendar.tscalendar.py
const event = await workwae.calendarEvents.create({
  accountId,
  calendarId,
  subject: "Weekly sync",
  start: { dateTime: "2026-11-02T10:00:00", timeZone: "Europe/Berlin" },
  end: { dateTime: "2026-11-02T10:30:00", timeZone: "Europe/Berlin" },
  attendees: [{ name: "Ada", address: "ada@example.com" }],
  recurrence: ["RRULE:FREQ=WEEKLY;BYDAY=MO;COUNT=10"],
  onlineMeeting: true, // a Google Meet link
});
from datetime import datetime

event = workwae.calendar_events.create(
    account_id=account_id,
    calendar_id=calendar_id,
    subject="Weekly sync",
    start={"date_time": datetime(2026, 11, 2, 10, 0), "time_zone": "Europe/Berlin"},
    end={"date_time": datetime(2026, 11, 2, 10, 30), "time_zone": "Europe/Berlin"},
    attendees=[{"name": "Ada", "address": "ada@example.com"}],
    recurrence=["RRULE:FREQ=WEEKLY;BYDAY=MO;COUNT=10"],
    online_meeting=True,  # a Google Meet link
)
FAQ

Questions teams ask.

Does Google Calendar need its own connection?

No. It is part of the same Google account. Calendar sync runs when the account’s calendarEnabled setting is on and the grant holds the Calendar scopes. See Gmail and Google Workspace for the consent side.

Does a webhook arrive the moment an event changes?

For calendars Workwae can watch, a change notification from Google wakes the sync and your webhook follows. Calendars without a channel, such as read-only ones, update on the backstop poll.

Can I create and delete calendars, not just events?

Yes, with the calendars routes. The primary calendar can be renamed but not deleted. Writing to a calendar the account cannot edit answers calendar_read_only.

What about Google contacts?

Contacts use the People API and are polled; Google offers no contact push. The provider matrix lists push and polling per service.

Early access

Stop renewing Calendar watch channels yourself.

Tell us how many Google calendars you need to sync.