When you create a Contact and add the contact's birthday and/or anniversary a recurring event is added to your calendar. This feature cannot be disabled.
To remove the calendar named Birthday from Outlook.com or Office 365 mailboxes, see Remove the Holiday or Birthday calendar from Outlook.com or Office365
If you don't want the events added to your calendar, don't enter dates in the birthday and anniversary fields. Put the dates in the Notes field or a user defined field. Or delete the event from your calendar. Note that if you do this, Outlook may recreate it at some point.
However, if you import a contact list or sync with a handheld device, these events are not created in the calendar. In order to have them added you need to either edit the contact's name (clicking the Full Name button and saving the contacts is sufficient) or edit the Birthday and Anniversary fields to trigger an update. See the Tools below for utilities that can trigger the update.
See Removing Birthdays and Anniversaries for an easy way to remove the dates from Contacts and the events from the Calendar. There is also a VBA sample there to remove the events from the calendar as soon as the Contact creates it.
Reminders for Birthdays
When you create a new contact and specify a birth date, Microsoft Outlook automatically creates a recurring annual event in the Calendar folder for contact's birthday, but it doesn't set a reminder unless you have Outlook set to add a reminder to all new appointments (and in that case, it uses the default reminder time, usually 15 minutes).
If you want a longer reminder period, you will need to change the reminders on each birthday or anniversary or use VBA to set the reminders.
Dim WithEvents mcolCalItems As Items
Private Sub Application_Startup()
Dim objNS As NameSpace
Set objNS = Application.GetNamespace("MAPI")
Set mcolCalItems = objNS.GetDefaultFolder(olFolderCalendar).Items
Set objNS = Nothing
End Sub
Private Sub mcolCalItems_ItemAdd(ByVal Item As Object)
' #### USER OPTIONS ####
' remind XX days before birthdays
intDays = 7
If Item.Class = olAppointment And _
InStr(Item.Subject, "Birthday") > 0 Or InStr(Item.Subject, "Anniversary") > 0 Then
With Item
.ReminderSet = True
.ReminderMinutesBeforeStart = 24 * 60 * intDays
.Save
End With
End If
End Sub
For help using the VBA Editor, see How to use Outlook's VBA Editor
Add Birthdays and Anniversaries to calendar
When you import Contacts (or sync with a smartphone) the birthdays are not added to the calendar. You have two choices: a macro or an add-in. The add-ins offer more features (and can offer a high return on investment) if you sync a lot, but for one time use, a macro is quick and effective.
This macro uses the Contact folder you are looking in. If you prefer to use the folder picker, change the Set MyFolder line to Set myFolder = Session.PickFolder
Sub AddBirthdaysAnniversaries()
Dim myFolder As MAPIFolder
' To use the Contacts folder you are in
Set myFolder = Application.ActiveExplorer.CurrentFolder
For i = myFolder.Items.Count To 1 Step -1
If myFolder.Items(i).Class = 40 Then
' If you want to see that it's working, uncomment this line
' myFolder.Items(i).Display
' Copy the correct birthday and anniversary to a variable
mybirthday = myFolder.Items(i).Birthday
myanniversary = myFolder.Items(i).Anniversary
' Set today as the birthday & anniversary
myFolder.Items(i).Birthday = Now
myFolder.Items(i).Anniversary = Now
' Replace 'today' with the correct birthday & anniversary
myFolder.Items(i).Birthday = mybirthday
myFolder.Items(i).Anniversary = myanniversary
' Save and close
myFolder.Items(i).Save
myFolder.Items(i).Close 0
End If
'Repeat with next contact
Next i
End Sub
Convert Imported Birthdates
This macro will convert imported birthdays to recurring events.
Sub ConvertBDayRecur()
Dim objOL As Outlook.Application
Dim objItems As Outlook.Items
Dim objFolder As Outlook.MAPIFolder
Dim appItem As Object 'Outlook.AppointmentItem
Dim pattern As Outlook.RecurrencePattern
Set objOL = Outlook.Application
Set objFolder = objOL.ActiveExplorer.CurrentFolder
Set objItems = objFolder.Items
On Error Resume Next
For Each appItem In objItems
If InStr(1, appItem.Subject, "'s Birthday") > 0 And appItem.Categories = "Birthday" Then
With appItem
'make recurring
Set pattern = appItem.GetRecurrencePattern
pattern.RecurrenceType = olRecursYearly
pattern.PatternStartDate = appItem.Start
pattern.NoEndDate = True
appItem.Save
End With
End If
Next
Set obj = Nothing
Set objItems = Nothing
Set objFolder = Nothing
Set objOL = Nothing
End Sub
Tools
Use CustomDays to display a person's age on their birthday or year on anniversaries. The display can be changed individually using placeholders. You can also use this tool to delete birthday entries that are not associated with a contact. Automatically send a birthday email, or completely prevent the entry of birthdays in the calendar. Also available separately as CustomBirthday and CustomAnniversary. (site is in German but utilities will work in English Outlook) |

Thanks for the macro. Worked perfectly.
When adding in birthdays, do you need the year they were born in for there to be a reminder each year or can you just put there month/date in with the current year?
Hi everyone! Diana, I just stumbled across your site and it's INCREDIBLE! There is not another site I've found as robust, interactive and actually USEFUL to the degree yours is. THANK YOU!
I have a question, which I suspect might require a macro. I'm not overly skilled, so forgive me if this is a simple fix...
I would like the Outlook "birthday" calendar (which is working for contacts who have birthdays in their contact data), to show name AND also Company & Title. So instead of John Smith's Birthday, I'd like to see "John Smith - Manager - XYZ Company's Birthday).
Can anyone help? Thanks!
The problem is that the calendar is read-only - you can't edit it, so a macro won't work. The only (and bad) solution is to put that information in the contact's name field. Sorry.
Thank you!
I would like for outlook calendar to display a number via count like "Dave is 62 today" or "Dave and Mary' 37th Anniversary"
This is one way: https://www.slipstick.com/developer/code-samplesa/add-persons-age-birthday-event/
I want to add the birthdays of my team and have a reminder or some sort of notification sent out to everyone to notify them that it's someone's birthday...how do I do this?
See https://www.slipstick.com/developer/send-email-outlook-reminders-fires/ for one method.
is there someone I can hire to make the add-in for me?
We don't do addins and I'm not sure if anyone on this list is taking small projects - [post2post id="11049"]
few questions about the above solution:
- will it only change the default reminder of Birthday appointments? Other recurring appointments will remain as is?
- is it possible to create this as an "add-in" or plug-in that can be a packaged code that can be set to multiple users?
- trying to deploy Outlook to a many users and have the Birthday and Anniversary reminders automatically set for 1 week reminder
Is the above possible?
Yes, as written, it applies only to birthday and anniversaries. It could be compiled into an addin and deployed.
does this solution work with Outlook 2016? O365? Could I ask you to send me an e-mail? I would like to find out if I can find a developer to create this plugin for me.
is it possible to hire someone to create this addin for me?
We're no longer compiling addins - not sure if any of the developers on [post2post id="11049"] would be able to do it for you.
I have a personal address book associated with the corporate calendar. So everyone see my kids birthdays. I would like to associated that my personal address book with a personal calendar. is that possible? if so how?
You can create a personal calendar in your mailbox but will need to move the personal appointments to it (or open the personal calendar then create the appointment in it). Or you can set personal appointments to Private - then only people with permission to view private appointments can see them.