
Apple’s iCloud Calendar and Google Calendar don’t natively sync. If you use iCloud for personal events and Google Calendar for work, you have to manage two separate calendars with no connection. Here’s how to fix that.
Why iCloud and Google Calendar don’t sync natively
Apple and Google both offer ways to view external calendars. You can add a Google account to the iOS Calendar app, or subscribe to an iCloud calendar URL in Google Calendar. But these aren’t real sync.
iOS Calendar app + Google account: Shows your Google events on your iPhone, but events you create in iOS Calendar (on iCloud) don’t appear in Google Calendar.
Google Calendar + iCloud ICS subscription: Read-only, refreshes every 12–24 hours, no privacy controls.
Neither gives you two-way sync between the two calendars.
Option 1: Use Hetk for real-time sync
Hetk connects to iCloud via CalDAV (the standard protocol Apple uses for calendaring) and to Google Calendar via the Google Calendar API. Events sync automatically between them without requiring you to do anything after initial setup.
Setup
- Go to app.hetk.io and sign in with your Google account
- Add your Apple iCloud account using an app-specific password (generated at appleid.apple.com)

To generate an app-specific password, go to appleid.apple.com, sign in, navigate to Security > App-Specific Passwords, and generate one for Hetk. This creates a unique, random password that only works for Hetk and iCloud calendar access.
- Select which iCloud and Google calendars to sync (if you have multiple iCloud calendars, you can sync them individually)
- Choose sync direction (one-way if you only want iCloud → Google or Google → iCloud, or bi-directional if you want changes to flow both ways)
- Configure privacy settings (optional)

Setup takes about 3–5 minutes total. You’ll immediately start seeing iCloud events in Google Calendar and vice versa.
How iCloud sync works
Apple doesn’t offer webhooks for calendar changes (Google does), so Hetk uses polling to stay in sync.
- Active hours (6 AM–11 PM): Hetk checks iCloud every 3–5 minutes
- Inactive hours (11 PM–6 AM): Hetk checks every 15 minutes to reduce load
- Google → iCloud: Google sends instant webhooks when events change. Hetk syncs them within 1–5 seconds
- iCloud → Google: iCloud changes are detected during the next polling cycle, typically 3–5 minutes
In practice, iCloud → Google sync takes a few minutes, while Google → iCloud is nearly instant. This asymmetry is due to Apple’s CalDAV protocol design.
Privacy controls
You can configure each sync relationship independently:
- Mark as Private — event title is replaced with “Busy”, description and attendees are completely removed
- Show As — override free/busy status so the event shows as Busy, Free, or its original status
- Identity Transform — replace the organizer email with your Google Calendar email address (useful if you share your calendar with others)
What about the app-specific password?
Apple doesn’t support OAuth for calendar access. Instead, you generate an app-specific password in your Apple ID settings. This password:
- Only grants access to iCloud services (calendar, contacts, mail). Can’t access Notes, Photos, or other iCloud apps
- Can’t be used to sign in to your Apple account. Only works with calendar and email
- Can’t make purchases or change account settings. Even if someone gets it, they can’t buy anything or alter your account
- Can be revoked anytime from appleid.apple.com. One click to delete it
- Is unique to Hetk. Each app-specific password is different, so if one is compromised, only that app is affected
This is actually more secure than your main Apple ID password, which grants full access to your entire account.
Option 2: Add Google account to iOS Calendar app
If you just want to see your Google events on your iPhone, you can add your Google account directly to the iOS Calendar app:
- Go to Settings > Apps > Calendar > Calendar Accounts > Add Account > Google
- Sign in with your Google account (you’ll be prompted to allow access to your calendars)
- Enable Calendars in the account settings
- Wait for the calendars to sync (usually takes a few seconds to a minute)
This shows Google Calendar events in the iOS Calendar app alongside your iCloud calendars. You can view everything in one place on your iPhone.
Important limitation: This is not sync. Events you create in iOS Calendar (which stores them in iCloud) don’t appear in Google Calendar. And you can’t set privacy controls. It’s a one-way view only—useful for seeing your Google events on your iPhone, but it doesn’t keep your calendars in sync.
Option 3: Subscribe to iCloud calendar in Google
If you want a quick, no-setup way to see iCloud events in Google Calendar:
- In iCloud Calendar (icloud.com), click the share icon next to a calendar
- Check Public Calendar and copy the URL

