Why is my Apple Calendar not syncing?
Apple Calendar syncing failures come down to three distinct causes, and checking them in this order takes under a minute. First: iCloud Calendar itself is off, signed out, or the account is out of storage, which stops sync at the source. Second: the calendar is a subscribed ICS link rather than a real iCloud calendar — subscriptions are read-only and refresh on whatever schedule the subscriber's app decides, not on demand. Third: the events land fine in Apple Calendar, but they need to reach a calendar in a different account entirely, such as Google or Outlook, and moving events across providers into another account is not something iCloud was built to do.
A quick self-test tells the three apart. Events missing on one Apple device but present at icloud.com is case 1, an account-level problem. A calendar that came from a link someone sent, with no way to edit anything on it, is case 2, a subscription. Events that show up correctly in Apple Calendar but never appear on a Google or Outlook calendar is case 3.
Cases 1 and 2 are fixable by the reader in a few minutes. Case 3 is structural: iCloud has no built-in way to write events into a calendar in a different account, so no setting fixes it.
Apple Calendar not syncing with iPhone: what to check first
Check the account layer first: it's the cheapest thing to check and it gates everything below it. Confirm the same Apple Account is signed in on every device involved — iPhone, iPad, Mac — and that Calendars is switched on for iCloud in each device's account settings. A device signed into a different Apple Account, or one with the Calendars toggle off for iCloud, will never receive anything, and nothing about that looks different from a genuine sync failure. While you're there, check iCloud storage in the Apple Account settings; a full account stops new data syncing, calendar changes included.
When Apple Calendar is not syncing with your iPhone, treat icloud.com as the source of truth. Open Calendar there and look for the missing event. If it's present on icloud.com but missing on a device, the fault is local to that device — most often the Calendars toggle for iCloud, or the calendar hidden in the calendar list. If it's absent on icloud.com too, the event was never actually saved to an iCloud calendar, and no amount of waiting on the phone will fix that.
Next, check where the event actually landed: a local "On My iPhone" or "On My Mac" calendar never leaves that device. Open the event and read the calendar line on it to see which calendar it's filed under. To stop this recurring, set an iCloud calendar as the Default Calendar in the Calendar settings, so new events land on iCloud rather than on the device. While you're in the calendar list, confirm the calendar's own checkbox is ticked — an unchecked calendar hides its events completely, and a hidden calendar looks identical to a missing one. iCloud Calendar not syncing is sometimes only that: a calendar unticked in the list, not a broken connection.
Apple's own fixes for a stuck sync are simple: on a Mac, use the View menu to refresh calendars, and if that doesn't clear it, sign out of icloud.com and back in. One caveat when testing any of this — the iCloud Birthdays calendar only updates about once an hour, so it's a poor calendar to use as your sync test.
Why won't a subscribed calendar in Apple Calendar update?
A subscribed calendar is a read-only copy of someone else's published ICS file, not a calendar you own, and that's the root of both symptoms readers report: it stays stale, and it refuses edits. Neither is a bug.
The refresh belongs to the app reading the link — here, Apple Calendar. The person who published the calendar has no lever to make your copy update sooner, so anything you can change is on your side, not theirs. When Apple Calendar is not syncing a subscribed link, the setting worth checking is on your device.
On a Mac, open Calendar's settings for the subscribed calendar, click the Auto-refresh pop-up menu, and choose how often to update the calendar. Apple doesn't publish what the actual interval choices are, so there's no number to quote here — only that the setting exists and it's yours to change.
For a sense of scale, Microsoft is explicit about its own subscribed calendars: Outlook.com updates roughly every 3 hours and can take more than 24; Outlook on the web for work or school accounts runs closer to every 6 hours. Apple doesn't publish comparable figures for its own refresh interval. What Microsoft's numbers do show is the order of magnitude subscription refresh works at generally — hours, not seconds.
That's the ceiling to know going in: if a calendar has to be current within minutes, a subscribed link is the wrong mechanism for the job, full stop. What replaces it is covered next.
Why don't my iCloud events show up in Google or Outlook?
Why don't my iCloud events show up in Google or Outlook? iCloud syncs within one account — Apple gives it no mechanism for writing an event into a calendar owned by Google or Microsoft. There's no setting buried in iCloud that changes this, because the capability doesn't exist there at all; it has to come from something sitting outside iCloud.
That something works one of two ways, and they're easy to conflate. Subscribing to a shared iCal or ICS feed makes the recipient's calendar app responsible for re-reading the link on its own schedule, as covered above. A connection is different: it writes real, native events into the destination calendar into the calendar itself. Once an event lands in Google or Outlook this way, it's an ordinary entry in that account, and no subscription interval governs it.
Keeper.sh is what makes a connection, rather than a subscription, out of an iCloud calendar. It pulls from Google, Outlook, iCloud, Fastmail, CalDAV servers, and remote iCal/ICS links, and pushes into one or many calendars — so an iCloud calendar can write real events into a Google or Outlook calendar you own.
Be clear-eyed about the speed, though, because "iCloud calendar not syncing" complaints are often really about lag, not absence. Apple gives outside tools no way to be told an event changed, so Keeper.sh checks iCloud on a timer instead, on every plan. Keeper.sh pulls from every source once a minute, and on Pro the destination push is enqueued immediately after that pull — the floor is the two cron ticks, minutes rather than seconds. On Free, destination pushes only run every 30 minutes. Keeper.sh's realtime push channels exist for Google and Outlook sources, not for iCloud, so this is minutes on Pro, not seconds, whenever iCloud is where the event started.
Free covers 2 accounts, 3 connections, and 1 shareable link. Pro is $5/month or $42/year. Self-hosting is AGPL-3.0 and runs at Pro-level limits.
Why does my iCloud calendar connection keep breaking?
An iCloud calendar connection breaks most often because the app authenticating to it was using an app-specific password, and that password was silently revoked. Any third-party tool that connects to an iCloud calendar — Keeper.sh included — has to authenticate with an app-specific password rather than your actual Apple Account password, and Apple states plainly that changing or resetting your primary Apple Account password revokes every app-specific password automatically. Once that happens, Apple's own documentation says the app stays signed out until you generate a new password and sign in again (support.apple.com/en-us/102654). Apple also caps active app-specific passwords at 25, so a long-running account with several connected tools can hit that ceiling too.
On the syncing tool's side, this doesn't look like an error message pointing at the cause. The account simply goes quiet, which reads as "iCloud calendar not syncing" rather than "credential revoked." Apple Calendar not syncing after a password change is this same mechanism.
The fix is to generate a fresh app-specific password from the Apple Account page and re-enter it wherever the connection lives. In Keeper.sh that's the Connect iCloud flow — the screen headed Connect Apple Calendar walks through Apple ID, App-Specific Passwords, generate, and paste the new password in. This is Apple's behavior, not a defect in whichever tool you're using; it applies the same way to any app authenticating to iCloud with this method.
One thing worth knowing before you reconnect: removing a connection stops new copies from being made, but it leaves the copies already written in place. So reconnecting after a long outage doesn't duplicate the events it already wrote — each copy carries a deterministic identity tied to its source event — while anything deleted from the source during the outage gets cleaned up on the next pass.