Skip to content
This repository was archived by the owner on Jul 28, 2026. It is now read-only.
 
 

Repository files navigation

Birthdays

⚠️ 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.

What's new in 2.0 (beta)

  • 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 in configuration.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 or unique_id mentioned "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.

Installation

HACS (recommended)

  1. Go to integrations
  2. Press the dotted menu in the top right corner
  3. Choose custom repositories
  4. Add the URL to this repository
  5. Choose category Integration
  6. Click add

Manual

  1. Copy custom_components/birthdays into your HA config's custom_components directory.
  2. Restart Home Assistant.
  3. Go to Settings → Devices & services → Add integration and search for Birthdays.

Migrating from the legacy YAML-only version

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:

  1. Add the integration once via the UI (Settings → Devices & services).
  2. All entries from your YAML config are imported into storage, keeping their original entity_ids.
  3. You can now safely remove the birthdays: key from configuration.yaml — the integration no longer reads it after the initial import (leaving it in place is harmless too, it's simply not re-read).
  4. 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 a birthday. Open the Birthdays: Manage card and correct any entry that was classified wrong, or set it to deceased and 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.

Event fields

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

Services

  • birthdays.add_event
  • birthdays.update_event
  • birthdays.delete_event
  • birthdays.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.

Lovelace cards

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 beheren

Every card supports an event_types list to only show birthdays, anniversaries, deceased, or any combination — configurable from each card's visual editor.

Automation

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!"

About

Birthday integration for HomeAssistant

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages