Skip to content
All docs

Guides

Discord Birthday Bot: Auto Messages & Birthday Role (Free)

Build a free Discord birthday bot with no code: members submit their birthday in a form, and a daily workflow posts wishes and gives a birthday role.

4 min read

A Discord birthday bot does two jobs: it lets members save their birthday, and it celebrates them on the right day. The celebration is a message in your general channel, an @mention, and a special birthday role that lasts 24 hours. In NoriaFlow you build both halves as visual workflows on your own Discord bot, no code required.

The design is simple: members submit their birthday through a form, the date is stored, and a daily scheduled workflow checks "whose birthday is it today?" and celebrates.

Workflow 1: let members submit their birthday

This workflow posts a button, opens a form when it is clicked, and saves the answer.

Step 1: post the birthday button

  1. Add a Manual Trigger and connect a Discord action set to Send Message.
  2. Write something like: Click the button below to register your birthday 🎂
  3. In Buttons & menus, add a button labelled Set my birthday with the custom ID set_birthday.
  4. Run the workflow once so the message appears in your #birthdays channel. This is a one-time setup post.

Step 2. Open a form on click

Add a Discord: Button Click trigger:

  • Button ID Filter: set_birthday
  • Open a form (modal) on click: build a form with two short fields:
    • Month (2 digits, e.g. 07) with custom ID month
    • Day (2 digits, e.g. 09) with custom ID day
  • Give the form a custom ID like birthday_form.

Asking for two digits matters: the daily workflow will look dates up as 07-09, so 7 and 07 would not match.

Step 3. Save the submission

Add a Discord: Modal Submitted trigger with the Modal ID filter birthday_form. Each form field arrives as its own variable, so the answers are {{field_month}} and {{field_day}}.

Connect a Remember Data node:

  • Operation: Append unique. Add to a list field
  • Record key: birthdays:{{field_month}}-{{field_day}}
  • Field: users
  • Value: {{user_id}}

This keeps one record per calendar date, each holding the list of members born that day. "Append unique" means clicking twice never adds someone twice.

Finish with a Discord action set to Reply to Slash Command (it answers any interaction, including form submissions) with Ephemeral enabled: Saved! We'll celebrate you on {{field_month}}/{{field_day}} 🎂. Only the member sees the confirmation.

One honest limitation: if someone re-submits a different date, they stay in the old date's list too. For most servers that is rare enough to fix by hand. If you want it airtight, also store each member's last submission in a per-user Remember Data record and remove them from the old list first.

Workflow 2: the daily birthday check

This is a separate workflow with a Schedule trigger. See scheduled automation for how cron schedules work.

  1. Schedule trigger: cron 0 9 * * *, timezone set to yours. It fires every day at 09:00.
  2. Date node: operation Format, Date {{timestamp}}, format MM-DD. The result {{result}} is today's date as 07-09.
  3. Remember Data: operation Get field, key birthdays:{{result}}, field users. This reads today's birthday list into {{value}}, and {{exists}} tells you whether anyone registered this date.
  4. If / Else: continue only when {{exists}} is true, so quiet days end silently.
  5. For Each / Repeat. Loop over {{value}}. Inside the loop, {{loop.item}} is one member's user ID.
  6. Inside the loop, add two Discord actions:
    • Send Message: Happy birthday <@{{loop.item}}>! 🎉 Everyone wish them a great day!
    • Add Role: pick your 🎂 Birthday role and set User to {{loop.item}}.

Want a fancier announcement? Turn the message into a card with these Discord embed examples.

Remove the birthday role the next day

Add a second branch from the same Schedule trigger:

  1. Date node: operation Subtract, amount 1, unit Days.
  2. A second Date node: operation Format, Date set to the previous node's result, format MM-DD.
  3. Remember Data: Get field on birthdays: + yesterday's date.
  4. For Each / Repeat over the list, with a Remove Role action inside.

The role now exists for exactly one day per member.

Tips that save you a support ticket

  • Role position: your bot's own role must sit above the birthday role in Server Settings, or Discord refuses the role change.
  • Test before waiting a day: temporarily swap the Schedule trigger for a Manual Trigger, or register your own birthday as today's date, then run it. The testing guide shows how to inspect each node's output.
  • Timezones: set the Schedule timezone explicitly. 0 9 * * * in UTC is not 9am in most places.
  • How storage works: Remember Data persists across runs. The same pattern powers leaderboards and giveaways. More in working with data.

Start celebrating birthdays automatically

Two workflows, zero code, and it runs on your bot with your name and avatar. Free during the beta.

Setup checks and next steps

  • Check the selected bot, server and destination channel. Role actions also require the bot role to sit above the role it changes.
  • Test with a dedicated channel or member before enabling this automation for everyone.
  • If a step fails, inspect its error and inputs rather than reconnecting every account.

See the extension setup guide for adding and reusing services, the node reference for parameters, and testing and debugging for execution diagnostics.

Frequently asked questions

How do I make a birthday bot for Discord?

Build two workflows in NoriaFlow: one lets members submit their birthday through a button that opens a form, storing the date with Remember Data. The second runs on a daily Schedule trigger, looks up who has a birthday today, posts a celebration message, and gives a birthday role. All without code.

Can members set their own birthday themselves?

Yes. You post a message with a 'Set my birthday' button. Clicking it opens a Discord form (modal) asking for the month and day. When they submit, the workflow saves their date, so nobody has to DM a mod or run a command.

Can the bot give a birthday role for the day?

Yes. The daily workflow adds a birthday role to each member celebrating today, and a second branch removes the role from yesterday's birthdays. The role appears for exactly one day.

Does the birthday message post automatically?

Yes. A Schedule trigger runs the workflow every morning at a time and timezone you choose, such as 9:00 in Europe/Paris. If nobody has a birthday that day, the workflow simply does nothing.

Is the NoriaFlow Discord birthday bot free?

Yes, every feature is free during the open beta. You connect your own Discord bot from the Developer Portal, so the birthday messages come from your bot's name and avatar, not a shared branded bot.