Home Celebrations

Birthdays and work anniversaries, without the spreadsheet

Morgenruf posts them in a channel on the day, or on the last working day before it, from dates people add themselves or HR imports once.

Add to Slack installs Morgenruf on the free hosted instance CloudDrove runs. Self-hosting is the same MIT code.

#celebrations, on a Friday
Morgenruf APP
🎂 Tomorrow is @Priya's birthday!
Off for the weekend, so let's celebrate early. 🎈
🎉 1
Morgenruf APP
🎉 Today is @Tom's 3-year work anniversary!
Thanks for three great years, Tom. 🙌
🎉 1

Morgenruf Celebrations is a free, open-source (MIT) Slack birthday and work anniversary bot. It posts birthdays and work anniversaries in a channel you choose, on the last working day before any weekend or company holiday, from a member profile that stores day and month only. It runs on a free hosted instance or on your own servers, alongside async standups, coffee chats and kudos.

Last reviewed September 26, 2026

How it works

A post in the channel, on the day

Pick a channel, a timezone and a time. Each working morning, Morgenruf posts whoever has a birthday or a work anniversary, and adds a 🎉 so the rest of the team can pile on.

  • Birthdays and work anniversaries, each on or off
  • One post per kind per day: two birthdays are one birthday double
  • Anniversaries count the years; under a year is skipped
  • Its own timezone and post time, 09:00 unless you change it
  • Around your working days and your company holiday list

Messages are short and the same for everyone. Names are mentions, and there are no pronouns, because the profile does not store them. Three or more birthdays on one day are listed together, with "Happy birthday to all of you". A 29 February birthday is celebrated on 28 February in other years.

#celebrations, on a Tuesday
Morgenruf APP
🎂 Today is a birthday double: @Priya and @Tom!
Wishing you both a lovely day. 💛
🎉 1
Morgenruf APP
🎉 Today is @Tom's first work anniversary! 🥳
One year already. Thanks for everything, Tom.
🎉 1
Thu working day Fri posts here Sat day off Sun day off Mon company holiday Tue working day a birthday on Saturday, Sunday or the Monday holiday is posted on Friday
A celebration on a day off is posted on the last working day before it, so the team sees it on a day they are at work.

Working days and company holidays

A birthday on a Saturday posted on the Saturday is a birthday nobody sees. So whoever runs Celebrations sets the working days (Monday to Friday by default, Sunday to Thursday, or any other week) and keeps a list of company holidays, typed in or imported as date,name. Morgenruf does not ship a holiday calendar of its own: your list is the only source, so it matches the days your company actually takes off.

A celebration on a day off is posted on the last working day before it, with wording that says so:

  • Saturday, from Friday: "Tomorrow is..."
  • Sunday, from Friday: "On Sunday it's..."
  • A Monday holiday, from Friday: "On Monday it's..."
  • 25 December, when 24 to 26 December are all holidays: posted on 23 December, "On 25 December it's..."

The timezone is its own setting, not borrowed from a standup. The people who run standups and the people who run celebrations are often different, and a company celebrates on one clock even when its standup teams span several.

Where the dates come from: the member profile

Slack has no birthday field, and a start date only on some Enterprise Grid plans. So Morgenruf keeps a short member profile of its own: birthday, start date, role, location and "ask me about". It is part of the core rather than a Celebrations setting, so the features planned next, intros and onboarding buddies, can read it too.

  • People add their own from the Your profile section of the Morgenruf App Home in Slack, with /morgenruf profile, or on My profile in the dashboard. All three open the same form.
  • HR imports the rest. A workspace admin uploads a CSV with email,birthday,start_date from the HR tool's export, sees which rows matched before anything is saved, and can edit anyone's profile from Members.
  • The bot asks, once, as shown below.
Asking for dates

Asking for dates, once

Nobody has to chase a spreadsheet. When Celebrations is switched on, everyone with no dates on file gets one DM, and one tap either opens the profile form or opts them out.

  • The first DM goes to each person once, not on every run
  • Ask for dates, on the Celebrations and Members pages, shows the count and the message before it sends
  • At most once per person every 30 days
  • Joining the celebrations channel with no dates asks too
Direct message
Morgenruf APP
👋 Hi Priya! Your team celebrates birthdays and work anniversaries in #celebrations.

Add yours so nobody misses it. Only day and month are kept.
Add my datesSkip me

The Slack windows on this page are rebuilt in markup rather than screenshotted, so no real workspace's messages are shown.

What is kept, and for how long

  • Day and month only. No birth year is ever stored, from the form, the dashboard or a CSV. No message needs an age.
  • One-click opt out. "Don't celebrate me publicly" in the profile, or "Skip me" on the DM. The dates stay; nothing is posted.
  • People can clear their own dates at any time.
  • Gone when someone leaves. Nobody who has left, and no deactivated member, is ever posted, and their profile is deleted 30 days after they leave the workspace. Uninstalling removes everything.

What is stored, and who can see it, is set out on the privacy page.

HR can run it without being an admin

A workspace admin turns Celebrations on and can hand the Celebrations grant to someone in HR from Members, the same way coffee chats or kudos can have their own owner. That person looks after the channel, the timezone, the working days, the holiday list and asking for dates, without getting the rest of the workspace.

What it does not do

Donut has done celebrations for longer, and the Donut comparison says where it still wins. This first version leaves out:

  • Weekly or monthly roundups
  • GIFs and images
  • Custom message text
  • Mentioning the person's manager
  • A live sync with an HR system: dates come from the profile form or a CSV export

The 🎉 needs the reactions:write scope. A workspace that installed before it existed still gets every post, and gets the reaction once an admin re-authorises Slack. The Slack app page lists every scope and why.

Questions

About celebrations

How do I get a birthday bot in Slack?

Add Morgenruf to Slack, open the Celebrations page in the dashboard, pick a channel and a timezone, save, invite @Morgenruf to that channel, and turn Celebrations on. Birthdays and work anniversaries then post there at 09:00, or whatever time you set.

Does it do work anniversaries as well as birthdays?

Yes. Anniversaries are counted from each person's start date, so the post says how many years it has been. A start date less than a year ago is skipped. Either kind can be switched off on its own.

What happens when a birthday falls on a weekend or a holiday?

It is posted on the last working day before it. With a Monday to Friday week, Friday posts "Tomorrow is..." for a Saturday and "On Sunday it's..." for a Sunday. The working days and the holiday list are yours to set, so a Sunday to Thursday week works too.

Does anyone have to give their birth year?

No. Only the day and month are stored. There is no field for a year, and a full date in an imported file has its year dropped before it is saved.

Can someone opt out?

Yes, with one checkbox: "Don't celebrate me publicly" in their profile, or "Skip me" on the message that asks for dates. Their dates stay on file and nothing is posted about them.

Can HR add everyone's dates at once?

Yes. A workspace admin can import a CSV of email, birthday and start date, exported from the HR tool. It shows matched, unmatched and invalid rows before anything is saved, and does not overwrite dates a person entered themselves unless the admin ticks overwrite.

Can we change the wording of the messages?

Not in this version. The text is fixed, short and the same for everyone, with names as mentions and no pronouns, since the profile does not store them.

Does it cost anything?

No. Celebrations is part of Morgenruf, which is free on the hosted instance at any team size, and MIT licensed if you would rather run it on your own servers.

Free for every seat, and that is the whole pricing page

Add to Slack puts Morgenruf on the free hosted instance CloudDrove runs, in about two minutes. Or self-host the same MIT code with Docker Compose or Helm and pay only for the server.