If your Home Assistant setup has many calendar entities — for example, a separate calendar for each family member, or different calendars per project — the card header’s toggle list can quickly become cluttered. Virtual calendars solve this by letting you group multiple real calendar entities under a single named entry. When a user toggles the virtual calendar on or off in the header, all of its member calendars are shown or hidden together. Events from all grouped entities are aggregated and displayed with the virtual calendar’s shared color and icon, giving your view a clean, organized appearance.
Configuration
Virtual calendars are defined as a list under the virtual_calendars key. Each entry represents one group.
A unique internal identifier for this virtual calendar. This ID is used when referencing the virtual calendar in event_styles or day_styles match rules. It must be unique across all virtual calendar definitions.
The display name shown in the card header’s calendar toggle list.
virtual_calendars[].entities
A list of real Home Assistant calendar entity IDs to include in this group. Events from all listed entities are combined and treated as belonging to this virtual calendar.
virtual_calendars[].color
A hex color string applied to all events from this virtual calendar. Individual event colors from the source entities are replaced by this shared color.
An MDI icon name (e.g. mdi:account-group) displayed next to the virtual calendar’s name in the header toggle.
Each id must be unique. If two virtual calendar entries share the same id, the card will raise a validation error and may not render correctly. Choose IDs that are descriptive and won’t conflict, such as family, work, or sports_league.
How Virtual Calendars Appear in the Card
Virtual calendars replace their member entities in the card header’s toggle list — you see the virtual calendar’s name and icon instead of the individual entity IDs. Toggling the virtual calendar on or off controls all of its member entities at once.
Event chips on the calendar display the virtual calendar’s color rather than the original entity color, and any event_styles or day_styles rules that reference the virtual calendar’s id will match events from all its member entities.
Using Virtual Calendars with Event Styles
You can target a virtual calendar in event_styles match rules by using its id as you would a normal entity ID in the calendar match field.
event_styles:
- match:
calendar: family
style:
font_color: '#ffffff'
Visual Editor Support
You can create and manage virtual calendars directly in the card’s visual configuration editor without writing YAML. The editor provides fields for name, entity selection, color, and icon for each group.
Example
This configuration creates two virtual calendars: one for family members and one for work-related calendars.
virtual_calendars:
- id: family
name: Family
entities:
- calendar.mom
- calendar.dad
- calendar.kids_school
color: '#4CAF50'
icon: mdi:account-group
- id: work
name: Work
entities:
- calendar.meetings
- calendar.deadlines
color: '#1565C0'
icon: mdi:briefcase
With this configuration, the card header shows two toggles — Family and Work — instead of five separate calendar entity entries. Toggling “Family” off hides events from all three family calendars simultaneously.
Pair virtual calendars with combine_calendars: true if family members or colleagues share events across their individual calendars. Combined with virtual calendars, duplicate events will be merged and shown once under the shared group color.