Big Birthday Email Problem


I want to send a birthday email to all contacts which… have their birthday on that date. I have read about this in other posts of this forum and watched some youtube videos about this.

But everything I tried failed.

I put all contacts in a segment and created a campaign with this segment at the top.

Then there is a condition for the “contact field value” of the datefield “birthday” with operator “date” and a value “anniversary”.

If yes it should send the birthday mail, then wait 364 days and go back to start the campaign.
If no it should go back to start within 1 day.

I have some contacts in my segment to test the campaign.
One with birthday at 08.02.2000
One with birthday at 09.02.2000
One with birthday at 10.02.2000 (so… theoretically anniversery date?)
One with birthday at 11.02.2000

Although one contact has birthday today, all contacts walk through the “no” way and get back to start of the campaign. I don’t understand why this happens!

And in a testcase with ~ 80.000 people, the system crashed when I tested this campaign.

So I tried another way.
Segment with all birthday people and a campaign with an email for the segement, but it also doesn’t work!

I tested “birthday equals today” which returns people whose birthday was yesterday???
I tested “birthday equals now” but it gets nobody (its ok, because of the year I think)
I tested “birtday equals anniversary” but… nobody goes into the segment.

How do I get the party started?

@media31 It looks like you used this video as a guide.

Perhaps what you should do is test with a smaller segment, as this is done at the beginning part of this video.

You should also execute this with the CLI command so you can see the results, as this would technically be cron triggered, and run silently in the background.

This is exactly the video that I have seen and which I have used for my campaign.
But it doesn’t work. The people always walk the “no” way. And nobody gets the birthday mail.

If I put an email in the “no” way section, the people get it. So to me it looks like the date don’t get the correct check. And put ALL people in the “no” way…

I have tested it with a small and a big segment.

When you try making a segment, could you try to look for “[Birthday Field] equals birthday”?
I think I read somewhere that the anniversary keyword is not exactly the same as the birthday keyword but I don’t remember the source.

For me it worked to segment people with the keyword “birthday”.


then you can test again to set up a campaign to send an email each time someone gets added to the birthday-segment. Make sure to allow contacts to go through the campaign more than once:


1 Like

Hi there, I created a segment with the filter Birthday equals anniversary. And then start a campaign from that segment, same as @smc_iris . Make sure that the custom field that you create for “Birthday” has the data type “date”.

Bildschirmfoto 2022-02-11 um 15.48.16

1 Like

I don’t get it.

The “Birthday” field (named “Geburtstag”) has the “Data Type = Date”.
My new Segment is like “Geburtstag equals birthday”.
And I have two contacts with Birthday (Geburtstag) = 2000-02-14

BUT… the segment still has no contacts??? :pensive:

@media31 Perhaps you should try something different here, as you are trying to do 2 things

  1. The workflow to send a birthday email
  2. The segment

I would perhaps focus on point 2 and use a Workflow to find all users with a birthday and add them to the segment. You should run the cron manually to update the segment - or change your cron to 1 min, for segments and campaings.

Once you have the users in the segment. Then focus on point 2.
If the segment cron does not run, or the campaign crons, then this will not add users to the segment.

So get this working first.
Hope this helps

We created a blogpost for this, but you cant find it trough google yet.
you might want to check this out:
It really goes STEP BY STEP trough the process.

The answer to your problem is in step 5. " 5. Create the segment"
I think.
You have to use the anniversary or birthday DATE smart fields.

Please let us know if we can improve this blogpost and if you managed to get this working.

1 Like

Hey @media31
When I tested the creation of the segment, I also ran into a problem where the segment didn’t update anymore. As I was testing on my local machine I restarted the docker container and everything updated again (without having to change something in the segment’s filter).

I’m not a backend expert so I don’t know what triggered the issue, but maybe you can try restarting the Container / VM, where mautic is hosted?

This is the reason why I have tried different things.
But nothing works.
I dont get any person with a birthday of “today” into a segment.

The cronjob is working perfectly for other segmentfilters. But not for my Birthday-Date Field.

I have tried different filters like:
“Geburtstag (date)” equals anniversary
“Geburtstag (date)” equals birthday
“Geburtstag (date)” equals today
“Geburtstag (date)” equals now
(In seperate segments not together!)

But the result was always:
0 people to segment although people had birthday today (minus x years).

I dont have access to the backend anyway.

This might be a long-shot but have you checked the time-zone settings in mautic and your computer?
I ran into problems trying to segment using the filters you described when I played around with the time-zone / locale settings.

After changing the settings you might want to clear the mautic cache and try again?

The timezone is exactly the same on my computer and in mautic.

Additionally in other segments and campaigns with date or time there is no issue… :pensive:

@media31 I have tested this on a new VPS server, and have zero issues.

Check your Date of birth field if this is available for segments?
Secondly, do you perhaps multiple date of birth fields, and perhaps you have the incorrect one? Just a thought. Ensure the Field is in the Group CORE.

My setting on the segment

The above settings work without issues.

If all else fails, perhaps you need to check the system

  • do a db migration
  • do some cleanups using the CLI.

Hope this helps.

Do you think it is needed to put the field in group core for the solution to work? Did you test it?

You are correc @joeyk the group does not matter, I have tested this.

Great. Thank you for testing.

In the end it really seemed to be a problem with our timezonesetting! :tired_face: - Thanks to everyone!

We have used the timezone setting “Europe/Berlin” because… this is the correct timezone for our server. But with this settings mautic puts people into the segment one day after their birthday.

Now I have tried to set the timezone setting to “UTC” and everything is fine - people with a birthday go into the segment on the correct date and the campaign works like it should.

But could this timezone change maybe destroy other campaigns that worked perfectly with the old settings? Up to now I have only tried it in a test system because of this fear.


Which Mautic version you’re using?

version 4.1.1

Any fix for this? Are birthday campaigns currently working with CET time zone?