- In Google Calendar, click + > From URL and paste it
This creates a read-only subscription that refreshes every 12–24 hours. You can see iCloud events in Google Calendar but can’t edit them. If you delete an event in Google Calendar, it stays in iCloud. It’s not real sync, just a read-only view.
The catch: Your calendar must be set to Public, which means anyone with the URL can view it. If you have private events, consider using Hetk for better privacy controls.
Comparison
| Hetk | iOS Google account | ICS subscription | |
|---|---|---|---|
| iCloud → Google | Yes (polling, 3–5 min) | No | Yes (read-only, 12–24h delay) |
| Google → iCloud | Yes (real-time) | No | No |
| Bi-directional | Yes | No | No |
| Privacy controls | Yes | No | No |
| Edit from either side | Yes | No | No |
Summary
If you need actual sync between iCloud and Google Calendar (events flowing both ways with privacy controls), Hetk is the only option that handles this. The Personal plan at $15/year covers both calendars, with a 21-day free trial.
For a quick read-only view of Google events on your iPhone, adding the Google account to iOS settings is the simplest approach.
Troubleshooting
App-specific password not working
Problem: You’ve generated an app-specific password and entered it in Hetk, but you get an error like “Invalid credentials” or “Authentication failed.”
Solutions:
- Verify 2FA is enabled: Apple requires two-factor authentication on your account before you can create app-specific passwords. Check that 2FA is active at appleid.apple.com
- Double-check the password: Paste it carefully. It should be 16 characters with hyphens. Any typo causes authentication to fail
- Generate a new password: If the first one doesn’t work, delete it from appleid.apple.com and create a fresh one
- Check account lockout: If you’ve failed authentication too many times, Apple may have temporarily locked your account. Wait 15 minutes and try again
- Verify the password is recent: Older app-specific passwords sometimes have issues. Generate a new one and try again
iCloud 2FA blocking Hetk
Problem: You see a message like “Your account requires additional authentication” even with an app-specific password.
Solution: This usually means your account is in a restricted state (possibly due to a login from a new location or device). Sign in to icloud.com directly on your iPhone or computer. Apple will prompt you to verify your identity. After you verify, try Hetk again. The account restriction should be lifted.
CalDAV polling delays between iCloud and Google
Problem: You’ve created an event in iCloud and it’s taking 10–15 minutes to appear in Google Calendar, much longer than the advertised 3–5 minutes.
Causes and fixes:
- High server load: During peak hours, Hetk’s polling cycle may extend beyond 5 minutes. This is temporary and usually resolves within an hour
- Large calendar: If your iCloud calendar has thousands of events, each polling cycle takes longer. Consider archiving old events to speed up sync
- Slow iCloud response: Apple’s CalDAV servers sometimes respond slowly, especially if you’re connecting from outside your home network. This is on Apple’s side and can’t be fixed by Hetk
- Check Hetk’s sync status: Open Hetk and look at the sync relationship’s “Last sync” timestamp. If it’s recent, the delay is likely from Apple’s CalDAV service
If delays persist beyond 15 minutes, contact Hetk support with your calendar details.
Frequently asked questions
Why does iCloud sync take longer than Google sync?
iCloud uses the CalDAV protocol, which doesn’t support webhooks. Hetk has to poll your iCloud calendar every 3–5 minutes to check for changes. Google Calendar sends instant webhooks to Hetk when events change. Google → iCloud sync is nearly instant (1–5 seconds), while iCloud → Google sync takes 3–5 minutes on average. This asymmetry is due to Apple’s architecture.
Is the app-specific password safe?
Yes. An app-specific password can only access calendar and mail services, nothing else. If someone gets your app-specific password, they can read your calendar and send emails, but they can’t change your password, make purchases, or access Notes, Photos, or other iCloud services. You can revoke it instantly from appleid.apple.com if you ever suspect it’s been compromised.
Can I sync multiple iCloud calendars?
Yes. You can set up separate sync relationships for each calendar pair. For example, sync your Personal iCloud calendar to your Work Google Calendar with privacy controls, while syncing your Family iCloud calendar to your Personal Google Calendar without privacy controls. Each sync relationship is configured independently.
What happens if I stop using Hetk?
If you cancel your Hetk subscription or disconnect an account, sync stops immediately. Events already synced will stay in both calendars (Hetk doesn’t delete them). If you reconnect later, Hetk will start syncing again from where it left off. Your app-specific password for iCloud remains valid until you revoke it from appleid.apple.com, and you can reuse it with other apps if needed.