The CalDAV integration allows you to connect your WebDAV calendar to Home Assistant as one of these entity types:

  • A calendar entity which can be used to trigger automations based on the the start or end of an event using criteria such as the event name or description.
  • A todo entity which tracks the number of active items on the to-do list.

The WebDAV entities are updated roughly every 15 minutes.


To add the CalDAV integration to your Home Assistant instance, use this My button:

During the configuraiton flow you will be asked for the CalDAV server and credentials for it. An example CalDAV URL is

This integration was tested against iCloud Calendar, Nextcloud, Owncloud, Baikal. Any integration complying with the RFC4791 should work.

Manual configuration

You may also manually add a WebDAV calendar in Home Assistant by adding the following section to your configuration.yaml file. This method does not support to-do lists.

Calendar Event Automations

Individual Calendar Events can power automations such as:

  • Turn on a light at the start of the event named Front Yard Light
  • Send a notification 5 minutes before the start of any event
  • Stop the media player 30 minutes after the end of the event named Exercise.

See Calendar Automations for an overview, and read more about Calendar Trigger Variables for the available information you can use in a condition or action such as the event summary, description, location and more.

Calendar Entity Attributes

The calendar entity has additional attributes related to a single next upcoming event.

Using the entity state and attributes is more error prone and less flexible than using Calendar Automations. The calendar entity itself may only track a single upcoming active event and can’t handle multiple events with the same start time, or overlapping events.

  • offset_reached: If set in the event title and parsed out will be on/off once the offset in the title in minutes is reached. So the title Very important meeting !! -10 would trigger this attribute to be on 10 minutes before the event starts. This should be in the format of HH:MM or MM. This attribute is not available when configured from the UI.
  • all_day: True/False if this is an all day event. Will be False if there is no event found.
  • message: The event title with the search values extracted. So in the above example for offset_reached the message would be set to Very important meeting
  • description: The event description.
  • location: The event Location.
  • start_time: Start time of event.
  • end_time: End time of event.

To-do Entity

The todo entity is the number of incomplete items on the to-do list. See the todo integration documentation for details and available services that can be used in automations.