⚠️ Beta. This is a fork that is being rebuilt from a YAML-only integration into a full config-entry integration with UI-managed events and bundled Lovelace cards. Only Beta versions are released while this rework is in progress — see CHANGELOG.md.
Track birthdays, anniversaries, and (optionally) deceased loved ones. Every event can be added, edited, deleted, imported and exported entirely from the Home Assistant interface, and the integration ships its own Lovelace cards.
- UI-managed, no more YAML required. Add the integration via
Settings → Devices & services → Add integration → Birthdays. Events are
stored in HA's storage, not
configuration.yaml. - Automatic one-time migration. If you already have a
birthdays:key inconfiguration.yaml, it is imported automatically the first time you add the integration, and your existing entity_ids are preserved (so existing dashboards/automations keep working). - Event types:
birthday,anniversary,deceased. Entries whose name orunique_idmentioned "trouwdag"/"jubileum"/"anniversary" in the old YAML are migrated as anniversaries automatically; everything else becomes a birthday. Check your entries after migration and fix any misclassified ones from the Birthdays: Manage card. - Deceased persons can be kept in the list with their
date_of_death, shown separately from the birthday countdown. - Import / export as CSV or JSON, from the interface.
- Three bundled Lovelace cards, each with a visual editor — see below.
- Go to integrations
- Press the dotted menu in the top right corner
- Choose custom repositories
- Add the URL to this repository
- Choose category
Integration - Click add
- Copy
custom_components/birthdaysinto your HA config'scustom_componentsdirectory. - Restart Home Assistant.
- Go to Settings → Devices & services → Add integration and search for Birthdays.
If you have an existing birthdays: section in configuration.yaml (including
split files loaded via !include_dir_merge_list), nothing needs to change
before upgrading. On first start after upgrading:
- Add the integration once via the UI (Settings → Devices & services).
- All entries from your YAML config are imported into storage, keeping their
original
entity_ids. - You can now safely remove the
birthdays:key fromconfiguration.yaml— the integration no longer reads it after the initial import (leaving it in place is harmless too, it's simply not re-read). - Because the legacy format has no explicit "this is an anniversary" field,
entries are heuristically classified: anything with "trouwdag", "jubileum"
or "anniversary" in its name/unique_id becomes an
anniversary, everything else becomes abirthday. Open the Birthdays: Manage card and correct any entry that was classified wrong, or set it todeceasedand fill in a date of death.
Every event still exposes a date_of_birth attribute regardless of its
event_type (even anniversaries) — this is intentional, so templates and
dashboards written against the old integration keep working unmodified.
| Field | Required | Notes |
|---|---|---|
name |
yes | |
date |
yes | Reference date (birth date, wedding date, ...) |
event_type |
no, default birthday |
birthday, anniversary or deceased |
date_of_death |
no | Only meaningful for deceased |
icon |
no | Defaults per event type (mdi:cake, mdi:ring, mdi:flower) |
attributes |
no | Freeform key/value pairs, exposed as extra entity attributes |
birthdays.add_eventbirthdays.update_eventbirthdays.delete_eventbirthdays.import_events(format: csv|json,mode: merge|replace)birthdays.export_events(format: csv|json, returns the content)
These are what the bundled cards call under the hood — you can also use them directly in automations/scripts.
The integration serves its cards itself; they're auto-registered as a
frontend resource. If your dashboard doesn't pick them up automatically,
add /birthdays_static/birthdays-cards.js as a Lovelace resource
(Settings → Dashboards → ⋮ → Resources, type: JavaScript module).
- Birthdays: Upcoming (
birthdays-upcoming-card) — list of events in the next N days. - Birthdays: Month overview (
birthdays-month-card) — month picker + table, the same layout as the original hand-built dashboard. - Birthdays: Manage (
birthdays-manage-card) — add/edit/delete events, plus import/export.
Add them via the dashboard UI card picker (search "Birthdays"), or in YAML:
- type: custom:birthdays-upcoming-card
title: Aankomende verjaardagen
days_ahead: 14
- type: custom:birthdays-month-card
title: Verjaardagen per maand
columns: 3
- type: custom:birthdays-manage-card
title: Verjaardagen beherenEvery card supports an event_types list to only show birthdays,
anniversaries, deceased, or any combination — configurable from each card's
visual editor.
All events are updated at midnight, and when an event occurs, an event is
sent on the HA bus (event type birthday) with name, age, event_type
and deceased. This is unchanged from the previous YAML-only version.
automation:
trigger:
platform: event
event_type: "birthday"
action:
service: notify.pushbullet
data_template:
title: "Birthday!"
message: "{{ trigger.event.data.name }} turns {{ trigger.event.data.age }} today!"