πŸ“… Calendar Merge β€” combine multiple calendar entities into one (HACS)

Hey everyone! :wave:

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.


:spiral_calendar: Introducing: Calendar Merge

GitHub: GitHub - superdingo101/ha-calendar-merge: A custom Home Assistant integration designed to merge multiple calendar entities into a single entity. Β· GitHub

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.


:sparkles: What it does

:twisted_rightwards_arrows: 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.

:broom: 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.

:pencil2: 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

:package: 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.

:gear: 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.


:link: 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

:hammer_and_wrench: 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 :star: on the repo goes a long way!

β†’ GitHub - superdingo101/ha-calendar-merge: A custom Home Assistant integration designed to merge multiple calendar entities into a single entity. Β· GitHub