# Daily birthday and work anniversary shoutouts in Slack from CharlieHR

> Every morning at 9am, post a warm, personalized shoutout in your celebrations channel for anyone with a birthday or work anniversary today, pulled straight from CharlieHR.

- Workflow type: agent
- Services: CharlieHR, Slack Bot
- Categories: HR & People, Operations
- Published: 2026-06-30

## What it does

- Checks your CharlieHR directory every morning and finds anyone whose birthday lands today.
- Also flags milestone work anniversaries today, like a 1, 2, 5, or 10 year mark since someone's start date.
- Writes a unique, warm shoutout for each person and posts it as its own message in your celebrations channel, with the person tagged.
- Stays quiet on days when nobody qualifies, so the channel never fills with empty no-news posts.

## What you'll need

- A CharlieHR account where you can generate API credentials (you need to be a Super Admin to create them).
- A Slack workspace and the channel you want the shoutouts to land in, for example #celebrations.
- A short note on your tone preferences, like emoji style, formality, or any inside jokes the bot should lean into.

## Prompt

Build me an agent workflow that posts warm, personalized birthday and work anniversary shoutouts to a Slack channel every morning, sourced from CharlieHR so HR doesn't have to maintain a separate list.

Trigger: cron, every day at 9:00am in our local timezone.

What the agent should do each run:

1. Walk the full CharlieHR team directory using List Team Members (paginate until done), then use Get Team Member for each person to pull their date of birth and start date. Skip anyone who is archived or no longer active.

2. Build today's celebration list. Match on month-and-day, not the full year. Include anyone whose date of birth falls on today's month and day. Also include anyone whose start date hits a full-year milestone today: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 years, and any further full-year mark beyond that. Do not include partial-year anniversaries like 6 months.

3. For each person on the list, draft a unique celebratory message. Never use a copy-paste template. Reference the specific milestone in plain English (for example, "celebrating 3 years at the company today" or "happy birthday"), tag the person, and keep the tone warm, short, and genuine. If both their birthday and a work anniversary land on the same day, combine them into one post for that person.

4. Post each shoutout as its own separate message in the configured Slack channel (default #celebrations) using the Slack Bot Send a Message action. One person per message, so reactions land on the right post.

5. If nobody qualifies today, do nothing. Do not post a "no celebrations today" message and do not send anything to Slack at all.

Inputs I want to be able to tweak without rebuilding: the Slack channel name, the run time, which weekdays it runs, and the set of anniversary milestones to celebrate. Default to every full year.

The agent's main job is writing quality. Each post should feel like a thoughtful human wrote it that morning, not boilerplate. Vary the openings, the emoji, and the phrasing across people.

## How to customize

- Change the time of day or the days of the week it runs, for example 8:30am weekdays only.
- Pick which channel the shoutouts post to, or split birthdays and anniversaries into two channels.
- Decide which anniversary milestones to celebrate, like every year, or only 1, 3, 5, and 10.
- Adjust the tone and length, from a single warm sentence to a longer note with a fun question for the team.

## FAQ

### Will this post a message on days when nobody has a birthday or anniversary?

No. If no one qualifies today, the workflow stays silent. Your celebrations channel only gets a message when there is something real to celebrate.

### How do I change which Slack channel it posts to?

Just tell the workflow which channel name to use, like #team-celebrations. You can also split birthdays into one channel and anniversaries into another if you prefer.

### Which work anniversaries does it celebrate?

By default it picks up full-year milestones based on each person's start date in CharlieHR, like 1 year, 2 years, 5 years, 10 years. You can narrow that down to only the milestones you care about.

### Are the messages templated or actually personalized?

Each post is written fresh for that person, referencing the specific milestone and tagging them. The goal is shoutouts that feel human, not the same copy-paste message every day.

### Does HR have to maintain a separate list of birthdays?

No. The bot reads dates straight from CharlieHR, so as long as profiles are up to date there, you have nothing extra to maintain.

Use this prompt in General Input: https://www.generalinput.com/prompts/daily-birthday-and-work-anniversary-shoutouts-in-slack-from-charliehr