home-assistant/core · error · ConfigEntryNotReady
CalDAV client error
Error message
CalDAV client error
What it means
ConfigEntryNotReady raised when client.principal() raises a DAVError that is not an AuthorizationError/Timeout/ConnectionError — a generic caldav library failure such as a malformed DAV response, wrong URL path, or unsupported server reply. The message is the generic 'CalDAV client error'.
Source
Thrown at homeassistant/components/caldav/__init__.py:53
password=entry.data[CONF_PASSWORD],
ssl_verify_cert=entry.data[CONF_VERIFY_SSL],
timeout=TIMEOUT,
)
try:
await hass.async_add_executor_job(client.principal)
except AuthorizationError as err:
if err.reason == "Unauthorized":
raise ConfigEntryAuthFailed("Credentials error from CalDAV server") from err
# AuthorizationError can be raised if the url is incorrect or
# on some other unexpected server response.
_LOGGER.warning("Unexpected CalDAV server response: %s", err)
return False
except requests.Timeout as err:
raise ConfigEntryNotReady("Timeout connecting to CalDAV server") from err
except requests.ConnectionError as err:
raise ConfigEntryNotReady("Connection error from CalDAV server") from err
except DAVError as err:
raise ConfigEntryNotReady("CalDAV client error") from err
entry.runtime_data = client
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry."""
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
View on GitHub (pinned to 58a3fdb3ea)
Solutions
- Point the entry at the real CalDAV principal/calendar endpoint (e.g. .../remote.php/dav for Nextcloud, .../.well-known/caldav resolved URL)
- Enable debug logging for the caldav integration to see the underlying DAVError reason and the failing request
- Update/align the caldav library version with what the integration pins (check requirements)
- If the server is nonstandard, test the same URL with a desktop CalDAV client to confirm it speaks CalDAV
Defensive patterns
Strategy: try-catch
Try / catch
except DAVError as err:
raise ConfigEntryNotReady("CalDAV client error") from err Prevention
- Use the documented CalDAV endpoint URL for your server product
- Verify the URL works in a desktop CalDAV client first
- Keep the caldav library version aligned with the integration's pinned requirement
When it happens
Trigger: The server responds but the response cannot be parsed as expected CalDAV: pointing the URL at a non-CalDAV resource (e.g. the web UI or an HTML page), a server returning an unexpected multi-status body, or caldav library version incompatibilities with the server dialect.
Common situations: Using the base Nextcloud/Radicale web URL instead of the DAV endpoint, ISP-hosted calendars exposing odd DAV dialects, or caldav library updates changing response parsing expectations.
Related errors
- Credentials error from CalDAV server
- Timeout connecting to CalDAV server
- Connection error from CalDAV server
- config_entry_not_loaded
- entry_not_loaded
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/bc3c87d1a56fa880.
Report an issue: GitHub.