Hey everyone! ![]()
A few months back I shared the Skylight Calendar Card β a beautiful family-friendly calendar card that mimics the look and feel of the physical Skylight Calendar. The response was amazing, thank you all!
But as people started using it with multiple calendars β personal, work, family, kidsβ sports β a recurring question kept coming up:
βCan I combine all my calendars into a single entity so I can treat them as one?β
The built-in calendar card already lets you display multiple calendars at once, which is great. But there was no way to create a real, unified calendar.* entity from multiple sources β something you could feed into automations, use as a single target for editing, or point a custom card at as if it were one calendar. Until now.
Introducing: Calendar Merge
Calendar Merge is a custom integration (installable via HACS) that creates a new, virtual calendar.* entity by merging events from any number of existing calendar entities.
What it does
True calendar merging Select any combination of your existing calendar.* entities and Calendar Merge produces a brand-new calendar.my_merged_calendar entity that behaves like any other calendar in HA β works in automations, the calendar card, the Skylight Calendar Card, anything.
Smart deduplication If the same event exists in more than one source calendar (common when you share a Google calendar with a family member who also has it connected), Calendar Merge collapses it into a single entry. It matches by UID first, then by title + start time as a fallback. When a duplicate is found, the event description records which calendars it came from β so the information isnβt lost.
Full edit support β edits go back to the original calendar This is the part Iβm most proud of. When you click an event in the merged calendar and hit Edit or Delete, Calendar Merge transparently proxies the change back to the correct source calendar(s). You donβt need to know or care which underlying calendar the event came from. It just works.
- Edit a non-duplicate β change goes to the one source that owns it
- Edit a duplicate β change propagates to all source calendars that contain it, with our annotation stripped so the original isnβt polluted
- Create a new event β goes to your configured default calendar
Multiple independent merged calendars Youβre not limited to one. Create a Work calendar that merges calendar.google_work + calendar.outlook, and a separate Family calendar that merges calendar.google_family + calendar.school_holidays + calendar.birthdays. Each is its own independent entity.
Config UI + YAML After installation through HACS, set it up via Settings β Integrations with a proper multi-select entity picker, or define everything in configuration.yaml if you prefer. An options flow lets you edit sources or rename the calendar any time without restarting HA.
Pairs perfectly with Skylight Calendar Card
If youβre using the Skylight Calendar Card, just point it at your merged calendar entity and you get a single, beautiful, editable family view β no matter how many underlying calendar sources are feeding it.
type: custom:skylight-calendar-card
title: Family Calendar
entities:
- calendar.family_merged
Known limitations
- Source calendar must support writes for edit/delete to work. Google Calendar via the native HA integration is currently read-only for edits/deletes (HA limitation, not ours) β Calendar Merge will surface a clear error rather than failing silently.
- Recurrence edits (
This event only,This and future,All) are passed through faithfully to the source calendar. - Create requires a default calendar to be configured β if none is set, HA shows a descriptive error telling you where to set one.
Would love to hear your feedback, bug reports, and ideas. If itβs useful, a
on the repo goes a long way!