Member Profile
A short profile each person keeps in Morgenruf: birthday, start date, role, location and what to ask them about.
Overview
Slack has no standard birthday field, start dates exist only on some Enterprise Grid plans, and custom profile fields differ from workspace to workspace. So Morgenruf keeps its own small profile for every member. It is part of the core rather than a module, so it is always there and cannot be switched off. Celebrations reads the dates from it.
The profile lives in its own table, separate from the member list that Morgenruf syncs from Slack, so the sync never overwrites what a person typed.
Fields
| Field | What it holds |
|---|---|
| Birthday | Day and month only. The year is never stored, from any source. 29 February is accepted, and is celebrated on 28 February in other years. |
| Started on | The full start date, year included, because work anniversaries count years. It can be up to a year in the future, so new hires can be entered before they start. |
| Role | Free text, up to 80 characters. For example Backend engineer. |
| Location | Free text, up to 80 characters. For example Berlin. |
| Ask me about | Free text, up to 200 characters. For example Rust, bouldering, sourdough. |
| Don't celebrate me publicly | A checkbox, off by default. Anyone with a date on file is celebrated unless they tick it. Ticking it keeps the dates and posts nothing. |
Every field is optional. A birthday needs both the month and the day, or neither.
Edit Your Profile
There are three ways in. All of them open the same form and go through the same validation.
App Home
Open Morgenruf in Slack and go to the Home tab. The Your profile section has an Edit button that opens the form. Until you add anything, the section reads "Add your birthday and start date so the team can celebrate with you." Once filled in it looks like this:
Your profile [ Edit ]
πΌ Backend engineer π 14 March ποΈ Joined Mar 2023 π Berlin
Ask me about: Rust, bouldering
slack app home
If an admin changed your profile last, the section says "Last changed by an admin. Edit it if anything is wrong." If you opted out, it says "You asked not to be celebrated publicly."
/morgenruf profile
Run it from any channel or DM to open the same form:
/morgenruf profile
slack
After you save in Slack, the form turns into a Saved summary of what is stored. The Home tab shows the change the next time you open it.
Dashboard: My profile
Every member can sign in to the dashboard, not only admins. My profile sits in the sidebar, above Sign out, and edits the same fields.
Clearing a date
You can remove your own dates at any time. In Slack, set the birthday month and day back to Not set, and tick Remove my start date (it appears once a start date is stored). In the dashboard, empty the fields and save.
The App Home is drawn by the standups module. In a workspace with standups switched off there is no Home tab, so use /morgenruf profile or the dashboard instead.
Admin Editing
A workspace admin can edit anyone's profile. On the Members page each person's card shows their profile and an Edit profile button, and the page shows how many people have dates on file. A profile an admin changed is marked as set by an admin, so the person can see it and correct it.
Editing other people's profiles and importing dates is for workspace admins only. Feature admins, including Celebrations admins, can edit only their own profile.
Importing Dates from a CSV
The quickest way to cover a whole company is an export from your HR tool. On the Members page, choose Import dates, then paste the CSV or choose a file.
email,birthday,start_date
priya@example.com,03-14,2023-03-01
tom@example.com,1990-07-04,2021-09-13
csv
- Header row required. It names the columns. Names are matched in any order and any case, and extra columns are ignored, so an export can be pasted as it comes. You need
emailplusbirthday,start_dateor both. birthdayisMM-DDor a fullYYYY-MM-DDdate. The year of a full date is used only to check the day exists, then dropped. It is never stored.start_dateisYYYY-MM-DD.- Matched by email against the Slack directory, so people the bot has never messaged are matched too. If Slack cannot be reached, it falls back to the members Morgenruf already knows.
- A blank cell means "leave this alone", never "clear it".
- The same email twice in one file makes the second row invalid.
- At most 5,000 rows and 1 MB per import. Split a larger file.
Preview before anything is written
The first step is always a preview. Nothing is saved until you have checked it and confirmed. Each row gets one of these outcomes:
| Outcome | Meaning |
|---|---|
| Will be saved | The row matches a member and changes their dates. |
| Already on file | The profile already holds these dates. |
| Kept, set by the member | The person entered their own profile, and overwrite is off. |
| No member with this email | Nobody active in the workspace has that address. |
| Invalid | The row itself is wrong, for example a date that does not exist. The reason is shown. |
Entries members made themselves
By default the import never touches a profile the person wrote themselves. The whole row is kept, including fields they left empty: filling those in would mark the profile as set by an admin, and the next import would then overwrite what they typed. To replace member entries anyway, tick Overwrite entries members made themselves before previewing.
Who Can See What
| Who | What they see |
|---|---|
| The member | Their own profile, in the App Home, the form and My profile. |
| Workspace admins | Every current member's profile, all fields, on the Members page. Hiding birthdays from the admins who imported them would protect nothing. |
| Celebrations admins | The next 30 days of birthdays and anniversaries on the Celebrations page, and how many people are missing dates. Not the full profiles. |
| Everyone else | No one else's profile in the dashboard. In Slack, only what a Celebrations post says: whose birthday or anniversary it is, and for an anniversary how many years. |
| MCP clients | The get_member_profiles tool returns current members' profiles, with birthdays as MM-DD, to anyone holding an MCP API key for the workspace. See MCP. |
Data Removal
- When someone leaves. When Morgenruf sees a person has left (they are deactivated as a member, or the six-hourly Slack sync no longer finds them), their profile is marked. A nightly job deletes profiles marked more than 30 days ago.
- When they come back. Reactivating someone within those 30 days clears the mark, so a Slack deactivate and reactivate loses nothing. An active person's profile is never deleted.
- Uninstalling Morgenruf removes every profile along with the rest of the workspace's data.
- At any time, anyone can clear their own dates, or tick Don't celebrate me publicly to keep them and post nothing.
- No birth year is stored anywhere, including from a CSV import.