CalDAV vs ICS Subscribed URL vs OAuth Sync on iOS
When a calendar on your iPhone refuses to let you edit an event, misses a Google Meet button, or lags behind by half a day, the culprit is almost always the sync protocol rather than the calendar app. iOS supports three distinct calendar transport layers: native provider OAuth APIs (Google Calendar API & Microsoft Graph), CalDAV (RFC 4791, used by iCloud, Fastmail, and Nextcloud), and subscribed `.ics` URLs (RFC 5545 `webcal://` or `https://` feeds). Use native OAuth or CalDAV whenever you need two-way editing and RSVPs, and reserve ICS URLs strictly for read-only broadcasts like school terms, sports fixtures, or public holidays. Arte Soft develops Cloud Calendars and publishes this comparison.
Protocol-by-Protocol Technical Matrix
| Technical Capability | Native OAuth API (Google / Microsoft) | CalDAV (RFC 4791 / iCloud) | Subscribed ICS URL (.ics / webcal) |
|---|---|---|---|
| Read vs write direction | Full two-way read, create, move, resize & delete | Full two-way read, create, move, resize & delete (per ACL) | Strictly one-way read-only feed (cannot edit back to host) |
| Update & refresh latency | Near-instant via OAuth sync tokens & webhooks | Push on iCloud; configurable Fetch (15–60 min) or manual pull on standard CalDAV | Minutes to hours on iOS; up to 12–24 hours if subscribed via Google/Outlook servers |
| Authentication & revocation | Scoped OAuth 2.0 token (revokable per app without password change) | System Apple ID (iCloud) or username + app-specific password | Unauthenticated public link or secret bearer token embedded in URL |
| Attendee RSVPs (Accept / Maybe / Decline) | Full attendee status & organizer updates | Supported via CalDAV Scheduling Extensions (RFC 6638) | Read-only snapshot; cannot send attendee replies through feed |
| Native conferencing link generation | Creates Google Meet (Google API) & Microsoft Teams (Graph API) links | Preserves URLs in location/notes; does not mint Meet/Teams rooms natively | Displays static join links already written in event description |
| Color & per-calendar metadata | Syncs account calendar list, titles, colors & access roles | Syncs CalDAV collection display name and color properties | Single feed-level name and locally chosen color |
| Payload efficiency on large histories | Incremental delta sync (fetches only changed events) | ETag / sync-token collection diffs per modified `.ics` resource | Re-downloads the entire monolithic `.ics` file on every refresh |
How Cloud Calendars and iOS Handle All Three Protocols
Understanding where each protocol lives on iPhone saves hours of troubleshooting. Apple’s system Settings (`Settings > Apps > Calendar > Calendar Accounts`) hosts iCloud, generic CalDAV accounts, Exchange ActiveSync, and subscribed `.ics` URLs, exposing them to apps you authorize via EventKit.
Cloud Calendars reads all of those EventKit calendars—including iCloud, Fastmail/Nextcloud CalDAV, and read-only `.ics` subscriptions—and adds direct Sign in with Google OAuth (Free) and Sign in with Microsoft OAuth (Premium) so Google Meet and Microsoft Teams metadata work first-class without relying on iOS Mail’s legacy Google CalDAV wrapper.
Account Sync, Protocol & Platform Support in Practice
| Calendar Source | Best Protocol on iPhone | How Cloud Calendars Connects | Plan Required |
|---|---|---|---|
| Google Calendar / Workspace | Native Google OAuth 2.0 API | Direct Sign in with Google inside Cloud Calendars (+ Meet links) | Free ($0) |
| Microsoft 365 / Outlook.com | Microsoft OAuth (Graph) or iOS Exchange | Sign in with Microsoft (Premium) or via iOS Calendar Accounts | Premium ($49.99/yr) or Free via iOS store |
| Apple iCloud Calendar | Apple EventKit / iCloud Push (CalDAV-based) | Automatic once Full Access to Calendars is granted on iOS | Free ($0) |
| Fastmail, Nextcloud, Synology, Mailbox.org | CalDAV (RFC 4791) | Add CalDAV account in iOS Settings > Calendar Accounts; read via EventKit | Free ($0) |
| School terms, Canvas/Blackboard, sports & shift feeds | Subscribed ICS URL (`https://` or `webcal://`) | Subscribe in iOS Calendar Accounts (not static file import); read-only in app | Free ($0) |
| One-time archive backup or migration | Static `.ics` file import/export | Import into a target writable calendar; never updates automatically afterward | Free ($0) |
Subscribed ICS URL vs Imported ICS File: Avoiding the Dead-Snapshot Trap
Two actions share the `.ics` extension and confuse millions of users every semester: subscribing to an ICS URL versus importing a downloaded `.ics` file. Importing copies events once into your personal calendar; when the university moves an exam or an airline changes a departure next week, your imported copy stays frozen at the old time—and you cannot bulk-delete 200 imported events with one tap.
Subscribing to the URL keeps the feed isolated in its own read-only calendar layer that updates when the publisher edits the source, and lets you hide or delete the entire feed cleanly in five seconds.
Scenario Guide: Choosing Between OAuth, CalDAV, ICS Subscribe & ICS Import
| User Scenario | Protocol to Avoid | Recommended Protocol | Why It Wins |
|---|---|---|---|
| Editing Google Calendar + creating Google Meet links on iPhone | Secret ICS URL (read-only) | Native Google OAuth in Cloud Calendars | Instant two-way edits, Meet links & revokable OAuth token |
| Self-hosted Nextcloud or Fastmail calendar on iPhone | Exported static `.ics` files | CalDAV in iOS Calendar Accounts + Cloud Calendars | Standard RFC 4791 two-way sync without vendor lock-in |
| Child’s school athletics, TripIt, or Canvas assignment feed | Importing downloaded `.ics` into main calendar | iOS Subscribed ICS URL (`Add Subscription Calendar`) | Auto-updates schedule changes & toggles off cleanly |
| Subscribing to an ICS feed so it updates fast on iPhone | Subscribing via Google Calendar web (12–24h lag) | Subscribing directly on iPhone in iOS Settings | iOS polls the HTTPS `.ics` endpoint directly on device |
| Sharing one editable calendar with an iPhone + Android partner | Public ICS URL (neither partner can edit via URL) | Shared Google Calendar via OAuth on both phones | Real-time two-way write permissions on iOS & Android |
| Revoking access after sharing a private schedule | Secret ICS address (must reset token for everyone) | Named-user OAuth / ACL sharing (or Cloud Calendars roles) | Remove one person’s Reader/Writer access individually |
Why Google Calendar Subscribed ICS Feeds Lag Behind iPhone Subscriptions
If you paste a school or shift `.ics` link into Google Calendar on the web ("Add calendar > From URL") and then sync Google to your iPhone, Google’s backend crawlers fetch that external URL on an unconfigurable schedule that routinely takes 12 to 24 hours.
Subscribing to that exact same `.ics` URL directly in iPhone `Settings > Apps > Calendar > Calendar Accounts > Add Account > Other > Add Subscription Calendar` lets your iPhone fetch the feed directly from the source server, bypassing Google’s crawler queue while displaying right beside your Google and iCloud events in Cloud Calendars.
Security Hygiene for Secret ICS Addresses
Google’s "Secret address in iCalendar format" and Outlook’s published ICS links bypass login screens intentionally so dumb feed readers can fetch them. Anyone who sees that URL in a forwarded email, Slack channel, or browser history can read every event on that calendar until you click "Reset" in provider settings.
Prefer OAuth, CalDAV, or role-based calendar sharing (`Reader` / `Writer`) whenever events contain private addresses, client names, or medical appointments.
What it looks like
What to do
- Use Sign in with Google (Free) or Sign in with Microsoft (Premium) in Cloud Calendars whenever you need two-way editing and conferencing links.
- Configure iCloud and third-party CalDAV servers (Fastmail, Nextcloud) once in iOS Settings > Apps > Calendar > Calendar Accounts.
- For read-only `.ics` links, always choose Add Subscription Calendar in iOS Settings rather than tapping a downloaded `.ics` file to import static copies.
- Subscribe to time-sensitive ICS feeds directly on iOS rather than routing them through Google Calendar web’s slow URL crawler.
- Audit and reset any "Secret address in iCalendar format" in Google Calendar settings if you ever pasted it into a shared chat or former tool.
Questions
- Why can’t I edit or delete an event on a subscribed ICS calendar on my iPhone?
- An ICS subscription (`webcal://` or `.ics` URL) is an HTTP GET feed defined by RFC 5545—the server publishes a read-only file and accepts no write-back requests. To edit events two-way, connect the source account via OAuth or CalDAV.
- What is the difference between CalDAV and OAuth?
- CalDAV (RFC 4791) is an open WebDAV wire protocol for syncing calendar items, whereas OAuth 2.0 is an authorization framework. Google and Microsoft pair OAuth 2.0 tokens with their modern REST APIs (Google Calendar API and Microsoft Graph), while Fastmail and Nextcloud use CalDAV for calendar transport.
- Does Cloud Calendars support both CalDAV and ICS subscriptions?
- Yes. Add any CalDAV account or ICS URL subscription in iOS Settings > Apps > Calendar > Calendar Accounts and grant Cloud Calendars Full Access; CalDAV calendars work read/write and ICS feeds appear read-only in the Free plan.




