Add your Google Calendar
Subscribe to its secret iCal address. No Google sign-in, read-only, refreshed every half hour.
Dawn reads a Google Calendar through the iCal address Google already publishes for it. There is no Google sign-in and no permission screen: you copy one URL, paste it into Dawn, and that calendar's events sit alongside your own in the grid, the dashboard and the briefing.
That is deliberate. The alternative is the Google Calendar API, which means an OAuth client per provider and a store of refresh tokens, for a feature that would then only work with Google. One URL works with Outlook, Apple, Fastmail and anything else that publishes a calendar.
A subscribed calendar is a mirror, not a copy you own. The feed stays authoritative and its events cannot be edited here. See what a subscription is below.
1. Copy the address out of Google
Do this on a computer. The setting does not exist in Google's mobile apps.
- Open Google Calendar in a browser.
- In the left column under My calendars, hover the calendar you want, press the three dots, and choose Settings and sharing.
- Scroll down to Integrate calendar.
- Copy Secret address in iCal format. It ends in
/basic.ics.
Secret is meant literally. Anyone holding that URL can read that whole calendar, without signing in to anything, so treat it as a password. If it ever gets out, press Reset beside it in Google, which kills the old address, and subscribe again in Dawn with the new one.
Each calendar has an address of its own. Bringing in three Google calendars means doing this three times.
2. Paste it into Dawn
- Open Calendar and press Calendars at the top right. The side panel opens.
- Press Subscribe, beside the blue Calendar button.
- Paste the address into Calendar feed URL.
webcal://links work too. - Name is optional: left blank, the calendar keeps the name the feed publishes. Pick a Colour while you are here, so its events read as somebody else's at a glance.
- Press Subscribe.
Dawn fetches and reads the feed before it creates anything, so a URL that is wrong, unreachable or not a calendar leaves nothing behind to tidy up: you get the reason, and no empty calendar.
What arrives is 90 days of history and 400 days ahead, with repeating events expanded into the occurrences they actually produce, rather than a year of standups showing as a single Tuesday.
On iPhone: Calendars → + → Subscribe to a feed. Through Claude: subscribe to this calendar, then tell me what is on it, with the URL. All three go through the same code.
What a subscription is
The feed is authoritative, and everything else follows from that:
- Its events cannot be created, changed, deleted or dragged in Dawn. The next sync would overwrite whatever you typed anyway, so the grid does not open an editor for one.
- It cannot be your default calendar, because nothing can be created on it.
- It refreshes every half hour. Sync now, on the calendar in the Calendars panel, pulls it immediately.
- Renaming it, recolouring it and hiding it are yours. Those decide how it is drawn here, not what it holds. The checkbox beside it in the Calendars panel takes it off the grid without unsubscribing.
- Its events count as commitments. They are in the briefing and in everything else that reads your week, which is the point of bringing them in.
Unsubscribing is on the calendar in the same panel. It removes the mirrored events from Dawn, changes nothing in Google, and subscribing again brings them back.
If the times look wrong
Open the calendar in the Calendars panel and set Show times in to the zone that calendar is kept in. It defaults to the zone the feed declares, and changing it makes the next sync re-read the feed from scratch rather than trusting the copy it already has.
Use that field when one subscribed calendar is out by a fixed number of hours. When everything is out, it is your own timezone instead.
If it will not subscribe
The message says which of these it is:
- "That URL did not return a calendar." Almost always the address of the
Google Calendar page you were looking at, rather than the iCal one. The right
one ends in
.ics. - "refused the request (401)" or (403). That address wants a login. Use the secret iCal address, not a link that only works while you are signed in to Google.
- "is a private address, so it cannot be a feed." Dawn resolves the host and refuses anything on a private network, on every redirect as well as the address you typed. A calendar published only inside your own network cannot be reached from the server.
- "That feed is already subscribed as ..." The same URL is already on the account, under the name in the message.
- A very large calendar. A feed over 8 MB is refused outright, and one with more entries than a calendar holds is cut short and says so, rather than quietly losing the rest.
When a later refresh fails, the reason is kept on the calendar itself: open it in the Calendars panel and it is written under the feed's host, beside when it last synced.
Nothing new after a change in Google? Dawn checks every half hour, but Google regenerates the file behind that secret address on its own schedule, and it can lag well behind the calendar itself. Sync now pulls again immediately; it cannot make Google republish sooner.
The other direction
To see a Dawn calendar inside Google, tick Publish iCal feed on it in the Calendars panel. A subscription URL appears under the form. In Google Calendar that goes in Other calendars → + → From URL.
That URL is a credential in exactly the way Google's is, so hand it out with the same care. Google refreshes a calendar added from a URL on its own schedule, which is not quick.