Skip to content

Repository files navigation

Anniversaries for Home Assistant

Anniversaries is a calendar-first Home Assistant integration for birthdays, weddings, memorials and other yearly or one-time dates. It creates a countdown sensor for each date, a native aggregate calendar and optional calendars per group.

Version 8 requires Home Assistant 2026.7 or newer. Existing version 7 and older entries are consolidated automatically into one integration with anniversary subentries. Existing sensor entity IDs and unique IDs are preserved.

Highlights

  • Configure every anniversary from the Home Assistant UI.
  • Use a fixed date, a date/input_datetime entity or a tracked template.
  • Choose birthday, wedding, memorial or custom as the anniversary type.
  • Organize dates into groups such as Family or Work; each group gets a calendar.
  • Choose how 29 February behaves in non-leap years: 28 February, 1 March or leap years only.
  • Show optional half-anniversary calendar events and attributes.
  • Create, edit and remove dates from Home Assistant's native calendar UI.
  • Export and restore the full collection as CSV or iCalendar text.
  • Repair an invalid dynamic date source directly from Home Assistant Repairs.
  • Download privacy-safe diagnostics: names, dates, entity IDs and templates are excluded.
  • Enable the disabled-by-default date sensor when an automation needs the next occurrence as a native date value.

Installation

HACS

  1. Open HACS and search for Anniversaries.
  2. Install the integration and restart Home Assistant.
  3. Go to Settings > Devices & services > Add integration and select Anniversaries.

Manual

  1. Download anniversaries.zip from the latest release.
  2. Create /config/custom_components/anniversaries if it does not exist.
  3. Extract the contents of the zip into that directory. manifest.json should end up at /config/custom_components/anniversaries/manifest.json.
  4. Restart Home Assistant and add the integration from Devices & services.

Managing dates

The integration has one top-level entry. Open it and use Add entry to add an anniversary. Each item can be reconfigured or removed independently.

Accepted fixed date formats are:

  • YYYY-MM-DD when the original year is known, for example 1988-04-12.
  • MM-DD when the year is unknown, for example 04-12.

A one-time date must include a year. A dynamic entity must be from the date or input_datetime domain. A template must render either of the accepted formats. The integration updates immediately when the source entity or template changes.

Legacy YAML remains accepted and is imported into the UI automatically:

anniversaries:
  sensors:
    - name: Shakespeare's Birthday
      date: "1564-04-23"
    - name: Unknown year
      date: "11-27"
      anniversary_type: wedding
      group: Family

UI configuration is recommended for new installations.

Entities and calendar events

Each anniversary creates a sensor whose state is the number of days until the next occurrence. With Count up enabled it instead reports the days since the most recent occurrence. The sensor uses Home Assistant's native d unit.

Useful attributes include date, next_date, weeks_remaining, years_at_anniversary, current_years, anniversary_type, group and, when enabled, half_anniversary_date and days_until_half_anniversary.

calendar.anniversaries expands every recurring date across the complete time range requested by Home Assistant. Events use stable UIDs, are all-day events and show the milestone year in the summary when the original year is known.

Calendar edits always apply to the complete anniversary series. A generated half-anniversary event cannot be edited separately.

Automations

Use Home Assistant's calendar trigger so notifications remain fully under your control:

automation:
  - alias: Anniversary reminder
    triggers:
      - trigger: calendar
        entity_id: calendar.anniversaries
        event: start
        offset: "-24:00:00"
    actions:
      - action: notify.mobile_app_phone
        data:
          title: Anniversary tomorrow
          message: "{{ trigger.calendar_event.summary }}"

Backup and transfer

Two response actions are available under Developer tools > Actions:

  • anniversaries.export returns content, format and count. Choose csv for a complete Anniversaries backup or ics for calendar portability.
  • anniversaries.import accepts exported content and its format. Matching stable IDs are updated; new IDs are created, so restoring the same export does not create duplicates.

Dynamic sources are exported as their currently resolved fixed date. This makes the export portable to another Home Assistant instance without requiring the same helper entities or templates.

Upgrade notes for version 8

  • Multiple legacy integration entries become subentries beneath one hub.
  • Existing registered sensor entity IDs remain linked during migration.
  • Group calendars and the optional next-occurrence date sensors are new entities; adjust their entity IDs if Home Assistant resolves a name conflict.
  • YAML keys unit_of_measurement, date_format and id_prefix remain accepted for migration but are ignored afterward.
  • A backup of Home Assistant before a major upgrade is always recommended.

Development and support

Every change is checked with Ruff, a Home Assistant 2026.7 test environment, Hassfest, HACS validation and a 95% coverage threshold. See QUALITY.md for the maintained quality checklist.

Report problems through GitHub Issues. Please include the integration diagnostics from Home Assistant, which are safe to share but may still be reviewed before posting.

About

Calendar-first birthday and anniversary helper for Home Assistant

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages