Skip to main content
installation
guide
installation
guide
installation
guide
installation
guide
installation
guide
installation
guide
installation
guide
guide
installation
guide
installation
guide
installation
guide
installation
guide
installation
guide
installation
guide
installation

Celebrate Punk
Setup Guide

Birthday celebrations, work anniversaries, and admin-approved send-offs inside Slack. Five minutes to install. Bot runs itself after that.

Step 0 · Three things you need

Prerequisites

Before installing the Slack birthday bot, get these three things ready. Two minutes.

01

HR Punks workspace

An HR Punks account with admin access. Sign up free and Celebrate Punk is one click from the Apps catalog.

02

Slack workspace admin

Workspace admin (or owner) privileges in Slack. Required to approve the four OAuth scopes during install.

03

One Slack channel

A public channel for celebrations to post in. Most teams create #celebrations, but any existing channel works. The bot must be a member.

3 steps · 5 minutes · no code

Install Celebrate Punk for Slack

Three steps to get the Slack birthday bot running in your workspace. You do this once. After that, celebrations are automatic.

3 steps One-time setup No code
  1. Step 01 / 03 About 30 seconds

    Find Celebrate Punk in the App catalog

    Open Settings → Apps in your HR Punks dashboard. Find the Celebrate Punk tile and click Install.

    Admin access required. The Apps page lists every HR Punks add-on. Celebrate Punk is free for the first 30 days, no card.

    Open HR Punks Apps
    HR Punks Apps catalog with the Celebrate Punk tile selected and its Install button highlighted in lime green.
    Outcome

    You land on the Celebrate Punk app tile, ready to install.

  2. Step 02 / 03 Under a minute

    Authorize the four Slack scopes

    Slack shows its OAuth consent screen. Review the four permissions, then click Allow to connect your workspace.

    Four scopes total — chat:write, users:read, users:read.email, im:read. No message-history access. Workspace owner can revoke any time from Slack Settings → Apps.

    Slack OAuth consent screen for Celebrate Punk requesting four scopes: post messages, read user profiles, read user emails, and read replies to its own DMs.
    Outcome

    Slack redirects you back to the Celebrate Punk dashboard, connected.

  3. Step 03 / 03 30 seconds

    Pick your announcement channel

    Inside Slack open the Celebrate Punk App Home → Settings and pick the channel where birthdays and anniversaries should post.

    Optional but recommended. Skip it and the bot stays DM-only. The bot must be a member of any channel you pick. You can change it any time without reinstalling.

    Celebrate Punk first run inside Slack with the welcome banner and the announcement channel picker set to #celebrations.
    Outcome

    Bot is live. The next birthday or anniversary fires automatically.

You're set

Bot runs itself from here

  • Bot DMs the team 5 days before each birthday
  • Wishes pile up privately, bundle into one DM on the day
  • Per-user opt-out, admin can revoke anytime

One required setting

Pick your channel first

Celebrate Punk has fourteen settings across four tabs. Only one is required: the announcement channel. Everything else has sensible defaults.

Required

Select an announcement channel in General settings before anything else. Nothing posts and no wishes collect until a channel is set.

Settings → General

General

Announcement channel, public vs private mode, weekend handling, wish collection, opt-out policy, auto-collect, and the upcoming preview window.

What's inside · 10 settings

  • Announcement channel
  • Anniversary channel
  • Celebration mode
  • Weekend handling
  • Allow user opt-out
  • + 5 more below

14 settings · all defaults shown

Settings reference

Every Celebrate Punk setting with type, default, and tab. Settings persist per workspace. Defaults are tuned to ship value on day one.

Filter

Showing 14 of 14 settings

Announcement channelSlack channel Default: None (required)general

The Slack channel where birthday and farewell celebrations are posted. The bot must be a member of this channel. This is the only required setting — nothing fires until it’s set.

Anniversary channelSlack channel Default: Same as announcementgeneral

Optional override for anniversary posts. If not set, anniversaries go to the same channel as birthdays.

Celebration modeSelect Default: Public (channel)general

Public posts celebrations to the announcement channel for everyone to see. Private sends a DM only to the person being celebrated.

Public (channel)Private (DM)
Weekend handlingSelect Default: Celebrate Fridaygeneral

When a birthday falls on Saturday or Sunday, this controls when the celebration posts instead.

Celebrate FridayCelebrate MondayActual day
Allow user opt-outToggle Default: Ongeneral

When enabled, each user can opt out of public birthday and anniversary celebrations from the Celebrate Punk Home tab in Slack.

Auto-collect birthdaysToggle Default: Ongeneral

The bot DMs users who don’t have a birthday on file, asking them to add it. Runs automatically — no admin action needed.

Wish collectionToggle Default: Ongeneral

Before each birthday, the bot prompts teammates to write a personal wish. All wishes are compiled and delivered to the birthday person as a single DM on their day.

Wish reminder — days beforeNumber (1–30) Default: 5general

How many days before the birthday the bot starts sending wish-collection reminders.

Wish reminder scopeSelect Default: Everyonegeneral

Controls who receives the wish-collection reminder DM.

EveryoneDirect teammates onlyDon’t remind
Anniversaries enabledToggle Default: Onanniversaries

Master switch for work anniversary celebrations. When off, no anniversary posts are sent and the anniversary section is hidden from the Slack Home tab.

Milestone years onlyToggle Default: Offanniversaries

When on, only milestone years (e.g. 1, 3, 5, 10) trigger a celebration post. Non-milestone years are skipped.

Milestone yearsCheckbox group Default: 1, 3, 5, 10, 15, 20, 25anniversaries

Which years count as milestones. The UI offers seven preset years (1, 3, 5, 10, 15, 20, 25). Only applies when ‘Milestone years only’ is on.

Departure send-offsToggle Default: Offdepartures

When a team member’s status changes to inactive (via HR sync or manual update), a pending farewell is created. An admin must confirm before the farewell posts to the announcement channel. The farewell is never automatic — admin approval is always required.

Upcoming preview windowSelect Default: Next 2 weeksgeneral

Controls how far ahead the Slack Home tab’s upcoming list and the /celebratepunk upcoming command look. The dashboard has its own adjustable window.

Next weekNext 2 weeksNext 30 days

Home tab · slash commands · DMs

Inside Slack

The Slack birthday bot lives in your workspace. App Home for every user, five slash commands, private wish collection, and five data sources for birthdays and hire dates.

App Home · per user

A personal Home tab for every teammate

11 sections

Eleven sections covering your birthday, your hire date, wishes you sent, upcoming birthdays, opt-outs, and admin controls — all inside the Celebrate Punk app in Slack.

  • Your Birthday

    Shows your birthday if set, or a "Set My Birthday" button with a date picker if not.

  • Your Hire Date

    Shows your hire date if set, or a "Set My Hire Date" button. Only visible when anniversaries are enabled.

  • Opt-Out Toggles

    Toggle buttons to opt out of public birthday and/or anniversary celebrations. Only visible when the admin has enabled opt-outs.

  • Birthday Notifications

    Configure which upcoming birthdays you want to be notified about.

  • My Wishes

    Lists wishes you’ve sent to upcoming birthday people. Each wish has Edit and Delete buttons.

  • Upcoming Birthdays

    Lists upcoming birthdays with "Send Wish" buttons next to each person (when wish collection is enabled).

  • Recent Birthdays

    Birthdays from the past 7 days.

  • Upcoming Anniversaries

    Upcoming work anniversaries, filtered by milestone settings. Only shown when anniversaries are enabled.

  • Recent Anniversaries

    Work anniversaries from the past 7 days.

  • Commands

    Quick reference of all /celebratepunk slash commands.

  • Admin Controls

    Admins only

    Four admin buttons inside the Home tab: Change Channel, Settings (opens the settings modal in-Slack), Send Test Celebrations (private preview with 30-second cooldown), and Open Web Console (deep link to the dashboard).

Five commands · everyone

Slash commands

5 commands

Type / and Celebrate Punk responds in-channel. Five commands available to every teammate in your workspace.

CommandDescription
/celebratepunk todayToday’s birthdays and work anniversaries.
/celebratepunk upcomingBirthdays and anniversaries in the next 1–4 weeks (set by your Upcoming preview window).
/celebratepunk recentCelebrations from the past 7 days, with wish counts.
/celebratepunk anniversariesAnniversary-only view, filtered by your Milestones-only setting.
/celebratepunk helpQuick reference of all five commands.

5 days before · bundled on the day

Private birthday wish collection

Five days before each birthday, the bot DMs teammates asking for a personal wish. Up to 1,000 characters each. All wishes land as one private DM on the day.

1
Stage 01 / 03
Bot sends reminders

Five days before each birthday by default (1–30 configurable), the bot DMs teammates asking for a personal wish. Scope is everyone, direct teammates only, or off.

2
Stage 02 / 03
Teammates write wishes

Each teammate opens a modal, writes up to 1,000 characters, and submits. They can edit or delete their wish from the My Wishes section any time before the birthday.

3
Stage 03 / 03
Wishes delivered as one DM

On the birthday morning, every collected wish lands as a single private DM. The birthday person sees everything in one message, not a scroll of pings.

Five sources · mix and match

Where birthday and hire date data come from

Celebrate Punk pulls birthdays and hire dates from five sources. Personio integration, CSV upload, Slack self-service, auto-collect DMs, or manual entry — all interoperable.

Manual
Self-service in Slack

Each teammate sets their own birthday and hire date from the Celebrate Punk Home tab using "Set My Birthday" and "Set My Hire Date" buttons. Slack date picker.

Automatic
Auto-collect DMs

When on (default), the bot DMs users without a birthday on file every Monday at 11:00 UTC, asking them to add it. Once per user, opt-out friendly.

Manual
CSV upload

Bulk import via Settings → Users → Upload CSV. Eight columns: firstName, lastName, email, gender, birthday, hire_date, supervisor, team. Validation preview before commit.

Manual
Manual entry

Add a single teammate from Settings → Users → New User. Same fields as CSV. Useful for contractors and new hires before HR sync catches up.

Automatic
Personio sync

Automatic two-way sync from Personio HR platform. Birthdays and hire dates pulled during each sync cycle. Personio data locks fields for non-admins.

On the web · admin view

Dashboard

The web dashboard gives admins a bird's-eye view of celebrations, upcoming events, and team engagement.

Today

Shows users with birthdays and anniversaries today. Each entry includes wishes collected and the celebration status.

Slack channel preview: the Celebrate Punk bot posts Maya Patel’s birthday in #celebrations with a preview of twelve wishes the team submitted privately.

Upcoming

Lists upcoming birthdays grouped by date. Adjustable window: 7, 14, 30, or 60 days. Respects weekend handling: if birthdays are shifted to Friday or Monday, they appear on the shifted date.

Upcoming dashboard tab with a 30-day window timeline and three entries: Hiro Tanaka birthday on September 14, Theo Lindqvist birthday on September 18, Ana Reyes five-year anniversary on September 22.

Anniversaries

Lists upcoming work anniversaries with a "Milestones only" checkbox and adjustable window (30, 60, 90 days). Each entry shows the user’s name, join year, and milestone badge.

Slack channel preview: the Celebrate Punk bot posts Theo Lindqvist’s three-year work anniversary in #celebrations with a milestone badge.

Leaderboard (sidebar)

Side panel showing "Most celebrated", users who received the most wishes. Updates daily at 01:00 UTC. Not a tab. Always visible alongside the active tab.

Most Celebrated leaderboard listing the top four users by wishes received: Maya Patel with twelve, Theo Lindqvist with eight, Ana Reyes with six, Jules Okafor with five.

Ready when you are

Make some noise.

Free 30 days. Five-minute install. No code, no card. The Slack birthday bot your team will actually notice — without HR Slack bot fatigue.

Install Celebrate Punk

Frequently asked

Slack birthday bot FAQ

Messages come from a curated library and are picked deterministically — the same teammate won’t see the same message repeated within their last 3 occurrences. There’s no per-tenant customization by design; this keeps the brand voice consistent and stops celebrations from feeling robotic over time.

The dispatch cron runs every 15 minutes. Each workspace fires its celebrations at 10:00 AM in the workspace’s configured timezone. Weekend birthdays shift according to your Weekend Handling setting (Friday, Monday, or actual day).

Depends on the Weekend Handling setting. ‘Celebrate Friday’ (the default) shifts Saturday and Sunday birthdays to the preceding Friday. ‘Celebrate Monday’ shifts them to the following Monday. ‘Actual day’ posts on the real date — but most teams won’t see it until Monday. Anniversaries always post on the actual date.

Yes, if the admin has ‘Allow user opt-out’ enabled (on by default). Users opt out from the Celebrate Punk Home tab in Slack — per birthday, per anniversary, or both. If an admin later disables the policy, existing opt-outs can still flip back in — no permanent lockouts.

When Wish Collection is on, the bot DMs teammates before each birthday asking for a personal wish (up to 1,000 characters). The number of days before is configurable (default 5, range 1–30). Reminder scope can be everyone, direct teammates only, or off. On the birthday morning, every wish lands as a single private DM to the birthday person.

When enabled, departing teammates (status changed to inactive via HR sync or manual update) trigger a pending farewell. An admin must confirm before it posts — never automatic. Pending farewells expire 24 hours after detection if no admin acts. If the user re-activates between confirm and dispatch, the farewell is blocked. Departures default to off.

Four scopes: chat:write (post messages to channels the bot is added to), users:read (read the user list), users:read.email (read email addresses for matching), and im:read (read replies to its own DMs for wish collection). No channel history, no broad message read access. Workspace owners can revoke any time from Slack Settings → Apps.

Yes. Admins see a ‘Send Test Celebrations’ button in the Slack App Home under Admin Controls. This sends a preview DM to the admin showing what a real birthday and anniversary post would look like — nothing goes to any channel. A 30-second cooldown prevents rapid-fire testing.

The dashboard sidebar and the Slack Home tab both show a ‘Most celebrated’ panel — teammates who received the most wishes in the last 30 days. It updates daily at 01:00 UTC. Everyone always sees their own rank, even if off the top of the list.

Five sources, all interoperable: (1) Personio sync (automatic), (2) auto-collect DMs from the bot to users without a birthday on file, (3) self-service from the Slack Home tab via ‘Set My Birthday’, (4) CSV bulk upload from Settings → Users, (5) manual entry per user. Personio and CSV data is treated as source-of-truth and locks the field for non-admins.

User data (birthdays, hire dates, opt-outs) is preserved across reinstalls. Birthday and anniversary message history is also preserved to prevent duplicate celebrations. Only operational state (cron locks, sync logs, pending departures) is cleared on uninstall.

Yes. When you select a channel in settings, the system validates the bot is a member. If it isn’t, you’ll see an error asking you to invite the bot first. The same rule applies if you later change channels.