Happy Birthday! Create a journey for birthdays

In this article, I’ll show you how to create a journey in Customer Insights for the birthday of contacts that can run for many, many years. Of course, we could create a dynamic segment that finds all contacts who have a birthday today. But then we have a problem in journeys: a contact can only run through a segment-based journey once. Fortunately, we can now use trigger-based journeys to send contacts through the same journey more often.

By the ways: Do you know what saw the light of day 6 years ago? You guessed right – our favourite tool Dynamics 365 Customer Insights Journey. Or as it was called back then: Dynamics 365 for Marketing! On the 6th february 2018 Microsoft announced the first public preview (Link). Be sure to watch the video in the article, it really brings back nostalgia.

Building a journey for a birthday

For the birthday journey in Customer Insights, we need a trigger, a Power Automate, an email and, of course, the journey itself. Whenever a contact has a birthday, they find a personalised email with congratulations in their inbox. Let’s start with the trigger.

Create triggers for Journey

First, I create a trigger. Here I use the code trigger (not the dataverse trigger), because we later insert this into the PowerAutomate. No further attributes are necessary, unless of course you want to add more data to the trigger. Otherwise, simply click Next, Next and Ready to use.

Create a trigger for the birthday journey

No further attributes are necessary, unless of course you want to add more data to the trigger. You can keep the standard as it is, just make sure the Data type is “contact”.

Otherwise, simply click Next, Next and Ready to use.

Create PowerAutomate to find contacts with a birthday

Next, I create a PowerAutomate. It searches for all contacts once a day, for which the trigger and thus the journey is then initiated. I use a Scheduled Cloud Flow for this, which should run daily at 10 am. Choose a suitable time here, as the email is then also sent at this time. Alternatively, a waiting period in the journey is of course also possible, but I prefer the variant in the flow itself.

Build a flow that searches for birthdays every day

In the first step, I search for all contacts who have a birthday today. In the List rows step, I enter the following filter:

birthdate eq formatDateTime(utcNow(), ‘MM-dd’)
Search for contacts who have a birthday

The trigger is activated in the next step. I can call the correct trigger up using an unbound action. In the action name, find the trigger under its technical name, which is made up of msdynmkt_ + nameOfTrigger+ _number.

We now need to define a few parameters in the unbound action:

  • msdynmkt_signalingestiontimestamp: Here I enter the current time, also again with utcNow()
  • msdynmkt_signaltimestamp: also add utcNow()
  • msdynmkt_signaluserauthid: Here I add the contact ID from the list rows action. This creates a for each loop, as several contacts can also have a birthday on this day
  • msdynmkt_profileid: The contact ID from the list rows action also belongs here
Trigger the trigger as an unbound action

Now is the best time to test PowerAutomate.

As you may have noticed, this is the first time I’ve tried out the new designer in PowerAutomate. And I like it! For example, it is much easier to define dynamic values or expressions. The pop-up no longer jumps around wildly.

Create journey and email for birthday

Now we just put everything together. The journey naturally starts with the trigger. Then the contact receives a birthday email with personalised congratulations.

Create the birthday journey in Customer Insights


With these simple steps, we can now create a nice birthday journey. The PowerAutomate searches for all contacts who have a birthday today and triggers the new trigger. This in turn is the starting point for the journey and sends an email. And the contact can go through the journey again every year and receive personalised congratulations.

This would not have been possible with Dynamics 365 for Marketing 6 years ago. Fortunately, Microsoft has brought us so many innovative possibilities in the last 6 years, and I’m sure the best years are yet to come. Happy Birthday, Dynamics 365 Customer Insights Journey!🎂🎉

***Please be aware: The content is accurate at the time of creation. It may be that Microsoft has made changes in the meantime.***

Check out the FAQ section of my blog as well: Short questions with quick answers! Go to FAQs

4 Responses

  1. Hey Pauline,
    thanks for your article but I’m just wondering what the added value is of designing this via a trigger. Why not simply create a dynamic segment based on contacts who have a birthday today (you can leave out the year in the segmentation) and a segment-based customer journey in which the contact can participate again (after 1 Day)? This way, the birthday contacts also receive an email and you don’t have to build a Power Automate 🙂
    Regards, Ferdinand

    1. Hi Ferdinand,
      as far as I know it is not possible for contacts to run multiple times through the same journey. But now that I think about it, you are suggesting to use the frequency “A repeating journey where all audience members repeat the journey every: 1 day” ? Actually I haven’t thought about it, but it is also a good solution without PowerAutomate. Thanks for that!

  2. Hey Pauline,
    I built basically the same process as you. I was wondering, if your filter “birthdate eq utcNow()” actually correctly applies for you. I just tested it and it does not work for me. That is because dates include the year.
    To combat that I listed all records and then compared the dates formated in an extra condition in the for each loop. I formated them like this:
    formatDateTime(utcNow(), ‘MM-dd’)
    However, with this approach, you need to mind that the default limit for the dataverse connector output is 5000 rows and increase it with the pagination setting of the step.

    1. Hi 🙂 thanks for the feedback.
      You’re right, I just retested it and my tests were wrong. I updated it in my post. Thanks for making me aware!

Leave a Reply

Your email address will not be published. Required fields are marked *

Sharing is caring

Stay informed

WordPress Cookie Notice by Real Cookie Banner