Home Assistant · Guides & Tutorials
Add your Apple iCloud Calendar to Home Assistant (2026 update)
Two ways to get iCloud calendars into Home Assistant: the Apple iCloud integration (calendars and Reminders since 2026.10) or CalDAV with an app password.
There are now two good ways to get your iCloud calendars into Home Assistant. Since Home Assistant 2026.10, the Apple iCloud integration adds a calendar entity for each of your iCloud calendars and a to-do list for each Reminders list. You sign in with your Apple Account and a two-factor code, and you get your Apple devices’ locations and battery levels too. The older route, the CalDAV integration pointed at https://caldav.icloud.com/, still works and only needs an app-specific password, so Home Assistant never sees your main Apple Account password. Choose Apple iCloud if you want Reminders and presence in one place. Choose CalDAV if you only want calendars and would rather keep your account password out of Home Assistant.
Which method should you use?
| Apple iCloud integration | CalDAV integration | |
|---|---|---|
| Calendars | One calendar entity per iCloud calendar | One calendar entity per calendar on the account (or a filtered list) |
| Create or edit events from Home Assistant | No. Home Assistant’s docs say the calendars are read-only | Not covered in Home Assistant’s CalDAV docs; plan on reading events only |
| Reminders | Yes. Each Reminders list becomes a to-do list you can add to, complete and delete from, and changes sync back to your Apple devices | Not for iCloud Reminders |
| Also adds | Device trackers and battery sensors for devices in Find My, plus actions like Play sound and Lost Mode | Nothing else |
| Sign-in | Your regular Apple Account password, plus a two-factor code | Your Apple Account email and an app-specific password |
| Set up in | The UI | The UI, or YAML in configuration.yaml |
| Update interval | Dynamic for device tracking; not stated for calendars | About every 15 minutes, per the docs |
Both are cloud-polling integrations: Home Assistant fetches from Apple’s servers, so they stop updating when your internet connection is down.
Method 1: The Apple iCloud integration
This integration has existed for years as a way to track iPhones and other Apple devices. The 2026.10 release added calendars and Reminders: “Each calendar shows up as a calendar entity, and each Reminders list as a to-do list, where you can add, complete, and remove items that sync right back to your Apple devices.”
- In Home Assistant, go to Settings > Devices & services and select Add integration.
- Search for and select Apple iCloud.
- Enter your Apple Account email and your regular password. Home Assistant’s docs say to use your normal password here, not an app-specific one.
- If Apple asks for two-factor authentication, enter the six-digit code shown on one of your trusted Apple devices or sent to your trusted phone number. If no code arrives, select Request a new verification code.
- Finish the setup. Your calendars appear as
calendar.entities and your Reminders lists astodo.entities.
Things to know before you rely on it:
- Calendars are read-only. Home Assistant shows the event in progress or the next one due, and you can trigger automations on events, but you can’t add or change events from Home Assistant.
- Advanced Data Protection hides Reminders. If you’ve turned on Apple’s Advanced Data Protection, your reminders are end-to-end encrypted. Home Assistant’s docs say it “cannot read them yet”, so those lists look shorter than on your iPhone.
- Reminders are flattened. Subtasks show up as regular items listed just below their parent, and reminder groups don’t appear as lists.
- Expect Apple sign-in alerts if something’s wrong. Home Assistant warns that a misconfigured integration can trigger repeated “someone has logged into your account” emails and notifications. If that happens, select Don’t Allow on your device and re-enter the credentials when Home Assistant prompts you.
- It also tracks your devices. The integration adds device trackers and battery sensors for devices registered with Find My. If you only wanted calendars, you can disable the entities you don’t need.
Method 2: CalDAV with an app-specific password
iCloud calendars speak CalDAV, a standard protocol. Home Assistant’s CalDAV integration lists iCloud Calendar among the systems it was tested against and uses https://caldav.icloud.com/ as its example server address.
Step 1: Create an app-specific password
Apple’s app-specific passwords let a non-Apple app sign in to iCloud without your main password. Your Apple Account needs two-factor authentication turned on. Per Apple’s instructions:
- Sign in at account.apple.com.
- In Sign-In and Security, select App-Specific Passwords.
- Select Generate an app-specific password and follow the steps. Give it a label you’ll recognize, such as “Home Assistant”.
- Copy the password. You’ll paste it into Home Assistant next.
Two Apple rules to remember: you can have up to 25 active app-specific passwords, and changing or resetting your main Apple Account password revokes all of them. If your calendars stop updating after a password change, generate a new one.
Step 2: Add CalDAV in the UI (recommended)
- Go to Settings > Devices & services, select Add integration, and choose CalDAV.
- For the URL, enter
https://caldav.icloud.com/. - For the username, enter your Apple Account email address.
- For the password, paste the app-specific password.
- Submit. Home Assistant finds your calendars and creates a calendar entity for each.
Or: add CalDAV in YAML
The YAML route lets you filter which calendars load, or build “custom calendars” that only contain matching events. Store the credentials in secrets.yaml, not in configuration.yaml:
# secrets.yaml
icloud_user: you@icloud.com
icloud_app_password: abcd-efgh-ijkl-mnop
# configuration.yaml
calendar:
- platform: caldav
url: https://caldav.icloud.com
username: !secret icloud_user
password: !secret icloud_app_password
calendars:
- Family
- Work
Restart Home Assistant after editing configuration.yaml. The list under calendars uses the calendar names as they appear in Apple’s Calendar app. Leave it out to load every calendar.
To pull only certain events into their own entity, use custom_calendars instead. This example creates a calendar entity that only contains events with “Trash” in them:
calendar:
- platform: caldav
url: https://caldav.icloud.com
username: !secret icloud_user
password: !secret icloud_app_password
custom_calendars:
- name: "Trash day"
calendar: "Family"
search: "Trash"
Two limits from Home Assistant’s docs: you can’t use calendars and custom_calendars together, and “all day events are not supported by default when configured using yaml”. Custom calendars do include all-day events. If all-day events matter to you, like birthdays or holidays, set CalDAV up in the UI instead. YAML setup doesn’t support to-do lists, either.
Use your calendar in an automation
Whichever method you choose, the result is a standard calendar entity, so calendar triggers work the same way. Home Assistant’s docs recommend automations with calendar triggers over reading the entity’s attributes, because the entity only tracks one upcoming event at a time.
This automation sends a phone notification 30 minutes before any event on the Family calendar starts. Replace the entity IDs with your own:
alias: Family calendar heads-up
triggers:
- trigger: calendar
event: start
entity_id: calendar.family
offset: "-0:30:0"
actions:
- action: notify.mobile_app_your_phone
data:
title: "Coming up in 30 minutes"
message: "{{ trigger.calendar_event.summary }}"
mode: queued
mode: queued makes sure two events starting at the same time both get a notification. Home Assistant’s calendar docs warn against mode: single for calendar triggers for this reason.
For a seasonal example, our Christmas lights automation uses a holiday calendar trigger to turn the lights on on Christmas morning.
Show it on a dashboard
Add a Calendar card to any dashboard and pick your iCloud calendar entities. It shows a list or month view of upcoming events. Our Sections view guide walks through adding cards.
Troubleshooting
CalDAV says the login failed. Make sure you’re using the app-specific password, not your Apple Account password, and the full Apple Account email as the username. If you changed your Apple Account password recently, Apple revoked your app-specific passwords; generate a new one.
A calendar is missing. For CalDAV in YAML, check that each name in your calendars list matches the calendar’s name in Apple’s Calendar app exactly, or remove the list to load every calendar.
Apple iCloud keeps asking for a code. Re-authenticate when Home Assistant prompts you. If it keeps failing, Home Assistant’s docs suggest deleting the integration’s stored configuration (usually /config/.storage/icloud) and setting it up again.
All-day events don’t show. If you used YAML for CalDAV, that’s expected. Use the UI setup instead.
How pages like this are made: How we work.
Sources
- Home Assistant docs: Apple iCloud integration
- Home Assistant 2026.10 release notes (Apple iCloud calendars and Reminders)
- Home Assistant docs: CalDAV integration
- Home Assistant docs: Calendar integration and calendar triggers
- Home Assistant docs: Storing secrets
- Apple Support: Sign in to apps with your Apple Account using app-specific passwords


