Why Google Calendar takes up to 24 hours to update subscribed calendars
June 15, 2026 · 5 min read
You subscribed to a calendar by URL — a client’s published Outlook calendar, a team schedule, a sports league feed — and new events take a day to show up. Nothing is misconfigured. This is how ICS subscriptions work, and understanding the mechanism explains both why no setting fixes it and what to use when a day-old snapshot isn’t good enough.
What an ICS subscription actually is
An ICS feed is just a text file at a URL. The publishing side regenerates the file when events change; the subscribing side downloads it from time to time and replaces its local copy. There’s no connection between the two systems beyond “a file gets fetched.” No notifications, no push, no negotiation about freshness.
That fetch happens on the subscriber’s schedule. For Google Calendar, external ICS feeds are polled by Google’s servers roughly every 12 to 24 hours per feed — the interval varies and you don’t get to choose it. Outlook does the same on its own cycle, usually every few hours. The publisher can’t speed it up either: when Outlook “publishes” a calendar, it’s just serving that same file and waiting to be fetched.
Why there’s no refresh button
People search for the force-refresh trick for years; the honest answer is there isn’t one. Google fetches feeds server-side, in bulk, for everyone subscribed — your reload of the browser tab doesn’t trigger a fetch, and neither does toggling the calendar. The only hard reset is unsubscribing and re-adding the feed, which forces one immediate fetch and then puts you back on the same 12–24 hour cycle. (One more quirk: deleting and re-adding sometimes leaves cached copies of the old feed for a while, which is how you end up with ghost events.)
The engineering reason is mundane: millions of subscribed feeds, most of which rarely change, fetched politely so as not to hammer other people’s servers. For its designed purpose — public holiday calendars, sports schedules, anything that changes weekly — daily polling is plenty. The mismatch only appears when people use ICS as a sync mechanism for calendars where same-day changes matter.
The failure mode that actually hurts
The lag isn’t dangerous when you know about it. It’s dangerous because the calendar looks current. A client books a 2pm slot this morning; your subscribed copy won’t learn about it until tonight’s fetch; meanwhile your booking page, your colleagues, and you all see 2pm as free. The double-booking happens in the gap — and unlike an error message, a stale feed gives you no signal that you’re looking at yesterday.
ICS subscriptions are also read-only and typically excluded from free/busy lookups, so even a fresh feed doesn’t block your availability in other people’s scheduling tools. Stale and invisible is a rough combination for anyone whose time gets booked by others.
What updates in seconds instead
Real-time sync works on a different mechanism entirely: push notifications. Google and Microsoft both offer webhook APIs — when an event changes, the provider notifies the sync service within seconds, and the service writes the change to the other calendar as a real, native event. No polling cycle to wait out, and because the mirrored events are real, availability tools see them.
The trade-off is that push infrastructure is genuinely harder to operate: notification channels expire after days and must be renewed, sync tokens get invalidated and require full re-syncs, and a careful engine re-checks calendars on a schedule anyway, as a safety net for anything push missed. (We’ve written about what happens when sync engines skip that work.) That operational burden is the actual product difference between “free but daily” and “paid but instant” — not a magic faster ICS.
Bottom line
Use ICS subscriptions for calendars where a day of lag is irrelevant. For calendars that other people book against — client calendars, anything tied to your availability — you need real events synced in real time.
twocal syncs Google, Microsoft, and Apple calendars in seconds via push, with an ICS option for feeds that only support it, and publishes its reliability on a live public dashboard. $19/month flat for up to 15 calendars, 14 days free.
Tired of sync that drops events?
twocal does one thing — keeps your calendars in sync, reliably. 14 days free, no credit card.