Summary
Connect Google and iCloud in Keeper.sh and send busy-block copies of the Google calendar onto the iCloud calendar the phone or family calendar actually uses. One tick for this leftover. Copies are real iCloud events, kept corrected as Google changes. iCloud stays on the timer, because Apple publishes no way for a calendar tool to be told an event changed.
Work or a second personal week lives in Google; those hours must exist on iCloud to sync Google Calendar with iCloud, not merely next to it in Calendar.app. If the job is Google visible inside Calendar.app, /blog/how-to-add-google-calendar-to-iphone covers Add Account → Google, which is the wrong leftover for writing into iCloud. If the Google account is already added and now broken, see /blog/google-calendar-not-syncing-with-iphone. If Apple hours must exist on Google, see /blog/how-to-sync-apple-calendar-to-google-calendar. For a named Google share, see /blog/how-to-share-google-calendar.
Settings Add Account → Google overlays Google into Calendar.app — those events never become iCloud events. Add Subscription Calendar / File > New Calendar Subscription is a pull-only ICS. Google Export then Calendar File > Import is a snapshot. iCloud Public Calendar plus Google From URL is the other direction.
Keeper.sh writes private copies (placeholder title from the source calendar) onto the signed-in iCloud calendar that stayed empty. Google notifies Keeper.sh on Pro so a Google change is seen quickly; writing into iCloud still waits on the CalDAV timer, because Apple publishes no way for a calendar tool to be told an event changed.
The rest of this page shows why overlay, subscribe, and export/import fail that leftover job, then the numbered Keeper.sh setup.
Adding Google to Apple Calendar does not write into iCloud
Work hours live only on Google Calendar. A partner looking at the family iCloud calendar, or an iPhone that only has the Apple ID, still sees that hour as free. Overlay does not fix this: Google events inside Calendar.app under the Google account are the wrong leftover. They are not iCloud events.
An Apple Stack Exchange thread from 29 Apr 2017 (113,829 views; fetched 30 Aug 2026) records the same failure: a colleague shared a Google calendar; it appeared in Google Calendar; they wanted it on iCloud calendars. Pasting the secret or public iCal URL into Apple Calendar failed with “A calendar wasn't found.” The top answers tell them to tick the calendar on Google’s Calendar sync page, or add the Google account in System Settings → Internet Accounts so it appears under the Google account in Apple Calendar. That is overlay. It does not write the events onto an iCloud calendar.
Apple documents the iPhone path in Change your Calendar settings on iPhone (iOS 26, fetched 30 Aug 2026): “Go to the Settings app on your iPhone.” “Tap Apps, then tap Calendar.” “Tap Calendar Accounts, then tap Add Account.” “Tap a service (iCloud, Microsoft Exchange, or Google, for example), then sign in.” Google’s Add Google Calendar events to Apple Calendar (fetched 30 Aug 2026) still prints the older Settings → Calendar → Accounts → Add account → Google path and says: “You can sync Google Calendar with the Calendar app that comes on your iPhone or iPad.” And: “Emails, contacts, and calendar events will now sync directly with your Google Account. To sync only your calendar, turn off the other services.” And: “To sync with an existing account, tap the account and turn on Calendars.”
On Mac, the same Google article (Computer tab, fetched 30 Aug 2026) says: “You can add Google Calendar events to your Apple calendar on your Mac, iPhone, or iPad.” And: “On the Accounts tab, use "Refresh Calendars" to choose how often you want Apple Calendar and Google Calendar to sync.” Apple and Google do not publish what those menu intervals mean in minutes. Google’s Calendar sync page can also choose which Google calendars overlay into Calendar.app. That still only affects the Google account view. It is not iCloud.
Add Account → Google shows Google events inside Calendar.app under the Google account; it does not write Google events onto an iCloud calendar. If overlay-on-the-phone was the whole job, /blog/how-to-add-google-calendar-to-iphone and they can stop.
A subscribed Google ICS is pull-only
On iPhone, Set up multiple calendars on iPhone (iOS 26, fetched 30 Aug 2026) says: “Subscribe to an external, read-only calendar: Tap Add Subscription Calendar, enter the URL of the .ics file you want to subscribe to (and any other required server information), then tap Find.” And: “You can also subscribe to an iCalendar (.ics) calendar by tapping a link to it.”
On Mac, Subscribe to calendars on Mac (macOS Tahoe 26, fetched 30 Aug 2026) says: “The events shown in a subscription calendar are controlled by the provider. You can’t edit calendars you are subscribed to (for example, the Holidays calendar).” And: “Choose File > New Calendar Subscription.” And: “Enter the calendar’s web address, then click Subscribe.” And: “Click the Location pop-up menu, then choose an account for the subscription.” And: “If you choose your iCloud account, the calendar is available on all your computers and devices that are set up with iCloud.” And: “Click the Auto-refresh pop-up menu, then choose how often to update the calendar.” Apple publishes no minute values for Auto-refresh. Location = iCloud still leaves the subscription read-only: “You can’t edit calendars you are subscribed to.”
The URL they paste comes from Google. Sync your calendar with computer programs (fetched 30 Aug 2026) says: “If your calendar application doesn't have a full sync option, or if you want a read-only view of one calendar, you can sync your calendar to the application using a link to iCal.” And: “In the “Secret address in iCal format” section, copy the link.” And: “Important: Only you should know the Secret Address for your calendar. Do not share this address with other people.” For a public calendar, Create & manage a public Google calendar (fetched 30 Aug 2026) says: “To share a calendar that can be accessed in iOS: Click Integrate calendar copy the link in "Public address in iCal format." The iCal address only works if the calendar is public.” And: “If you don't want other people to read the details of your events, select See only free/busy (hide details).”
/docs/accounts-and-calendars: “A calendar subscribed from a link is read-only, so it can send events but never receive them.”
Add Subscription Calendar / New Calendar Subscription is a read-only overlay of a Google ICS. Putting Location on iCloud still does not make those events theirs. If overlay was the whole job, /blog/how-to-add-google-calendar-to-iphone. It does not put Google hours on iCloud as copies they control.
Exporting Google and importing an .ics is a snapshot
People are told to import Google Calendar to iCloud by saving a .ics and opening it in Calendar. That path copies once and never updates.
Export events from your Google Calendar (fetched 30 Aug 2026) says: “You can export a copy of your events from Google Calendar to your computer.” And: “The exported file is an .ics file, which you can import into other calendar apps.” And: “You can’t export from the Google Calendar app. You can only export on a computer from Google Calendar.”
Import or export calendars on Mac (macOS Tahoe 26, fetched 30 Aug 2026) says: “Choose File > Import, select the exported calendar file, then click Import.” And: “Select the calendar to add the events to, then click OK.” Apple does not say the file keeps updating. There is no Auto-refresh on Import.
Google’s general import rule is the same (Import events to Google Calendar, fetched 30 Aug 2026): “Tip: Imported events don't stay in sync between your 2 accounts. If you want your calendars to sync, share your calendar with the other account.” That share is a permission grant on one Google calendar. It is not a Google → iCloud write.
Export/import copies Google events onto a chosen iCloud (or On My Mac) calendar once and never updates them again.
Put Google hours on iCloud with Keeper.sh
Connect Google and iCloud in Keeper.sh. /docs/accounts-and-calendars: “Connecting copies nothing by itself. Events only move once you send them to another calendar.”
- Sign in to Keeper.sh. Connect Google. Connecting copies nothing.
- Open Connect Apple Calendar. Generate an app-specific password at account.apple.com (label it). Paste it into the connect field. Sign in to apps with your Apple Account using app-specific passwords (Published Date: October 08, 2025; fetched 30 Aug 2026): “App-specific passwords allow you to sign in to your Apple Account in apps made by developers other than Apple.” And: “To generate and use app-specific passwords, your Apple Account must be protected with two-factor authentication.” And: “Sign in to your Apple Account on account.apple.com.” And: “In the Sign-In and Security section, select App-Specific Passwords.” And: “Select Generate an app-specific password, then follow the steps on your screen.” And: “Enter or paste the app-specific password into the password field of the app when signing in to your Apple Account.” And: “Any time you change or reset your primary Apple Account password, all of your app-specific passwords are revoked automatically to protect the security of your account. You need to generate new app-specific passwords for any apps that you want to continue using.” /docs/accounts-and-calendars: “iCloud and Fastmail — an app-specific password, made in their settings. It is a stand-in password that only unlocks your calendar, so your real one stays with Apple or Fastmail.” One Apple ID. That signed-in iCloud calendar can send and receive. Two accounts is the Free allowance. If a working Keeper.sh iCloud connection later goes quiet after an Apple password change, generate a new app-specific password and paste it into Connect Apple Calendar. That is Apple’s behaviour, not a Keeper.sh defect.
- Open the Google calendar page. Under Send Events to Calendars, tick the iCloud calendar. One connection, Google → iCloud. Copies are real iCloud events. /docs/sending-events-to-another-calendar: “Each calendar you tick becomes one connection. Events are copied into it, one way, and the copies are kept corrected as the originals change.”
- If they also need iCloud hours on Google, open the iCloud calendar page and tick the Google calendar. Second connection. That is two of Free’s three connections. Same Apple ID, not two Apple IDs. The leftover the other way is covered at /blog/how-to-sync-apple-calendar-to-google-calendar. /docs/sending-events-to-another-calendar: “Events flow into the calendars you ticked and never back. For a change in either calendar to reach the other, set up two connections, one from each calendar's page.”
- Leave the privacy defaults. /docs/what-a-copied-event-shows: “A copied event shows the name of the calendar it came from in place of the real title, and no description or location.” Guest lists are never copied. Description and location toggles are Pro.
- Confirm on iCloud / Calendar.app under the iCloud calendar (not under the Google account row): a real event, named after the source calendar, no notes, no location, no guest list. Wait for the next write. iCloud stays on the timer on both plans.
If nothing arrives, see /guides/event-has-not-arrived. If two of something appear, see /guides/same-event-appears-twice. A subscribed calendar that looks out of date is covered at /guides/subscribed-calendar-out-of-date. Untick the calendar in Send Events to Calendars and new events stop being copied. Events already copied stay where they are. A password or admin revoke means generating a new app-specific password and re-authenticating at /docs/accounts-and-calendars. Work and personal leftover: /recipes/sync-work-and-personal-calendars. Titles on one side only: /recipes/keep-personal-details-out-of-work.
Keeper.sh reads sources every minute on every plan. Free destinations write every 30 minutes. Pro writes every minute, and Google and Outlook notify Keeper.sh so a Google change is seen quickly. /docs/plans-and-limits: “On Pro, Google Calendar and Outlook notify Keeper.sh the moment an event changes, so the copy lands within seconds.” Keeper.sh does not notify them. iCloud stays on the timer on both plans (/docs/plans-and-limits: “iCloud, Fastmail and other CalDAV calendars are checked on a timer on either plan, because Apple publishes no way for a calendar tool to be told an event changed.”). Google-as-source on Pro can notify Keeper.sh so the change is seen quickly; the write into iCloud still waits on the timer. Guest lists are never copied. Free includes 2 accounts, 3 connections, and 1 shareable link. /docs/plans-and-limits: “Pro is $5 a month, or $45 a year paid annually.”
A pasted share, ICS, or subscribe link is pull-only — never a destination. If they connected a URL instead of signing in to Google or iCloud, they can send from it, not into it. Signed-in iCloud (Apple ID and an app-specific password) is a source and a destination; one Apple ID, two mappings if both ways.
Why a Keeper.sh copy instead of another account or a feed
Add Account → Google overlaid Google into Calendar.app, and the events never became iCloud events — Keeper.sh writes a private copy of Google onto the signed-in iCloud calendar that stayed empty.
Add Subscription Calendar / New Calendar Subscription was a read-only feed, even with Location set to iCloud — copies are real iCloud events they own, kept corrected as the originals change.
Google Export + File > Import was a snapshot — copies keep correcting. Google notifies Keeper.sh on Pro so a Google change is seen while the phone is away; iCloud stays on the timer because Apple publishes no push.